为什么我把DBNavigator的属性Ctl3D设为False,DBNavigator还是显示为3D啊?怎样才可以设置为2D啊,还有怎样才可以在DBNavigator上加上字啊,例如:首条,下一条,等等

解决方案 »

  1.   

    //参考如下代码~~
    const
      cBtnTypeName: array[TNavigateBtn] of PChar = ('最前', '上翻', '下翻',
        '最后', '插入', '删除', '编辑', '提交', '取消', '刷新');procedure TForm1.FormCreate(Sender: TObject);
    var
      I: Integer;
    begin
      for I := 0 to DBNavigator1.ComponentCount - 1 do
        if DBNavigator1.Components[I] is TNavButton then begin
          TNavButton(DBNavigator1.Components[I]).Caption :=
            cBtnTypeName[TNavButton(DBNavigator1.Components[I]).Index];
          TNavButton(DBNavigator1.Components[I]).Glyph := nil;
          TNavButton(DBNavigator1.Components[I]).Flat := True;
        end;
    end;
    //看你是新手的份上给你解释一下~~//转到DBCtrls单元,你可以看到对TDBNavigator的声明~~
    //其中这跳代码就是声明了这组按钮~~
      protected
        Buttons: array[TNavigateBtn] of TNavButton;//这个InitButtons方法中创建了他们~~
        procedure InitButtons;
    //由于是放在protected部分所以直接不能访问~~
    //好在这条语句,我们可以知道,这些按钮的Owner就是该TDBNavigator的实例~~
        Btn := TNavButton.Create (Self);
    //所以我们可以通过TComponent.Components[]属性访问到他们~~
      

  2.   

    呵呵,,不好意思,我弄了很久,就不是很懂其中的意思,,
    cBtnTypeName这个是什么意思啊,我编译的时候,这个出错请求指教
      

  3.   

    不好意思,刚才不在,,,
    unit Unit2;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, DB, DBTables, Grids, DBGrids, ExtCtrls, DBCtrls, ADODB,
      StdCtrls, Mask, Buttons, ToolWin, ComCtrls;type
      TFrmchangePasswd = class(TForm)
        ADOQuery1: TADOQuery;
        DataSource1: TDataSource;
        DBGrid1: TDBGrid;
        GroupBox1: TGroupBox;
        DBEdit1: TDBEdit;
        DBEdit2: TDBEdit;
        BitBtn1: TBitBtn;
        ToolBar1: TToolBar;
        DBNavigator1: TDBNavigator;
        DBText1: TDBText;
        DBText2: TDBText;
        ToolButton2: TToolButton;
        ADOQuery1iBookRangeNum: TAutoIncField;
        ADOQuery1cBookNumber: TStringField;
        ADOQuery1vTitle: TStringField;
        ADOQuery1vAuthor: TStringField;
        ADOQuery1vPublishingHouse: TStringField;
        ADOQuery1mUnitPrice: TBCDField;
        ADOQuery1vSpeName: TStringField;
        ADOQuery1vDepName: TStringField;
        Label1: TLabel;
        Label2: TLabel;
        BitBtn2: TBitBtn;
        Button1: TButton;
        SpeedButton1: TSpeedButton;
        DBComboBox1: TDBComboBox;
        DateTimePicker1: TDateTimePicker;
        procedure Button1Click(Sender: TObject);    procedure FormCreate(Sender: TObject);     //+++++++++++++++++
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      FrmchangePasswd: TFrmchangePasswd;implementation{$R *.dfm}
    procedure TFrmchangePasswd.FormCreate(Sender: TObject);
    var
      I: Integer;
    begin
      for I := 0 to DBNavigator1.ComponentCount - 1 do
        if DBNavigator1.Components[I] is TNavButton then begin
          TNavButton(DBNavigator1.Components[I]).Caption :=cBtnTypeName[TNavButton(DBNavigator1.Components[I]).Index];      TNavButton(DBNavigator1.Components[I]).Glyph := nil;
          TNavButton(DBNavigator1.Components[I]).Flat := True;
        end;
    end;procedure TFrmchangePasswd.Button1Click(Sender: TObject);
    begin
            showmessage('88');
    end;end.
      

  4.   

    ....
    cBtnTypeName是常量,你没学过牙?~~{$R *.dfm}const
      cBtnTypeName: array[TNavigateBtn] of PChar = ('最前', '上翻', '下翻',
        '最后', '插入', '删除', '编辑', '提交', '取消', '刷新');procedure TFrmchangePasswd.FormCreate(Sender: TObject);
    var
      I: Integer;
    begin
      for I := 0 to DBNavigator1.ComponentCount - 1 do
        if DBNavigator1.Components[I] is TNavButton then begin
          TNavButton(DBNavigator1.Components[I]).Caption :=cBtnTypeName[TNavButton(DBNavigator1.Components[I]).Index];      TNavButton(DBNavigator1.Components[I]).Glyph := nil;
          TNavButton(DBNavigator1.Components[I]).Flat := True;
        end;
    end;