Z
zhanggok
Unregistered / Unconfirmed
GUEST, unregistred user!
这是一本书上的代码
unit EditForm;
interface
uses
Windows, Messages, SysUtils, Variants, Classes,
Graphics, Controls, Forms,
Dialogs, StdCtrls, Menus;
type
TMainForm = class(TForm)
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
PopupMenu: TPopupMenu;
procedure FormCreate(Sender: TObject);
procedure UndoItemClick(Sender: TObject);
procedure CutItemClick(Sender: TObject);
procedure CopyItemClick(Sender: TObject);
procedure PasteItemClick(Sender: TObject);
procedure DelItemClick(Sender: TObject);
procedure AllItemClick(Sender: TObject);
procedure PopupMenuPopup(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
MainForm: TMainForm;
edit :tedit;
implementation
{$R *.dfm}
procedure TMainForm.FormCreate(Sender: TObject);
var
NewItem:TmenuItem;
begin
MainForm.Caption:='标签和菜';
label1.FocusControl:=Edit1; //使标签和控件相关联
label1.Caption:='服务器名(&S):';
label2.FocusControl:=Edit2;
label2.Caption:='用 户 名(&U):';
label3.FocusControl:=Edit3;
label3.Caption:=' 密 码:(&P)';
edit1.Text:='';
edit1.CharCase:=ecUpperCase; //使输入字符自动变大写
edit2.Text:='';
edit3.Text:='';
edit3.PasswordChar:='*'; //设置密码输入样式
//下面创建子菜单,同时关联处理事件
NewItem:=TmenuItem.Create(Self);
NewItem.Caption:='撤销';
popupmenu.Items.Insert(0,NewItem);
NewItem.OnClick := UndoItemClick;
NewItem:=TmenuItem.Create(Self);
NewItem.Caption:='-';
popupmenu.Items.Insert(1,NewItem);
NewItem:=TmenuItem.Create(Self);
NewItem.Caption:='剪切';
popupmenu.Items.Insert(2,NewItem);
NewItem.OnClick := CutItemClick;
NewItem:=TmenuItem.Create(Self);
NewItem.Caption:='复制';
popupmenu.Items.Insert(3,NewItem);
NewItem.OnClick := CopyItemClick;
NewItem:=TmenuItem.Create(Self);
NewItem.Caption:='粘贴';
popupmenu.Items.Insert(4,NewItem);
NewItem.OnClick :=PasteItemClick;;
NewItem:=TmenuItem.Create(Self);
NewItem.Caption:='删除';
popupmenu.Items.Insert(5,NewItem);//创建一项
NewItem.OnClick := DelItemClick; //关联click事
件
NewItem:=TmenuItem.Create(Self);
NewItem.Caption:='-';
popupmenu.Items.Insert(6,NewItem);
NewItem:=TmenuItem.Create(Self);
NewItem.Caption:='全选';
popupmenu.Items.Insert(7,NewItem);
NewItem.OnClick := AllItemClick;
end;
procedure TMainForm.UndoItemClick(Sender: TObject);
begin
with Sender as TMenuItem do
edit.Undo(); //取消上一次的输入
end;
procedure TMainForm.CopyItemClick(Sender: TObject);
begin
with Sender as TMenuItem do
edit.CopyToClipboard(); //拷贝到剪贴板
end;
procedure TMainForm.PasteItemClick(Sender:
TObject);
begin
with Sender as TMenuItem do
edit.PasteFromClipboard(); //从剪贴板上
粘贴
end;
procedure TMainForm.DelItemClick(Sender: TObject);
begin
with Sender as TMenuItem do
edit.ClearSelection(); //清除选择内容
end;
procedure TMainForm.AllItemClick(Sender: TObject);
begin
with Sender as TMenuItem do
edit.SelectAll(); //选择全部内容
end;
procedure TMainForm.CutItemClick(Sender: TObject);
begin
with Sender as TMenuItem do
edit.CutToClipboard(); //剪切到剪贴板
end;
procedure TMainForm.PopupMenuPopup(Sender:
TObject);
begin
//菜单弹出时,得到焦点所在地edit组件
if edit1.Focused=True then
edit:=edit1;
if edit2.Focused=True then
edit:=edit2;
if edit3.Focused=True then
edit:=edit3;
end;
end.
其中with Sender as TMenuItem do
edit.Undo();
代表什么意思我只知AS是强制转换undo()是取消修改如果不用WITH应如何写.为什么这样写当click菜单时可以取消修改,也就是它们之间是如何关联的.
unit EditForm;
interface
uses
Windows, Messages, SysUtils, Variants, Classes,
Graphics, Controls, Forms,
Dialogs, StdCtrls, Menus;
type
TMainForm = class(TForm)
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
PopupMenu: TPopupMenu;
procedure FormCreate(Sender: TObject);
procedure UndoItemClick(Sender: TObject);
procedure CutItemClick(Sender: TObject);
procedure CopyItemClick(Sender: TObject);
procedure PasteItemClick(Sender: TObject);
procedure DelItemClick(Sender: TObject);
procedure AllItemClick(Sender: TObject);
procedure PopupMenuPopup(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
MainForm: TMainForm;
edit :tedit;
implementation
{$R *.dfm}
procedure TMainForm.FormCreate(Sender: TObject);
var
NewItem:TmenuItem;
begin
MainForm.Caption:='标签和菜';
label1.FocusControl:=Edit1; //使标签和控件相关联
label1.Caption:='服务器名(&S):';
label2.FocusControl:=Edit2;
label2.Caption:='用 户 名(&U):';
label3.FocusControl:=Edit3;
label3.Caption:=' 密 码:(&P)';
edit1.Text:='';
edit1.CharCase:=ecUpperCase; //使输入字符自动变大写
edit2.Text:='';
edit3.Text:='';
edit3.PasswordChar:='*'; //设置密码输入样式
//下面创建子菜单,同时关联处理事件
NewItem:=TmenuItem.Create(Self);
NewItem.Caption:='撤销';
popupmenu.Items.Insert(0,NewItem);
NewItem.OnClick := UndoItemClick;
NewItem:=TmenuItem.Create(Self);
NewItem.Caption:='-';
popupmenu.Items.Insert(1,NewItem);
NewItem:=TmenuItem.Create(Self);
NewItem.Caption:='剪切';
popupmenu.Items.Insert(2,NewItem);
NewItem.OnClick := CutItemClick;
NewItem:=TmenuItem.Create(Self);
NewItem.Caption:='复制';
popupmenu.Items.Insert(3,NewItem);
NewItem.OnClick := CopyItemClick;
NewItem:=TmenuItem.Create(Self);
NewItem.Caption:='粘贴';
popupmenu.Items.Insert(4,NewItem);
NewItem.OnClick :=PasteItemClick;;
NewItem:=TmenuItem.Create(Self);
NewItem.Caption:='删除';
popupmenu.Items.Insert(5,NewItem);//创建一项
NewItem.OnClick := DelItemClick; //关联click事
件
NewItem:=TmenuItem.Create(Self);
NewItem.Caption:='-';
popupmenu.Items.Insert(6,NewItem);
NewItem:=TmenuItem.Create(Self);
NewItem.Caption:='全选';
popupmenu.Items.Insert(7,NewItem);
NewItem.OnClick := AllItemClick;
end;
procedure TMainForm.UndoItemClick(Sender: TObject);
begin
with Sender as TMenuItem do
edit.Undo(); //取消上一次的输入
end;
procedure TMainForm.CopyItemClick(Sender: TObject);
begin
with Sender as TMenuItem do
edit.CopyToClipboard(); //拷贝到剪贴板
end;
procedure TMainForm.PasteItemClick(Sender:
TObject);
begin
with Sender as TMenuItem do
edit.PasteFromClipboard(); //从剪贴板上
粘贴
end;
procedure TMainForm.DelItemClick(Sender: TObject);
begin
with Sender as TMenuItem do
edit.ClearSelection(); //清除选择内容
end;
procedure TMainForm.AllItemClick(Sender: TObject);
begin
with Sender as TMenuItem do
edit.SelectAll(); //选择全部内容
end;
procedure TMainForm.CutItemClick(Sender: TObject);
begin
with Sender as TMenuItem do
edit.CutToClipboard(); //剪切到剪贴板
end;
procedure TMainForm.PopupMenuPopup(Sender:
TObject);
begin
//菜单弹出时,得到焦点所在地edit组件
if edit1.Focused=True then
edit:=edit1;
if edit2.Focused=True then
edit:=edit2;
if edit3.Focused=True then
edit:=edit3;
end;
end.
其中with Sender as TMenuItem do
edit.Undo();
代表什么意思我只知AS是强制转换undo()是取消修改如果不用WITH应如何写.为什么这样写当click菜单时可以取消修改,也就是它们之间是如何关联的.