stringgrid能像编辑框那样进行编辑吗?能够用键盘控制其输入焦点吗?(100分)

  • 主题发起人 主题发起人 小兔牙
  • 开始时间 开始时间

小兔牙

Unregistered / Unconfirmed
GUEST, unregistred user!
StringGrid1.Options:=StringGrid1.Options+[goEditing];//就可以编辑了
StringGrid1.Row:=xxx;
StringGrid1.Col:=xxx;//就可以改变输入焦点了
 
能举个改变输入焦点例子吗?
xxx是指什磨呀
 
可以发消息呀!以下是在onkeydown 事件写上
postmessage((sender as Tstringgrid).handle,wm_keydown,vk_tab,0)
postmessage((sender as Tstringgrid).handle,wm_keyup,vk_tab,0)
记住: 在options 的选gotabs 为true 就ok!
 
当然可以,去找Delphi自身带的Demos。
 
当然可以
直接定位cells[3,4];
StringGrid1.Options := StringGrid1.Options+[goEditing] ;
StringGrid1.Col := 3 ;
StringGrid1.Row := 4 ;
按回车跳转焦点的控制在
procedure TF_Bbxx_Lr.StringGrid1KeyPress(Sender: TObject;
var Key: Char);
var
TempStringGrid : TStringGrid ;
begin
TempStringGrid := StringGrid1 ;
if Trim(TempStringGrid.Cells[TempStringGrid.Col,TempStringGrid.Row]) = '' then
begin
Exit ;
end ;
if ((Key=#13) or (key=#10)) then
begin
With TempStringGriddo
begin
//设置小数点位数
StringGridQuxiaoshu(TempStringGrid.Col,TempStringGrid.Row,TempStringGrid);
Case TempStringGrid.Col of
5 :
begin
TempStringGrid.Col := TempStringGrid.Col+2 ;
end;
3,4,7,8 :
begin
TempStringGrid.Col := TempStringGrid.Col+1 ;
end;
9 :
begin
TempStringGrid.Col := TempStringGrid.Col+6 ;
end;
15 :
if TempStringGrid.Row<6 then
begin
TempStringGrid.Col := 3 ;
TempStringGrid.Row := TempStringGrid.Row+1 ;
End ;
End ;
End ;
Key:=#0 ;
End ;
if not( key in ['0'..'9','.','-',#13,#8] )
then
begin
key := #0;
end;
end;

 
后退
顶部