一个关于DBGrid控件中使用下拉列表框的问题!
各位高手,小弟日前遇到一问题,我在一程序中新建了一窗口,用USES引用了其它窗口的一个TADOConnect控件,然后添加了一个下拉列表框,和一个DBGrid控件,在DBGRID中有一列必须要用到这个列表框,我想请问一下各位高手,怎样才能把这个列表框的用在dbgrid控件中?[注意:这个列表框中能焦点在该列上才显示,大小位置都等于该列的大小位置,] 问题点数:50、回复次数:5Top
1 楼cg1120(代码最优化-§惟坚韧者始能遂其志§)回复于 2003-02-04 17:45:02 得分 20
一个在DBGRID中嵌入COMBOBOX控件的例子:
procedure Tf_hksz.DBGDrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
begin
q_rq.Left:=Rect.Left + dbg.Left+3;//q_rq 为TCOMBOBOX
q_rq.Top:=Rect.Top + dbg.top+3;
q_rq.Width:=Rect.Right - Rect.Left;
q_rq.Height:=Rect.Bottom - Rect.Top;
q_rq.Visible:=true;
end;
procedure Tf_hksz.DBGColExit(Sender: TObject);
begin
q_rq.Visible:=false;
end;Top
2 楼TangDY(Tang)回复于 2003-02-04 18:09:24 得分 0
其实我也照上面那位高手那样试过了,可是却还是不行,但是却可以根据列的不同隐藏那个下拉列表框,请各位高手再帮帮忙,小弟在线等待~!!!谢谢了!Top
3 楼haerbin982()回复于 2003-02-04 18:36:06 得分 20
cg1120(代码最优化-§新年祝福你,好运伴着你§)的方法可以的.
你先把一个下拉列表在初始化时给隐藏了.就是说把dbcombobox.visible:=false;
procedure TForm1.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect;
Field: TField; State: TGridDrawState);
begin
if (gdFocused in State) then
begin
if (Field.FieldName = DBComboBox1.DataField) then
begin
DBComboBox1.Left := Rect.Left + DBGrid1.Left;
DBComboBox1.Top := Rect.Top + DBGrid1.top;
DBComboBox1.Width := Rect.Right - Rect.Left;
DBComboBox1.Visible := True;
end;
end;
end;Top
4 楼TangDY(Tang)回复于 2003-02-05 16:48:16 得分 0
上面那位仁况的方法我也试过了,可是却还是不行,我是从SQL SERVER数据库中的几张表中调的数据,不知怎么的却不行!请高手指教啊,小弟在此万分感谢!Top
5 楼zqdshsy()回复于 2003-02-05 17:16:26 得分 10
建立两个TTABLE控件,一个指向需要显示的数据(A),另一个指向下拉列表指向的数据(B),用ADD COLUMN将A中的列全部加上,然后再ADD,NEW,将其选定为LOOKUP 类型,名称自定,在下列的选项中选择数据源B,在LOOKUP 列中将B中的代码选上,在RESULT列中将名称列选上。
新加一窗口,建立一DBGRID,DATASOURCE指向A,试一试是否有了下拉列表?
祝你成功!
Top




