我有一個Form1,其中是combobox用來顯示資料串列用的,且有一個按鈕用來操作添加,當點擊這個按鈕的時候打開Form2(用showModal打開,TForm2.Create(Self).ShowModal;),我要在Form2中添加完資料在資料庫中關閉視窗后重繪Form1中的combobox下拉顯示增加的資料
uj5u.com熱心網友回復:
if form2.showmodel= mr_OK thencbb1.Items.Add('a');
uj5u.com熱心網友回復:
有兩種方法:一種:在FORM2的 close事件中直接寫: FORM1. cbb1.Items.Add(""" );定義全域變數: 在form2中給 全域變數賦值,FROM2 關閉后,在FORm1中參考。
uj5u.com熱心網友回復:
說下思路吧:1、Form2負責維護資料,和Form1沒關系
2、Form2 關閉后Form1重繪下拉框的選項
重點在這里
Form1的按鈕事件里
Form2.Showmodal;
Freeandnil(Form2); //Form2 將新選項添加到資料庫就可以了,不要操作Form1,用完就釋放掉
ComboBox1.items.Clear; //清除舊的下拉框里的選項
AddList事件; //此處從資料庫里獲取新的選項,這個事件可以在Form1.Show里使用,優化下代碼
清楚我的意思嗎?
uj5u.com熱心網友回復:
在Form中宣言一個重繪Combobox1的程序。Form2關閉時,呼叫Form1的 重繪Combobox1的程序。
uj5u.com熱心網友回復:
更一般的方法可以用訊息通知,Form2里保存資料到資料庫成功了,發個訊息通知Form1資料變化了,這樣可以解耦Form2和Form1 的關聯,也可以不限定Form1在什么事件里重繪資料。現在的Delphi支持觀察者模式了(發布/訂閱),很方便的。參考System.Messaging單元。
uj5u.com熱心網友回復:
關閉后觸發重繪按鈕uj5u.com熱心網友回復:
很簡單啊,既然你的 Form1 uses 了 Form2,你在 Form2 的 Interface 里宣告一個變數,把你需要重繪的值放在這里,Form2的OnClose里把值放到那里,Form1的 Form2.ShowModal 后就從那個變數取資料就是了uj5u.com熱心網友回復:
這個問題很簡單,這么些就可以了:TForm2.Create(Self).ShowModal;
在這里直接寫你的重繪程序就行了
uj5u.com熱心網友回復:
因為ShowModal;是模態顯示,所以,關閉Form2才會執行后續代碼,所以,在ShowModal;之后直接呼叫重繪程序即可轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/46042.html
標籤:數據庫相關
上一篇:C#:屬性_賦值私有欄位
下一篇:1.兩數之和
