カスタムメイドのダイアログウィンフォームがあります。その上に、ラベル、テキストボックス、2 つのボタン (OK とキャンセル) があります。また、異なるパラメーター リストを渡すためのオーバーロードされた実行メソッドを宣言および定義します。
ダイアログ Winform は次のように呼び出されます。
var theDialog := new InputMsgBox;
if theInputB.Execute('Awesome StackOverflow','Enter Text?',s,var s) = DialogResult.OK then
begin
Invalidate;
SetText(s);
end;
ダイアログ Winform の実行は次のように定義されます。
method InputMsgBox.Execute(Title, theMessage, defaultanswer:string;var thevalue:string): DialogResult;
begin
result := DialogResult.Cancel;
Requesttext.Text:=themessage;
Requesttext.Enabled:=true;
Requesttext.Visible:=true;
InputTextBox.Text:=defaultanswer;
InputTextBox.Enabled:=true;
InputTextBox.Visible:=true;
CancelBtn.Enabled:=true;
CancelBtn.Visible:=true;
Okbtn.Enabled:=true;
Okbtn.Visible:=true;
self.ShowDialog;
Result := self.DialogResult;
thevalue:=InputTextBox.Text;
end;
execute メソッドが呼び出し元に戻ると、OKBtn をクリックしても常に DialogResult.Cancel が返されます。
ボタンのダイアログの結果は、それに応じて設定されます。
ダイアログの winform に AcceptButton と CancelButton を設定しました。
showdialog メソッドが常に DialogResult.Cancel を返す理由がわかりません。
更新いくつかのテストを行った後、showdialog = DialogResult.Ok を呼び出して表示すると、他のカスタムメイドのダイアログ ウィンドウが正常に動作することがわかりました。そのため、両方のプロパティ設定に違いがあるかどうかを確認しましたが、まったく違いはありません。わかりません。前もって感謝します、