如何在程序中控制 DBNAVIGATOR 中的按钮?(15分)

  • 主题发起人 主题发起人 m&m
  • 开始时间 开始时间
M

m&m

Unregistered / Unconfirmed
GUEST, unregistred user!
如何在程序中控制 DBNAVIGATOR 中的按钮?

比如:在程序中我想得到DBNAVIGATOR 的“+”按钮的ENABLE 属性。
 
1.显示
(Sender as TDBNavigator).VisibleButtons:=[nbFirst, nbPrior,bNext,...];
2.主动控制
(Sender as TDBNavigator).BtnClick(nbFirst);
3.被动控制
procedure TForm1.DBNavigator1Click(Sender: TObject; Button: TNavigateBtn);
{
procedure TForm1.DBNavigator1BeforeAction(Sender: TObject;
Button: TNavigateBtn);
}
begin
case Button of
nbFirst : do something;
nbPrior : do something;
nbNext : do something;
nbLast : do something;
nbInsert : do something;
nbDelete : do something;
nbEdit : do something;
nbPost : do something;
nbCancel : do something;
nbRefresh: do something;
end;
end;
 
最好是不要改,因为button是数据明了的,他会根据dataset的状态自动设定,
enable:=true or false.
如果要改的话:
type
tmybar:class(tdbnavigator);
begin
for I := Low(tmybar(dbnavigator1).Buttons) to High(tmybar(dbnavigator1).Buttons)
do
tmybar(dbnavigator1).Buttons.Enabled := False;
end;
 
我只是想得到按扭的状态。并不想改动。如 ENABLE 属性。
 
根据DataSet当前的状态就可以知到按钮的状态。也就是根据DataSet的
State属性可以判断出按钮的状态。
 
to hubdog:
你的这句通不过。

“for I := Low(tmybar(dbnavigator1).Buttons) to High(tmybar
(dbnavigator1).Buttons)”

如下错误:[Error] Un_dcdt.pas(113): Incompatible types: 'Integer'
and 'TNavigateBtn'
 
to Fencer:
如何得到state属性。
type TDataSetState = (dsInactive, dsBrowse, dsEdit, dsInsert,
dsSetKey, dsCalcFields, dsFilter, dsNewValue, dsOldValue,
dsCurValue, dsBlockRead, dsInternalCalc, dsOpening);
procedure Tfrm_dcdt.FormClose(Sender: TObject;varAction:TCloseAction);
var
i:integer;
begin
if datamodule1.dcdt.state= dsinsert then showmessage('您录入的数据尚未保存!');
end;

如下错误:[Error] Un_dcdt.pas(115): Incompatible types:
'Db.TDataSetState' and 'un_dcdt.TDataSetState'


 
又到星期一了,开始工作。接着学 DELPHI 。。。。。。
 
蚯蚓,CAKK老乡 有何高见 ?!
 
<font color=red>以下是我给WTO的类似问题的回答</font>,帖一下:

//DBCtrls.pas
type
TDBNavigator = class (TCustomPanel)
...
protected
<font color=red>Buttons: array[TNavigateBtn] of TNavButton;</font>
...
end;

通过Buttons即可访问所有按纽,但因为Buttons定义在protected部分,
因此无法直接访问,

告诉你一个<B>龌龊的办法</B>:

type
//继承一下,什么都不干
TMyDBNavigator=class(TDBNavigator)
end;

然后你就可以在你的程序中这样访问了:
...
DBNavigator1:TDBNavigator;
...
begin
...<B>TMyDBNavigator(DBNavigator1).Buttons</B>...
end;

怎么样?有什么感想??
不到万不得已,不要这么干~~~~
 
蚯蚓说的对
 
多人接受答案了。
 
后退
顶部