帮忙看一下,DBGRID的问题,简单 ( 积分: 50 )

  • 主题发起人 主题发起人 爱上猫的鱼
  • 开始时间 开始时间

爱上猫的鱼

Unregistered / Unconfirmed
GUEST, unregistred user!
procedure TForm1.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect;
Field: TField; State: TGridDrawState);
begin
if(gdFocused in State) then // gdFocused in State是什么意思
begin
if(Field.FieldName=DBComboBox1.DataField) then//DBComboBox1.DataField是什么意思
begin
DBComboBox1.Left:=Rect.Left+DBGrid1.Left; //解释
DBComboBox1.Top:=Rect.Top+DBGrid1.Top;//解释一下
DBComboBox1.Width:=Rect.Right-Rect.Left;//解释一下
DBComboBox1.Height:=Rect.Bottom-Rect.Top;//解释一下
DBComboBox1.Visible:=True;//解释
end;
end;
end;

procedure TForm1.DBGrid1ColExit(Sender: TObject);
begin
if DBGrid1.SelectedField.FieldName=DBComboBox1.DataField then
begin
DBComboBox1.Visible:=False;
end;
end;

procedure TForm1.DBGrid1KeyPress(Sender: TObject; var Key: Char);
begin
if(Key<>Chr(9)) then //解释
begin
if(DBGrid1.SelectedField.FieldName=DBComboBox1.DataField) then
begin
DBComboBox1.SetFocus;//什么意思
SendMessage(DBComboBox1.Handle,,WM_CHAR word(key),0);//解释
end;
end;
end;
 
(gdFocused in State) 当这个CELL被选择到的时候处理下面的代码。
在DBGIRD一个CELL中建一个COMBOX提供下拉数据选择功能。
9
 
第一段的作用是在当前选中的单元格内插入一个DBComboBox控件。
gdFocused in State表示当前单元格被选中。State是一个集合,表示各种状态。
DBComboBox1.DataField表示这个控件对应哪个数据库字段。这句话用来判断当前单元格所对应的字段跟DBComboBox1对应的字段是否相同。如果相同,就把这个控件放到这个单元格里。
下面四句的作用是确定这个控件的座标。最后一句让它显示出来。

最后一段,if(Key<>Chr(9))表示如果当前输入的按键不是Tab
DBComboBox1.SetFocus表示把光标移到DBComboBox1里。因为当前光标在DBGrid里面。
SendMessage(DBComboBox1.Handle,,WM_CHAR word(key),0);表示把当前键入的按键消息发给DBComboBox1。因为之前光标不在这个控件里,所以它不知道之前按了什么东西。
明白?

建议好好看书。
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
515
import
I
I
回复
0
查看
709
import
I
后退
顶部