有两个窗体form1和form2,form1上有一个edit控件,双击该控件调出form2,在form2中的一个edit控件中输入文字然后回车,此时关闭form2并且输入的文字显示在form1的edit控件中。 如果仅仅是这么两个窗体而言,其实挺简单, 在form2的edit的TForm2.Edit1KeyPress事件中写
if key=#13 then
begin
form1.edit.text:=self.edit.text;
Self.close;
end;
就可以了吧。可是我要做的是,form2这样一个窗体会被好多个窗体调用,而不仅仅是一个form1窗体,所以在上面的事件中似乎我还得判断每个调用它的窗体的类名,分别为每个调用它的窗体写不同的代码。 但是这样做,它的通用性似乎又很差。不知道大家对于类似的问题时怎样解决的?给个思路也行啊。也不知说清楚了没,请大家多提意见。
if key=#13 then
begin
form1.edit.text:=self.edit.text;
Self.close;
end;
就可以了吧。可是我要做的是,form2这样一个窗体会被好多个窗体调用,而不仅仅是一个form1窗体,所以在上面的事件中似乎我还得判断每个调用它的窗体的类名,分别为每个调用它的窗体写不同的代码。 但是这样做,它的通用性似乎又很差。不知道大家对于类似的问题时怎样解决的?给个思路也行啊。也不知说清楚了没,请大家多提意见。
function GetMyText: String;
.....function GetMyText: String;
begin
Result := Edit1.Text;
end;然后每个窗体调用就行了
function GetAveCharSize(Canvas: TCanvas): TPoint;
var
I: Integer;
Buffer: array[0..51] of Char;
begin
for I := 0 to 25 do Buffer[I] := Chr(I + Ord('A'));
for I := 0 to 25 do Buffer[I + 26] := Chr(I + Ord('a'));
GetTextExtentPoint(Canvas.Handle, Buffer, 52, TSize(Result));
Result.X := Result.X div 52;
end;
function TForm1.myInputQuery(const ACaption, APrompt: string ): string;
var
Form: TForm;
Prompt: TLabel;
Edit: TEdit;
DialogUnits: TPoint;
ButtonTop, ButtonWidth, ButtonHeight: Integer;
begin
Result := '';
Form := TForm.Create(Application);
with Form do
try
Canvas.Font := Font;
DialogUnits := GetAveCharSize(Canvas);
BorderStyle := bsDialog;
Caption := ACaption;
ClientWidth := MulDiv(180, DialogUnits.X, 4);
ClientHeight := MulDiv(63, DialogUnits.Y, 8);
Position := poScreenCenter;
Prompt := TLabel.Create(Form);
with Prompt do
begin
Parent := Form;
AutoSize := True;
Left := MulDiv(8, DialogUnits.X, 4);
Top := MulDiv(8, DialogUnits.Y, 8);
Caption := APrompt;
end;
Edit := TEdit.Create(Form);
with Edit do
begin
Parent := Form;
Left := Prompt.Left;
Top := MulDiv(19, DialogUnits.Y, 8);
Width := MulDiv(164, DialogUnits.X, 4);
MaxLength := 255;
SelectAll;
end;
ButtonTop := MulDiv(41, DialogUnits.Y, 8);
ButtonWidth := MulDiv(50, DialogUnits.X, 4);
ButtonHeight := MulDiv(14, DialogUnits.Y, 8);
with TButton.Create(Form) do
begin
Parent := Form;
Caption := '确定';
ModalResult := mrOk;
Default := True;
SetBounds(MulDiv(38, DialogUnits.X, 4), ButtonTop, ButtonWidth,
ButtonHeight);
end;
with TButton.Create(Form) do
begin
Parent := Form;
Caption := '取消';
ModalResult := mrCancel;
Cancel := True;
SetBounds(MulDiv(92, DialogUnits.X, 4), ButtonTop, ButtonWidth,
ButtonHeight);
end;
if ShowModal = mrOk then
begin Result := Edit.Text;
end;
finally
Form.Free;
end;end;
使用的时候就:procedure TForm1.Edit1Click(Sender: TObject);
begin
edit1.Text := myInputQuery('请输入值','姓名' );
end;
to cg1120(代码最优化-§新年祝福你,好运伴着你§):能详细点吗? 谢谢