Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Мастера DELPHI. Новости мира компонент, FAQ, статьи...


Информационный Канал Subscribe.Ru

Ежедневная рассылка сайта Мастера DELPHI

DELPHIMASTER.ru

Выпуск от 21.04.04 09:05

Лучшее из нашего FAQ   |x|
Доступ к иконкам
Всё перетянуто из CommCtrl.pas

uses CommCtrl;
var i, k:Integer;
XYold,  XY : Array[1..100] of TPoint;
CurPos:TPoint;

Сначала получаем Handle DeskTop'a:

function GetHandle: THandle;
var
 S: String;
begin
 Result := FindWindow('ProgMan', nil);
 Result := GetWindow(Result, GW_CHILD);
 Result := GetWindow(Result, GW_CHILD);
 SetLength(S, 40);
 GetClassName(Result, PChar(S), 39);
 if PChar(S) <> 'SysListView32' then Result := 0;
end;

Считаем количество иконок на столе:

...
i:=SendMessage(GetHandle,LVM_GETITEMCOUNT,0,0);
...

Получаем координаты иконок на столе. Как оказывается, это самое трудное.
Если посмотреть код GETITEMPOSITION в CommCtrl.pas, то его повтор в Delphi почему-то не работает. Т.е. он работает, но непонятно как:))
Поэтому делаем так:


function GetXY(hwndLV: HWND; i: Integer; var ppt:
TPoint): Bool;
var PointBuf : ^TPoint;
begin
try
PointBuf := VirtualAlloc(NIL,Sizeof(TPoint),
$8000000 or MEM_COMMIT, PAGE_READWRITE);
Result := Bool( SendMessage(hWndLV,
LVM_GETITEMPOSITION, i, Longint(PointBuf)));
if Result then begin
ppt.x := PointBuf^.x;
ppt.y := PointBuf^.y;
              end;
finally
VirtualFree(PointBuf,0,MEM_RELEASE);
end;
end;
...

Сохраняем координаты иконок в XYold:


for k:=1 to i do GetXY(GetHandle,k-1,XYold[k]);

Иконка с индексом 0 - всегда "Мой компьютер",
остальные - у кого как:))
...
А вот, как по таймеру двигать иконки туда-сюда, если
подвести к ним курсор:

procedure TForm1.Timer1Timer(Sender: TObject);
var k:Integer;
begin
GetCu rsorPos(CurPos);
for k:=1 to i do begin
G etXY(GetHandle,k-1,XY[k]);
if (CurPos.x>XY[k].x+4) and (CurPos.xand (CurPos.y>XY[k].y+4) and (CurPos.ythen begin
SendMessage(GetHandle,LVM_SETITEMPOSITION,k-1,MakeLong(XY[k].x+Random(64)-Random(64),
XY[k].y+Random(64)-Random(64)));
end;
end;
end;
...


И, наконец, возвращаем все иконки на место перед
завершением программы:

procedure TForm1.FormDestroy(Sender: TObject);
var k:Integer;
begin
for k:=1 to i do
SendMessage(GetHandle,LVM_SETITEMPOSITION,k-1,MakeLong(XYold[k].x,XYold[k].y));
end;

Может быть эти фрагменты кому-нибудь помогут:)))
А моя программка до сих пор валяется на
http://freesoft.kulichki.net/katalog/ufen/5003.html

Yurik Yura (copyr25@yahoo.com)

»»» Прислать свои комментарии

Обсуждается в конференциях   |x|
  • Использование SendMessage
    Здравствуйте! Пишу прогу, которая должна по нажатию горячей клавиши вставлять определённый текст в активное текстовое ...
  • Передача массивом Ole объекту
    Краткая суть вопроса. Как передавать массивы методам класса Ole объекта, интерфейс которого находится в переменной ...
  • Фильтрация загрузки фреймов
    Можно ли в WebBrowser запретить загрузку картинок gif формата - то есть даже не скачвать их (то же самое с текстом и ...
  • подавить реакцию Windows на CTRL+ALT+DEL (в XP-ке)
    Ну как типа сделать это, под 98/ме может и пашат способы с фака, на хп-ке пока не наблюдалось. Как говорится кто чем ...
  • Подключение к MySQL
    Какие способы подключения предподчительнее? Пробовал через DBExpress выдаёт ошибку "Не могу загрузить libmysql.dll" в ...
  • Еще раз по осещение в OPGL
    Есть сцена размерами 4,4,4 в ней шесть объектов по углам и в т (-2,0,0) и в (2,0,0). Включаю источники света, 2 штуки, ...
  • KOLToolbar's tboflat handle the height to a fix value?
    Hi,all I use 32x32 ImageList for KOLToolbar. I place the text at bottom, after add tboflat to Toolbar's options, the ...
У нас большой выбор статей   |x|
Кратко об истории и характеристиках стандартов MPEG
Статья будет интересна тем, кто интересуется методами и форматами сжатия аудиоданных.
Новинки книжного рынка   |x|
Программирование серверных приложений для Microsoft Windows 2000 (+CD)
В книге Дж. Рихтера исчерпывающе описаны функции новой операционной системы Microsoft — Windows 2000, позволяющие создавать высокопроизводительные и надежные серверные приложения. Менеджер управления службами, контроль производительности и системных событий, асинхронный ввод-вывод, система безопасности и защищенное взаимодействие приложений обеспечат надежную и эффективную работу ваших приложений в качестве служб операционной системы 24 часа в сутки 7 дней в неделю. Все главы содержат примеры, написанные на C++, демонстрирующие описываемые технологии. Вы можете использовать в своих приложениях фрагменты этих программ и готовые классы C++, исходные тексты которых содержатся на прилагаемом компакт-диске. Книга состоит из 12 глав, 2 приложений и предметного указателя. Прилагаемый к книге компакт-диск содержит программное обеспечение, примеры приложений, документацию и электронную версию книги.
Автор: Дж. Рихтер, Дж. Кларк
Другие сайты о DELPHI   |x|
"Хомяк" AOTD
Домашняя страница AOTD с собранием моих программ.

» Оценка сайта: 3
Опрос населения :)
Какой сайт по Delphi лучший?
»»» Королевство Дельфи
»»» Этот сайт
»»» Дельфи. Вокруг да около
»»» Другой
»»» Чем больше, тем лучше!
Для души

Хокку дня
Бушует морской простор!
Далеко, до острова Садо,
Стелется Млечный Путь.

Афоризмы
Надо согласиться с Вовенаргом: Если афоризм нуждается в пояснениях, значит, он неудачен....

Фраза дня
"Носорог плохо видит, но при таком весе это уже не его проблемы. " //Виктор Шендерович

Дурацкие законы (информация предоставлена сайтом kurilka.com)
В Коннектикуте (США) велосипедистам запрещено ездить со скоростью больше ста километров в час.
В городе Девон в Коннектикуте (США) запрещается ходить задом после заката солнца.

И на закуску коротенький анекдот
Если аборт - это убийство, то минет - людоедство!

Фотоприколы.
Начните день с хорошего настроения!
http://www.delphimaster.ru/cgi-bin/prikol.pl?id=73


На этом позвольте откланяться и пожелать вам удачного дня.
Искренне ваш, Алексей (merlin@delphimaster.ru)

Добро пожаловать на сайт -= Мастера DELPHI =- 


http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу


В избранное