如何在DBGrid中输入数字后按Enter键焦点向下移动!急(100分)

  • 主题发起人 主题发起人 pentnt
  • 开始时间 开始时间
P

pentnt

Unregistered / Unconfirmed
GUEST, unregistred user!
各位大虾:
我想在DBGrid中当我输入数字后,按回车键确认,如何实现焦点向下移动?
并且我想再问一下如何实现报表的动态创建?
 
在dbgrid的keyPredd事件中作如下判断
可是焦点向下移动
if key=#13 then
begin
table1.next;
key:=#0;
end;
如要移动到下一列
if key=#13 then
beign
selectedindex:=selectedindex+1
key:=#0;
end
//selectedfield:=fields[selectedindex];
 
实现报表动态创建如下:当按下Button1时创建一个TQRLabel,
其它的可以以此类推。

procedure TForm1.Button1Click(Sender: TObject);
var
AA: TObject;
begin
AA:=QRBand1.AddPrintable(TQRLabel);
with TQRLabel(AA) do begin
Size.Left:=50;
Size.Top:=5;
Caption:='Dynamic Colmn';
end;
end;

AddPrintalble()是关键函数。
 
置Form的Keypreview为True,在Grid的OnKeyPress中写入下列代码:

if Key = #13 then
begin
keybd_event(VK_DOWN,0,0,0);
keybd_event(VK_DOWN,0,KEYEVENTF_KEYUP,0);
end;

 
Procedure TForm1.FormKeyPress(Sender:Tobject;Var Key:Char);
Begin
if key=#13 then
 if (ActiveControl is TDbgrid) Then
 begin
  With TDbgrid(ActiveControl) Do
  if Selectedindex<(FieldCount-1) then
  Selectedindex:=Selectedindex+1
  else Selectedindex:=0;
 end;
end;
 
Procedure TForm1.FormKeyPress(Sender:Tobject;Var Key:Char);
Begin
if key=#13 then
 if (ActiveControl is TDbgrid) Then
 begin
  With TDbgrid(ActiveControl) Do
  if Selectedindex<(FieldCount-1) then
  Selectedindex:=Selectedindex+1
  else if not table(或quarry).EOF then
begin
Selectedindex:=0;
table.Next;
end ;
 end;
end;

 
多人接受答案了。
 
procedure Tz_chxeditdata.DBGrid1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if key=13 then
begin
table1.Next;
end;
end;
 

Similar threads

D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
后退
顶部