請問如何控制DBNavigator上各個按扭? |
答題得分者是:careychen
|
GrandRURU
站務副站長 發表:240 回覆:1680 積分:1874 註冊:2005-06-21 發送簡訊給我 |
|
pceyes
尊榮會員 發表:70 回覆:657 積分:1140 註冊:2003-03-13 發送簡訊給我 |
TNavigateBtn defines values identifying different possible buttons on a TDBNavigator object.
DBCtrls or QDBCtrls type TNavigateBtn = (nbFirst, nbPrior, nbNext, nbLast, nbInsert, nbDelete, nbEdit, nbPost, nbCancel, nbRefresh); enum TNavigateBtn { nbFirst, nbPrior, nbNext, nbLast, nbInsert, nbDelete, nbEdit, nbPost, nbCancel, nbRefresh }; Each TNavigateBtn value identifies a different button that can appear on a TDBNavigator object. The following table lists all the button types, their corresponding TNavigateBtn values, and the action associated with each button: First nbFirst Go to the first record Prior nbPrior Go to the previous record Next nbNext Go to the next record Last nbLast Go to the last record Insert nbInsert Insert a blank record Delete nbDelete Delete the current record Edit nbEdit Permit users to edit the current record Post nbPost Post the current record Cancel nbCancel Cancel the current edit Refresh nbRefresh Refresh the data in the dataset
------
努力會更接近成功 |
GrandRURU
站務副站長 發表:240 回覆:1680 積分:1874 註冊:2005-06-21 發送簡訊給我 |
|
careychen
尊榮會員 發表:41 回覆:580 積分:959 註冊:2004-03-03 發送簡訊給我 |
不知 GrandRURU 版大有沒有 Infopower 的元件呢?
有的話其實他裡面的 TwwDBNavigator 有你要的功能,可以針對需要的按鈕做 Enabled / Disabled 如果沒有的話,小弟繼承了 TDBNavigator, 加入 EnabledButton 的屬性, 其實都是去 Copy VisibleButton 的屬性來用的,用法和 VisibleButton 的方式一樣 [code delphi] TExDBNavigator = Class(TDBNavigator) private FEnabledButtons: TNavButtonSet; private procedure SetEnabled(Value: TNavButtonSet); public property EnabledButtons: TNavButtonSet read FEnabledButtons write SetEnabled default [nbFirst, nbPrior, nbNext, nbLast, nbInsert, nbDelete, nbEdit, nbPost, nbCancel, nbRefresh]; End; procedure TExDBNavigator.SetEnabled(Value: TNavButtonSet); var I: TNavigateBtn; begin FEnabledButtons := Value; for I := Low(Buttons) to High(Buttons) do Buttons[I].Enabled := I in FEnabledButtons; Invalidate; end; [/code]
------
價值的展現,來自於你用哪一個角度來看待它!!
編輯記錄
careychen 重新編輯於 2008-07-22 23:30:13, 註解 無‧
|
GrandRURU
站務副站長 發表:240 回覆:1680 積分:1874 註冊:2005-06-21 發送簡訊給我 |
謝謝carechen大的回覆。
我沒有Infopower的元件,我是用BCB6的…… 覺得DELPHI轉成BCB6不是一件難事…但,我想我遇到麻煩了! @@ 這個繼承功能我寫不出來 (暈死) ! 原來不只是簡單的 「:=」改「=」或是「.」改成「->」 還請左右開攻(DELPHI / BCB)的賢達幫忙小翻一下吧~~~~~感激不盡!謝謝! ===================引 用 careychen 文 章=================== 不知 GrandRURU 版大有沒有 Infopower 的元件呢? 有的話其實他裡面的 TwwDBNavigator 有你要的功能,可以針對需要的按鈕做 Enabled / Disabled 如果沒有的話,小弟繼承了 TDBNavigator, 加入 EnabledButton 的屬性, 其實都是去 Copy VisibleButton 的屬性來用的,用法和 VisibleButton 的方式一樣 43... |
careychen
尊榮會員 發表:41 回覆:580 積分:959 註冊:2004-03-03 發送簡訊給我 |
HI GrandRURU
以下是 bcb 的語法,你看一下囉, 小弟也是第一次轉 @@" 還真有點 $*^#^!# , 我卡在 Button[I].Enabled := I in FEnabledButtons; 還好有會 VC 的同事 @@" 跟我說在 C 裡兩個集合的使用方法, 不然我也快暈倒 放在 .h 的 [code cpp] class TExDBNavigator : public TDBNavigator { typedef TDBNavigator inherited; private: TNavButtonSet FEnabledButtons; private: HIDESBASE void __fastcall SetEnabled(TNavButtonSet Value); public: __property TNavButtonSet EnabledButtons = {read=FEnabledButtons,write=SetEnabled,default=1023}; __fastcall TExDBNavigator(TComponent* AOwner); }; [/code] 放在 .cpp 的 [code cpp] __fastcall TExDBNavigator::TExDBNavigator(TComponent* AOwner) : TDBNavigator(AOwner) { } void __fastcall TExDBNavigator::SetEnabled(TNavButtonSet Value) { TNavigateBtn I; FEnabledButtons = Value; for (I = nbFirst; I <= nbRefresh; I=I 1) { Buttons[I]->Enabled = FEnabledButtons.Contains(I); } Invalidate(); } [/code] ===================引 用 GrandRURU 文 章=================== 謝謝carechen大的回覆。 我沒有Infopower的元件,我是用BCB6的…… 覺得DELPHI轉成BCB6不是一件難事…但,我想我遇到麻煩了! @@ 這個繼承功能我寫不出來 (暈死) ! 原來不只是簡單的 「:=」改「=」或是「.」改成「->」 還請左右開攻(DELPHI / BCB)的賢達幫忙小翻一下吧~~~~~感激不盡!謝謝!
------
價值的展現,來自於你用哪一個角度來看待它!!
編輯記錄
careychen 重新編輯於 2008-07-23 18:27:28, 註解 無‧
|
GrandRURU
站務副站長 發表:240 回覆:1680 積分:1874 註冊:2005-06-21 發送簡訊給我 |
實際上修改還是有些問題
BCB沒有TNavButtonSet這個類別 @@ 其它的…還在修改中…… 大致修改如下,但還沒測試過,只有編譯成功而已。 *.h [code cpp] class TExDBNavigator : public TDBNavigator { typedef TDBNavigator inherited; private: TNavButtonStyle FEnabledButtons; private: HIDESBASE void __fastcall SetEnabled(TNavButtonStyle Value); public: __property TNavButtonStyle EnabledButtons = {read=FEnabledButtons,write=SetEnabled,default=1023}; __fastcall TExDBNavigator(TComponent* AOwner); }; [/code] *.cpp [code cpp] __fastcall TExDBNavigator::TExDBNavigator(TComponent* AOwner) : TDBNavigator(AOwner) { } //--------------------------------------------------------------------------- void __fastcall TExDBNavigator::SetEnabled(TNavButtonStyle Value) { TNavigateBtn I; FEnabledButtons = Value; for (I = nbFirst; I <= nbRefresh; I=I 1) { Buttons[I]->Enabled = FEnabledButtons.Contains(I); } Invalidate(); } [/code]
編輯記錄
GrandRURU 重新編輯於 2008-07-23 19:01:29, 註解 無‧
|
careychen
尊榮會員 發表:41 回覆:580 積分:959 註冊:2004-03-03 發送簡訊給我 |
|
GrandRURU
站務副站長 發表:240 回覆:1680 積分:1874 註冊:2005-06-21 發送簡訊給我 |
請問是什麼檔呢?
目前我已經可以正常編譯了,但還不知道如何控制button的enable跟disable…… 程式碼如下: [code cpp] class TExDBNavigator : public TDBNavigator { typedef TDBNavigator inherited; private: TNavButtonStyle FEnabledButtons; private: HIDESBASE void __fastcall SetEnabled(TNavButtonStyle Value); public: __property TNavButtonStyle EnabledButtons = {read=FEnabledButtons,write=SetEnabled,default=1023}; __fastcall TExDBNavigator(TComponent* AOwner); }; TExDBNavigator *a; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- __fastcall TExDBNavigator::TExDBNavigator(TComponent* AOwner) : TDBNavigator(AOwner) { } //--------------------------------------------------------------------------- void __fastcall TExDBNavigator::SetEnabled(TNavButtonStyle Value) { TNavigateBtn I; FEnabledButtons = Value; for (I = nbFirst; I <= nbRefresh; I=I 1) { Buttons[I]->Enabled = FEnabledButtons.Contains(I); } Invalidate(); } void __fastcall TForm1::Button1Click(TObject *Sender) { a = new TExDBNavigator(this); a->Parent = Form1; a->Top = 10; a->Left = 10; a->Width = 500; a->Height = 100; } //--------------------------------------------------------------------------- void __fastcall TForm1::Button2Click(TObject *Sender) { //如果我要將nbFirst的按扭變成Disable(灰色)的話請問這邊該如何下指令呢? } //--------------------------------------------------------------------------- [/code]
編輯記錄
GrandRURU 重新編輯於 2008-07-23 19:40:02, 註解 無‧
|
careychen
尊榮會員 發表:41 回覆:580 積分:959 註冊:2004-03-03 發送簡訊給我 |
[code cpp]
//--------------------------------------------------------------------------- void __fastcall TForm1::Button2Click(TObject *Sender) { //如果我要將nbFirst的按扭變成Disable(灰色)的話請問這邊該如何下指令呢? // 這是小弟在 help 上看到用來設定 VisibleButtons 的 // 也就是,有列出來的,表示可以動作 a->EnabledButtons = a->EnabledButtons << nbPrior << nbNext << nbDelete << nbEdit << nbPost << nbLast << nbInsert << nbCancel << nbRefresh; } //--------------------------------------------------------------------------- [/code]
------
價值的展現,來自於你用哪一個角度來看待它!!
編輯記錄
careychen 重新編輯於 2008-07-23 20:40:27, 註解 無‧
|
GrandRURU
站務副站長 發表:240 回覆:1680 積分:1874 註冊:2005-06-21 發送簡訊給我 |
我終於知道原因了!
以下是CodeGear C Builder 2007 TNavButtonSet的原式 DBCtrls.hpp: [code cpp] typedef Set [/code] Borland C Builder 6 ……… 還真的沒有這個定義! 但是! 它有以下這個…… DBCtrls.hpp: [code cpp] typedef Set [/code] 看到這邊就豁然開朗了!(笑) 也就是說,在bcb6中只要將原來的TNavButtonSet改成TButtonSet,就可以成功使用carechen大提供的範列! 真是太感謝您了! 謝謝carechen大大不吝提供指導!再次感謝! |
careychen
尊榮會員 發表:41 回覆:580 積分:959 註冊:2004-03-03 發送簡訊給我 |
|
shinnuei
一般會員 發表:32 回覆:48 積分:21 註冊:2002-03-13 發送簡訊給我 |
請問如何把 TNavButtonSet 改成 TButtonSet呢?
我在 DBCtrls.hpp 中找不到 TNavButtonSet 這個字串耶... ===================引 用 GrandRURU 文 章===================Borland C Builder 6 ……… 還真的沒有這個定義! 但是! 它有以下這個…… DBCtrls.hpp: [code cpp] typedef Set TButtonSet; [/code] 看到這邊就豁然開朗了!(笑) 也就是說,在bcb6中只要將原來的TNavButtonSet改成TButtonSet,就可以成功使用carechen大提供的範列! 真是太感謝您了! 謝謝carechen大大不吝提供指導!再次感謝! |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |