سلام
میخوام یه پنجره داشته باشم با سه دکمه که هر کدوم رو فشار بدیم پنجره بسته بشه.ولی با کد زیر فقط دکمه ای که نتیجه MrOk براش تعریف کردم پنجره رو می بنده.دو دکمه دیگه رو باید دو بار فشار بدم(نمی دونم چون Default هست یا چون نتیجه MrOk براش تعریف کردم؟)
function ErrorMsg(ACaption, APrompt: string):TModalResult;
var
Form: TForm;
MyLabel: TLabel;
begin
Form := TForm.Create(Application);
with Form do
try
BorderStyle := bsDialog;
Caption := ' '+ACaption;
Width :=205 ;
Height := 130;
Position := poScreenCenter;
Font.Name := 'Tahoma';
Font.Size:=11;
MyLabel:= TLabel.Create(Form);
with MyLabel do //Prompt!
begin
Parent := Form;
Caption := APrompt;
AutoSize:=False;
SetBounds(10,10, 175,50);
WordWrap := True;
BidiMode:=bdRightToLeft;
end;
with TButton.Create(Form) do
begin
Parent := Form;
Caption := 'Ok';
ModalResult := mrOk;
SetBounds(15,50,50,30);
end;
with TButton.Create(Form) do
begin
Parent := Form;
Caption := 'Cancel';
ModalResult := mrCancel;
SetBounds(70,50, 50,30);
end;
with TButton.Create(Form) do
begin
Parent := Form;
Caption := 'No';
SetBounds(125,50, 50,30);
ModalResult := mrNo;
end;
SetForeGroundWindow(Form.Handle);
if ShowModal = mrOk then
Result:=mrOk
Else if ShowModal = mrNo then
Result:=mrNo
else
Result:=mrCancel;
finally
Form.Free;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Errormsg('','فايل يافت نشد!');
Application.Terminate;
end;
چند تا سوال دارم (غیر از سوال داخل پرانتز بالا!):
1.چطور همه دکمه ها پنجره رو ببندند
2.من به این نتیجه رسیدم که تعیین Default برای دکمه هایی که بعد تعریف می کنم بیفایده است.این مساله درسته؟
3.آیا می تونم برای دکمه ها کد هم بذارم؟
مثلا چیزی مثل این رو به onClick دکمه انتساب بدم؟
procedure Click(Sender: TObject);
begin
TForm(TButton(Sender).Parent).Close;
end;