大家帮忙看看问题出在哪里了--在Delphi应用程序的菜单中实现Windows的Undo、Cut、Copy和Paste行为 ( 积分: 30 )

  • 主题发起人 主题发起人 晶凌
  • 开始时间 开始时间

晶凌

Unregistered / Unconfirmed
GUEST, unregistred user!
Function TForm1.ActiveHandle : Integer;
begin
result := 0;
if( Assigned(ActiveControl)) then
try
result := ActiveControl.Handle
except
end;
end;
Procedure TForm1.SetMenuStates( const Enabled : Boolean );
begin
CanUndo;
Cut1.Enabled := Enabled;
Copy1.Enabled := Enabled;
Paste1.Enabled := Enabled;
end;
procedure TForm1.Edit1Click(Sender: TObject);
begin
SetMenuStates( ActiveHandle <> 0 );
end;
procedure TForm1.Undo1Click(Sender: TObject);
begin
SendMessage( ActiveHandle, WM_UNDO, 0, 0 );
CanUndo;
end;
procedure TForm1.Cut1Click(Sender: TObject);
begin
SendMessage( ActiveHandle, WM_CUT, 0, 0 );
CanUndo;
end;
procedure TForm1.Copy1Click(Sender: TObject);
begin
SendMessage( ActiveHandle, WM_COPY, 0, 0 );
CanUndo;
end;
procedure TForm1.Paste1Click(Sender: TObject);
begin
SendMessage( ActiveHandle, WM_PASTE, 0, 0 );
CanUndo;
end;
procedure TForm1.CanUndo;
begin
Undo1.Enabled := Boolean(SendMessage( ActiveHandle, EM_CANUNDO, 0, 0 ));
end;
运行后提示说没有声明activehandle,canundo,setmenustates,
undeclared identifier 'activehandle'
undeclared identifier 'canundo'
和could not complie used unit 'Unite1.pas'
修改了半天也没弄好,多谢大家帮忙,呵呵。
 
你为什么不用ActionList?
 
private下面加了吗?

private
Function ActiveHandle : Integer;
Procedure SetMenuStates( const Enabled : Boolean );
procedure CanUndo;
 
谢谢smithcouple,我以前调试的时候再你说的地方加过,不过和你说的不太一样,我一会用你的方法再试试,不行的话再继续求助,给你20分,如果没有其他人回答的话剩下的10分也都给你了,毕竟你是第一个向我伸出援手,再次感谢,呵呵!
 
第一次用,弄错了,呵呵,说是积分不符,所以直接30分全发给你smithcouple,谢了,呵呵!
 
后退
顶部