TDBNavigator的按钮中可不可以添加文字,或者加上提示文字也好

解决方案 »

  1.   

    修改$(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;
      

  2.   

    修改一下Navgator的代码,可以实现的,不过好像得动态建立得
      

  3.   

    以上方法都太麻烦了,网络上一个控件叫dbnav的控件,很好用!
    但按钮的样式与按钮一样,太普通了!除了这个之外,还有非常多,如IP3000里就有一个非常好用的!……如果网络上找不到,我可以发给你,不过要给我加分哦!
      

  4.   

    干吗这样麻烦,直接用button写代码不就得了
      

  5.   

    更改Hints属性中的文字就行了,并且ShowHint:=true;