全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1699
推到 Plurk!
推到 Facebook!

「類挑戰題」透過物件操作表單屬性和表單事件

尚未結案
g9221712
高階會員


發表:145
回覆:344
積分:162
註冊:2006-07-06

發送簡訊給我
#1 引用回覆 回覆 發表時間:2006-10-05 08:53:08 IP:220.134.xxx.xxx 訂閱
各位前輩及版主大大:
我想寫一個Form管理物件,比如像Form的KeyPreview事件我們設定為True然後
通常在OnKeyPress(Sender: TObject; var Key: Char);事件上,寫如切換
模擬dos切換物件Focus的程式碼改由Enter按鍵觸發,一般作法都是寫在
BaseForm的表單,然後繼承BaseForm就可以達成!
最近我突發奇想,我在想能不能建立一個form管理物件,而非透過繼承BaseForm
這樣除了可以增加表單佈建的彈性,而且又不用建立繼承BaseForm,當然先不考慮
這樣的作法對管理是否有幫助,我目前已經可以在表單上,拉自訂的管理物件,
除了將form的表單KeyPreview設定為True並且修改該物件的上層表單OnKeyPress
的程式碼,但是我目前雖然達成,但想增加該管理物件的彈性,想說有無辦法
讓Form管理物件增加一個KeyPreview屬性,以決定使用Form管理物件的Form可以決定
是否執行管理物件內的OnKeyPress程式碼,但是我卻苦思不知道要將這一段程式碼,
放在哪裡,因為我放在FRM_MM.Set_KeyPreview的值設定去執行,但是程式卻出現錯誤。
我的問題是:
想請教要將這一段程式碼,放在哪。真是苦思無解! 懇請各位大大開示!

function FRM_MM.Get_KeyPreview: Boolean; // 傳回值
begin
Result := FKeyPreview;
end;
procedure FRM_MM.Set_KeyPreview(Value: Boolean);
var
frm: TForm;
begin
if FKeyPreview <> Value then
begin
FKeyPreview := Value;
// 有問題程式碼
//==============================================================================
frm := TForm(Application.FindComponent(self.Parent)); // move to next control;
if self.Get_KeyPreview = True then
begin
TForm(frm).KeyPreview := True;
TForm(frm).OnKeyPress := OnKeyPressNew;
end
else
begin
TForm(frm).KeyPreview := false;
// TForm(frm).OnKeyPress := nil;
end;

end;
end;
// 目前成功作法程式碼,但不具備切換彈性
//==============================================================================
constructor FRM_MM.Create(AOwner: TComponent); // 建構子、建立物件初始狀態
begin
inherited Create(AOwner);
// 上層物件
// ================================
if AOwner is TForm then
begin
Set_Parent(TForm(AOwner).Name);
TForm(AOwner).KeyPreview := True;
TForm(AOwner).OnKeyPress := OnKeyPressNew;
end;
------
「人們所以覺得寂寞,是因為他們會築牆,卻不會搭橋。」
程式寫的越久,卻發現自己越來越不會寫程式!
danny
版主


發表:100
回覆:522
積分:595
註冊:2002-03-11

發送簡訊給我
#2 引用回覆 回覆 發表時間:2006-10-05 13:59:10 IP:211.76.xxx.xxx 未訂閱

請用搜尋找 DOSMOVE 你可以找到此元件的一些不同的版本(with source)

裡面有你要的答案.

------
將問題盡快結案也是一種禮貌!
g9221712
高階會員


發表:145
回覆:344
積分:162
註冊:2006-07-06

發送簡訊給我
#3 引用回覆 回覆 發表時間:2006-10-11 23:33:27 IP:220.134.xxx.xxx 訂閱
感謝前輩:
已經解決,由於ktop主機不穩,現在才回應!
------
「人們所以覺得寂寞,是因為他們會築牆,卻不會搭橋。」
程式寫的越久,卻發現自己越來越不會寫程式!
g9221712
高階會員


發表:145
回覆:344
積分:162
註冊:2006-07-06

發送簡訊給我
#4 引用回覆 回覆 發表時間:2006-10-11 23:33:28 IP:220.134.xxx.xxx 訂閱
感謝前輩:
已經解決,由於ktop主機不穩,現在才回應!
------
「人們所以覺得寂寞,是因為他們會築牆,卻不會搭橋。」
程式寫的越久,卻發現自己越來越不會寫程式!
系統時間:2024-05-07 20:25:20
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!