delphi中如何用dbgride控件实现数据输入,并且每个单元格的输入都能像下拉列表一样!
如果不用这个控件只要能实现这个功能就行。我想的是下拉列表中的值是从数据库中提取的,并且不只一列。还有增加行这类的东西。那个东西还要能显示之前输入的数据!是做医院的管理信息...
如果不用这个控件只要能实现这个功能就行。我想的是下拉列表中的值是从数据库中提取的,并且不只一列。还有增加行这类的东西。那个东西还要能显示之前输入的数据!是做医院的管理信息系统,我还是个新手请讲的详细点。请高手指点,谢了!
展开
展开全部
在窗口任意位置放一个TComboBox控件,进行相关设置,并设置Visible:=false; 宽度和Cell一样宽。
在dbgride的OnDrawDataCell事件中回入代码:
ComboBox1.Left := Rect.Left + dbgride1.Left;
ComboBox1.Top := Rect.Top + dbgride1.top;
ComboBox1.Visible := True;
在TComboBox 的 OnExit事件中加入代码
ComboBox1.visible:=false;
// 修改数据库相应值
补充:
1、不能在双击dbgride,进行显示列设置,否则不会触发OnDrawDataCell事件;
2、如果数据库字段是英文,而你想在表格中显示中文,要设置table或Query的SQL语句(as)
3、充分利用OnDrawDataCell事件中Column变量
if Column.FieldName='aaa' then dosomething;
在dbgride的OnDrawDataCell事件中回入代码:
ComboBox1.Left := Rect.Left + dbgride1.Left;
ComboBox1.Top := Rect.Top + dbgride1.top;
ComboBox1.Visible := True;
在TComboBox 的 OnExit事件中加入代码
ComboBox1.visible:=false;
// 修改数据库相应值
补充:
1、不能在双击dbgride,进行显示列设置,否则不会触发OnDrawDataCell事件;
2、如果数据库字段是英文,而你想在表格中显示中文,要设置table或Query的SQL语句(as)
3、充分利用OnDrawDataCell事件中Column变量
if Column.FieldName='aaa' then dosomething;
追问
为什么我用的时候第二个dbgrid总是在表格的下方左右跳个不停。就是每一列下面都出现一次。希望继续解答,万分感谢。或者你有这种窗体的源代码发我,我自己研究也行!369626855@qq.com
追答
显示帮你做了个DEMO(发到你QQ信箱),数据输入实现写数据库的代码要你自己加了!
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询