![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
ClipBoard [D5, Win95/98, WinME, NT4, Win2k, WinXP]
Yurko © (2002-07-10 03:57:00)Как отловить изменение ClipBoard другой програмой?
(чтобы изменять Enabled кнопки "Вставить", например)
Yurko (2002-07-14 12:15:00) [1]Спасибо, McSimm!
McSimm (2002-07-10 10:06:00) [2]Есть техника, позволяющая отслеживать изменения Clipboard. Для этого надо
1. Зарегистрировать свое окно в цепочке ClipboardChain
2. Выполнять необходимые действия по передаче сообщений по цепочке
3. Удалить свое окно из цепочки.
Пример :
procedure TForm1.FormCreate(Sender: TObject);
begin
// Регистрируемся и запоминаем соседа
Hn := SetClipboardViewer(Handle)
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
// Удаляем себя из списка
ChangeClipboardChain(Handle, Hn);
end;
procedure TForm1.ChangeCBChain(var Message: TWMChangeCBChain);
begin
// Обрабатываем событие изменения очереди
if Message.Remove = Hn then Hn := Message.Next
else
if Hn <> 0 then // передаем по цепочке
SendMessage(Hn, Message.Msg, Message.Remove, Message.Next);
Message.Result := 0
end;
procedure TForm1.DrawClipboard(var Message: TWMDrawClipboard);
begin
//Обрабатываем изменения в Clipboard
Button1.Enabled := IsClipboardFormatAvailable(CF_TEXT);
if Hn <> 0 then // передаем по цепочке
SendMessage(Hn, Message.Msg, 0, 0)
end;
TTCustomDelphiMaster (2002-07-10 09:13:00) [3]Обычно команда Вставить нахится в mainmenu и popupmenu и настраивается по событиям onclick и onpopup.
В программах где кнопка Вставить находится на форме, она всегда активна. Вставка же производится только когда формат данных в буфере обмена соответствует необходимому формату.
MBo (2002-07-10 06:03:00) [4]setclipboardviewer и т.д.