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

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


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

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

DELPHIMASTER.ru

Выпуск от 15.06.04 09:17

Лучшее из нашего 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|
У нас большой выбор статей   |x|
Мир Borland Kylix. Расширение возможностей Kylix приложения: смешиваем Object Pascal и C++
В этой статье рассматривается совместное использование Kylix и C/C++ (gcc). Описывается демонстрационная библиотека, позволяющая использовать в Kylix приложении функции Qt library, не определенные в CLXDisplay API (элемент управления QDial). Также приводятся примеры экспорта функций из объектных файлов C/C++ и создания разделяемой библиотеки (shared objects file) в Borland Kylix.
Новинки книжного рынка   |x|
Delphi 7: Для профессионалов
Несмотря на солидную толщину книга не является справочником, напротив, - это, скорее, учебник, призванный сделать работу программиста в среде Delphi действительно эффективной и профессиональной. В этой книге автор попытался практически полностью исключить справочный материал, сконцентрировавшись на технологиях эффективного использования Delphi. Приведено более 300 примеров.
Как сказал один из подписчиков групп новостей, «книги Кэнту — это по сути „delphi.filtered“, только больше и лучше».
Книга предназначена для программистов, разработчиков и всех, серьезно интересующихся программированием в среде Delphi.

Автор: Кэнту М.
Опрос населения :)
Образование программиста?
»»» Высшее
»»» Незаконченное высшее
»»» Среднее специальное
»»» Среднее
Для души

Хокку дня
Сентябрьских яблок
Тонкая кислинка,
И губ твоих...

Афоризмы
Если мне хочется прочитать роман, я пишу его (Бенджамин Дизраэли)

Фраза дня
- Господа, третий день не хочется работать. Что бы это значило?
- Сегодня среда!

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

И на закуску коротенький анекдот
- Привет дорогая, мой козел наконец разрешил мне пользоваться своим компьютером, даже завел почтовый ящик. Так, что пиши мне по адресу: жена собака жизни точка нет.

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


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

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


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


В избранное