首页  编辑  

修改DBNavigator中按钮的图标

Tags: /超级猛料/Database.数据库相关/数据库控件/   Date Created:

修改$(DELPHI)\lib\DBCTRLS.res中相应按钮的bitmap即可

看看源代码就知道了。

var

 BtnTypeName: array[TNavigateBtn] of PChar = ('FIRST', 'PRIOR', 'NEXT',

   'LAST', 'INSERT', 'DELETE', 'EDIT', 'POST', 'CANCEL', 'REFRESH');

type

 TNavigateBtn = (nbFirst, nbPrior, nbNext, nbLast,

                 nbInsert, nbDelete, nbEdit, nbPost, nbCancel, nbRefresh);

// 初始化按钮

procedure TDBNavigator.InitButtons;

var

 I: TNavigateBtn;

 Btn: TNavButton;

 X: Integer;

 ResName: string;

begin

 MinBtnSize := Point(20, 18);

 X := 0;

 for I := Low(Buttons) to High(Buttons) do

 begin

   Btn := TNavButton.Create (Self); ); // TNavButton 是 TSpeedButton 的子类,其实就是 TSpeedButton

   Btn.Flat := Flat;

   Btn.Index := I;

   Btn.Visible := I in FVisibleButtons;

   Btn.Enabled := True;

   Btn.SetBounds (X, 0, MinBtnSize.X, MinBtnSize.Y);

   FmtStr(ResName, 'dbn_%s', [BtnTypeName[I]]);

   Btn.Glyph.LoadFromResourceName(HInstance, ResName); // 从资源文件中根据资源名字调出 TSpeedButton 的 Glyph 属性

   Btn.NumGlyphs := 2;

   Btn.Enabled := False;

   Btn.Enabled := True;

   Btn.OnClick := ClickHandler;

   Btn.OnMouseDown := BtnMouseDown;

   Btn.Parent := Self;

   Buttons[I] := Btn;

   X := X + MinBtnSize.X;

 end;

 Buttons[nbPrior].NavStyle := Buttons[nbPrior].NavStyle + [nsAllowTimer];

 Buttons[nbNext].NavStyle  := Buttons[nbNext].NavStyle + [nsAllowTimer];

end;

但是 Buttons 属性被 Protect 了,一般情况下访问不到,要玩一点技巧!

 protected

   Buttons: array[TNavigateBtn] of TNavButton;

这样做就行了:

type

 TMyNavgator = class(TDBNavigator); // Delphi 默认在同一个单元里的类可以互相访问其 protected 属性

implementation

{$R *.DFM}

procedure TForm1.FormCreate(Sender: TObject);

begin

 TMyNavgator(DBNavigator1).Buttons[nbFirst].Glyph.LoadFromFile('D:\Program\Image\Face.bmp');

end;