線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1018
推到 Plurk!
推到 Facebook!

請問如何運用將mdichild的錯誤訊息pos到mdiform上的statusbar?

尚未結案
corey
一般會員


發表:34
回覆:44
積分:14
註冊:2003-04-19

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-12-05 17:24:21 IP:61.222.xxx.xxx 未訂閱
說明一下個人的問題: 1.MdiForm主視窗理面有StatusBar 2.MdiChild Form是包於dll中 3.個人想將由dll產生的MdiChild Form所產生的錯誤訊息顯示於MdiForm上的StatusBar,請問要如何達成? 煩請各位大大指點..謝謝 發表人 - corey 於 2003/12/05 17:26:33
pental
初階會員


發表:3
回覆:48
積分:30
註冊:2003-09-21

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-12-06 08:49:47 IP:219.68.xxx.xxx 未訂閱
我覺得你可以在當 MdiChild Form 產生錯誤訊息的時候,用 SendMessage 的方式通知 MainForm , 你可以把錯誤訊息利用 CreateFileMapping 存在一個共用記憶體的地方,當 MainForm 收到訊息之後再用 OpenFileMaping 把錯誤訊息獨出來,應該是可行的方式,但前提之下,錯誤訊息必須是你自己用 try 去欄下來的錯誤訊息。
corey
一般會員


發表:34
回覆:44
積分:14
註冊:2003-04-19

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-12-06 11:10:28 IP:61.230.xxx.xxx 未訂閱
謝謝pental回應,小弟不才 1.對於你說的"sendmessage"和"欄錯誤訊息"這方面比較不清楚,可否有範例供查看? 2.也用"sendmessage"搜尋過,可是文章都是bcb的.
pental
初階會員


發表:3
回覆:48
積分:30
註冊:2003-09-21

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-12-06 11:45:32 IP:219.68.xxx.xxx 未訂閱
SendMessage 是Win32 API 所以你可以查 Delphi 裡面的 Help 就有說明了,至於錯誤訊息的話,我不知道你是指你的程式認定的錯誤訊息,還是指程式錯誤發生的例外訊息,通常會用 try except 去攔掉非預期發生的錯誤訊息,我之前所指的就是這個部分,另外一種是你自己的程式認定的錯誤,比如說你知道使用者輸入的資料不合法。另外 CreateFileMapping 和 OpenFileMapping 也是 Win32 API 的部分,你可以查 MSDN 或是 Delphi 的 Help,目前我也沒有範例可以給你參考,如果這兩天我有空寫的話,再Post上來囉!Good luck!
Miles
尊榮會員


發表:27
回覆:662
積分:622
註冊:2002-07-12

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-12-08 14:30:23 IP:218.160.xxx.xxx 未訂閱
你可以在MainForm的Public 寫一個BarShow的procedure, 子Form用Try包起來在Except段落呼叫那個function    範例如下:

/***MainForm***/
public
    { Public declarations }
    procedure BarShow(InStr : String);    procedure TMainForm.BarShow(InStr: String);
begin
   StatusBar(InStr);
end;    /***ChildForm***/
Try
   Query1.Open;
Excetp
   On E : Exception do 
      MainForm.BarShow(E.Message):
end;        
發表人 - miles 於 2003/12/08 14:32:03
------


我不是高手, 高手是正在銀幕前微笑的人.
corey
一般會員


發表:34
回覆:44
積分:14
註冊:2003-04-19

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-12-09 12:47:05 IP:211.78.xxx.xxx 未訂閱
引言: 你可以在MainForm的Public 寫一個BarShow的procedure, 子Form用Try包起來在Except段落呼叫那個function 範例如下:

/***MainForm***/
public
    { Public declarations }
    procedure BarShow(InStr : String);    procedure TMainForm.BarShow(InStr: String);
begin
   StatusBar(InStr);
end;    /***ChildForm***/
Try
   Query1.Open;
Excetp
   On E : Exception do 
      MainForm.BarShow(E.Message):
end;        
發表人 - miles 於 2003/12/08 14:32:03
謝謝 Miles 回應 你說的方式小弟知道,但是我的問題是如何由MdiForm動態產生MdiChild(DLL檔) 並且可於MdiChild Form引用主程式的StatusBar(小弟不解的地方是如何去引用主程式的StatusBar)
ccchen
版主


發表:61
回覆:940
積分:1394
註冊:2002-04-15

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-12-09 13:13:53 IP:218.163.xxx.xxx 未訂閱
引言: (小弟不解的地方是如何去引用主程式的StatusBar)
var sbar: TStatusBar;
begin
  sbar := TStatusBar(Application.MainForm.FindComponent('StatusBar1'));
Miles
尊榮會員


發表:27
回覆:662
積分:622
註冊:2002-07-12

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-12-09 14:06:56 IP:218.160.xxx.xxx 未訂閱
Hi corey : Sorry 沒注意到你的ChildForm是DLL, 可用ccchen大大的方法.< >< > 發表人 - miles 於 2003/12/09 14:08:43
------


我不是高手, 高手是正在銀幕前微笑的人.
corey
一般會員


發表:34
回覆:44
積分:14
註冊:2003-04-19

發送簡訊給我
#9 引用回覆 回覆 發表時間:2003-12-12 23:24:38 IP:61.230.xxx.xxx 未訂閱
引言:
引言: (小弟不解的地方是如何去引用主程式的StatusBar)
var sbar: TStatusBar;
begin
  sbar := TStatusBar(Application.MainForm.FindComponent('StatusBar1'));
不好意思那麼晚才上來回....^^ ccchen說的方式我之前有試過,可是statusbar 沒有任何做用...? 我想問個觀念問題,application物件(它算是物件吧?)程式中可以透過它取得那些資料?那如果我將它傳入dll中,是否如ccchen大大所說,我就可以取得mdiform上的任何componect資源,最近整理一下程式在pos上來,煩請大大們幫忙小弟
ccchen
版主


發表:61
回覆:940
積分:1394
註冊:2002-04-15

發送簡訊給我
#10 引用回覆 回覆 發表時間:2003-12-15 09:32:49 IP:218.163.xxx.xxx 未訂閱
application物件(它算是物件吧?)程式中可以透過它取得那些資料? application是一個物件沒錯. 可以由onLine Help查TApplication就可以知有那些Property, method, event 由於DLL是被載入到Application之環境中執行, 因此application不須傳入dll中. 你可以將原AP--Build with Run Time Package. Application.MainForm.FindComponent('StatusBar1'); 是假設你在MainForm上之Statusbar--name:=StatusBar1, 如果是未知, 可以如下:
for i:=0 to application.mainform.Controlscount -1 do
  if application.mainform.Controls[i] is TStatusBar then
    sbar:=TStatusBar(application.mainform.Controls[i]);
系統時間:2024-11-25 4:56:13
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!