比如我在MainForm中的一个按钮消息响应中写如下代码:(功能是打开编辑Item的对话框TFrm_EditItem,TFrm_EditItem打开后需要初始化它的Edit控件,那么MainForm如何传参数给它?
var
frmEditItem : TFrm_EditItem;
begin
frmEditItem := TFrm_EditItem.Create(Application);
frmEditItem.ShowModal();
if frmEditItem.Button1被点击 then //如何在这里判断Button1被点击?
begin
do something;
end; frmEditItem.Destroy();//这里要不要destroy?
end;谢谢~~
var
frmEditItem : TFrm_EditItem;
begin
frmEditItem := TFrm_EditItem.Create(Application);
frmEditItem.ShowModal();
if frmEditItem.Button1被点击 then //如何在这里判断Button1被点击?
begin
do something;
end; frmEditItem.Destroy();//这里要不要destroy?
end;谢谢~~
frmEditItem := TFrm_EditItem.Create(Application);
frmEditItem.Edit1.Text:='你的初始字符串';2、将Button1的ModalResult设置为mrOk
if frmEditItemModalResult=mrOK then
begin
do something;
end;
3、用frmEditItem.Free;
beign
do Something;
end;
frmEditItem.Free;//用free,系统自动调用destroy
在frmEditItem中的Button1最后加上ModalResult = mrOk...
在frmEditItem中的Button1最后加上ModalResult = mrOk...
---------
这句话什么意思?
---------
这句话什么意思?在TFrmEditItem中的Button1(OK按钮)Click事件中写ModalResult := mrOK;
Procedure TMainForm.Button1Click;
Begin
Application.CreateForm(TFrm_EditItem, Frm_EditItem);
Frm_EditItem.Param1:= ''; //关键在于在 TFrm_EditItem 的Public 里定义Param1变量.
Frm_EditItem.Param2:= '';
IF TFrm_EditItem.ShowModal = mrOK Then begin
//处理修改结果.
End;
TFrm_EditItem.Free;
end;Type
TFrm_EditItem = class(Form)
Private
Public
Param1: String;
Param2: String;
end;在 TFrm_EditItem 的关闭按钮处写代码 ModalResult := mrCancel
在 TFrm_EditItem 的确定(修改)按钮处写 ModalResult := mrOk;
但不能有設置焦點之類的事件
IF TFrm_EditItem.ShowModal = mrOK Then begin
//处理修改结果.
End;
你可以设置按钮的ModalResult属性为mrOK或mrAbort什么的。
这样,如果窗体被关闭,就可以得到用户按的是什么按钮关闭窗体的。
如果窗体没有被关闭,那么即使被click也不会返回ModalResult.
所以你可以在设置按钮“确定”的ModalResult为mrOK,其Click下写:if Edit1.text='' then
showmessage('Error')
else
close;
就行了。
if Edit1.text='' then
showmessage('Error')
else
close;不行,当edit1为空,showmessage之后,TFrm_EditItem还是关闭了……置edit控件焦点让用户重新输入这个效果没出来……
在subForm的类TsubForm中加入procedure MyShowModal(要传递的参数)
procedure MyShowModal(要传递的参数)
begin
// do sth
ShowModal;
end;
设置按钮“确定”的ModalResult为mrNone,其Click下写:
if Edit1.text='' then
showmessage('Error')
else
begin
close;
Modalresult:=mrOK;
end;
mainform中调用写:
if tform2.Create(self).ShowModal = mrOK then
showmessage('OK');
或者
form2:=tform2.Create(self);
//do something
if form2.showmodal = mrOK then
showmessage('OK');
就可以了。
在form的public中写上:
constructor MyCreate(Owner: TComponent; Argument1,Argument2: integer);
在form中定义两个变量:
Arg1,Arg2:integer;然后写
constructor TForm1.MyCreate(Owner: TComponent; Argument1,
Argument2: integer);
begin
inherited Create(Owner); Arg1:=Argument1;
Arg2:=Argument2;end;这种方法可以实现简单的窗体重用。