質問させて頂きます。
登録した情報を表示するメインフォームとメインフォームから登録ボタンを押すと登録フォームが立ち上がり情報を登録できる二つのフォームを作りました。
登録を行った後にメインフォームへ戻ると登録した情報が更新され新しい情報が表示されるように作りましたが、これを登録フォームを消さずに連続して登録を行えるようにしたいと依頼を受けて連続して登録出来るように修正しました。
ここでメインフォームへ戻らないと登録した情報が更新されずに同じ情報を打ってしまいそうだと指摘を受けて一件登録した時点で登録画面を消さずにメインフォームの表示が更新されるようにして欲しいと再度依頼を受けました。
メインフォームで行っているイベントを別のフォームで指定し実行することは可能でしょうか?
プログラムを触り始めて間もない初心者なので質問の内容もわかりにくいかと思いますが、わかる方がいれば教えて頂ければと思います。
よろしくお願いします。
>メインフォームで行っているイベントを別のフォームで指定し実行することは可能でしょうか?
ソースコードが挙げられていないので、具体的には、わかりませんが、
(たぶん)可能だと思います。
メッセージで処理するのはいかがですか?
> 可能でしょうか?
という質問だと、可能です、という回答しかもらえないと思います。
もう少し具体性のある形で、現状こうしているんだけど、とか、できればサンプル的に動くものを提示して、
どういうように考えればいいですか?みたいな質問のしかたのほうがいいでしょう。
ちなみにどうすればいいか、ですが、登録フォームに登録を行ったことを通知するためのイベントを作り、
メインフォームではそのイベントに表示更新を行うイベントハンドラを結びつける、というのが一般的かと。
通りすがりさん、
おっしゃったとおり自分の質問では、方法までは聞いていませんでした。
ありがとうございます。
procedure TFrmMain.bbtnInsertClick(Sender: TObject);
begin
// 登録
FrmRegbox := TFrmRegbox.Create(Self);
try
FrmRegbox._KNO := 0;
if FrmRegbox.ShowModal = mrOk then begin
ADOQMei.Requery();
if not (ADOQMei.Bof and ADOQMei.Eof) then
ADOQMei.Locate('KNO',FrmRegbox._KNO,[loCaseInsensitive, loPartialKey]);
end;
finally
FrmRegbox.Release;
end;
Proc_DispDBG;
end;
procedure TFrmRegbox.bbtnAddDataClick(Sender: TObject);
begin
if Func_ChkReg then
begin
if FintKNO > 0 then
begin
Proc_Update;
if FintKNO = -1 then ModalResult := mrCancel else ModalResult := mrOk;
end else
begin
Proc_Insert;
end;
end;
end;
上記に書いたソースがメインフォームから登録フォームを表示させ、登録後に登録フォームを閉じるとメインフォームが更新されるようにしたソースです。
これを私が希望した動きにするにはどのようにすれば良いでしょうか?
子フォームからメインフォームへデータの受渡が出来ることがわかり、
メインフォームでデータグリッドを管理しているADOQを子フォームから
『.Requery』したら更新が出来ました。
解答をいただいた皆さんありがとうございました。
質問の意図が明確に記載して無くすみませんでした。
今後もこちらで質問をすると思いますが、よろしくお願いします。
ありがとうございました。
ツイート | ![]() |