それは私にとって非常に実用的な解決策のように見えますが、私は悪いかもしれない何かを支配しているのだろうかと思っています...
ユーザーがウォークスルーする必要のある2つのフォームがあります。ユーザーがボタンをクリックすると、form1がポップアップします。ユーザーが[OK]を押すと、2番目のポップアップが表示されます。ユーザーがもう一度[OK]をクリックすると、画面が消えます。または、ユーザーが[再試行]をクリックすると、画面が最初の画面に戻ります。2つの画面は完全に異なるサイズで、情報が異なります。
だから私はこのコードを思いついた:
Form1 := TForm1.Create(SharedData);
Form2 := TForm2.Create(SharedData);
repeat
ModalResult := Form1.ShowModal;
if (ModalResult = mrOK) then ModalResult := Form2.ShowModal;
until (ModalResult <> mrRetry);
Form1.Release;
Form2.Release;
私はこのコードをテストしましたが、それは魅力のように機能しているようです。このコードでは、SharedDataは、両方のフォームによって操作されるデータを含むオブジェクトです。2つのフォームを作成する前にこのオブジェクトを作成し、ModalResult == mrOKの場合は、データをデータベースに書き戻すだけです。
問題は、これは2つのフォーム間の反転を処理するためのクリーンなソリューションだと思いますが、このような構造を以前に見たことはありません。もちろん、私は天才です。(少なくとも、Egoは私にそう言っています。)しかし、このコードを使用することに反対する何かがあるのでしょうか、それとも問題ないのでしょうか。