Скорее всего, проблема , а не та, о которой вы думаете.
Clipboard.HasFormat(CF_HDROP);
, вероятно, true
даже в вашей FormCreate
процедуре.Попробуйте это с
procedure TForm1.FormCreate(Sender: TObject);
begin
if Clipboard.HasFormat(CF_HDROP) then
ShowMessage('Yes, Rejbrand was right!');
end;
В остальной части моего ответа предполагается, что Paste1
- это TAction
, что и должно быть.Но, скорее всего, это пункт меню, не так ли?Хороший совет - начать использовать TActionList
и TAction
s.
Скорее всего, проблема в том, что действие еще не выполнено повторно.
Послевсе операторы SomeAction.Enabled := <something>
должны выполняться в событиях OnUpdate
соответствующих действий.Например,
procedure TForm1.ActionPasteExecute(Sender: TObject);
begin
RichEdit1.Paste;
end;
procedure TForm1.ActionPasteUpdate(Sender: TObject);
begin
ActionPaste.Enabled := Clipboard.HasFormat(CF_TEXT);
end;
Событие OnUpdate
выполняется точно , когда необходимо определить состояние действия , например , например, когда всплывающее меню содержитпункт меню с действием показан.