如何在dbgrid中的网格中填加控件!

program_girl 2001-11-08 08:30:02
我想在dbgrid的网格中添加控件控制数据的数据该怎样添加!
能给写代码吗?
...全文
113 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
EP外星人 2002-05-08
  • 打赏
  • 举报
回复
加入if not DBMemo1.Focused then DBMemo1.Visible :=False;
在if (gdFocused in State) then
begin
的前面,对于其他也一样。
BEYONDcsharp 2002-05-07
  • 打赏
  • 举报
回复
send me email ,i give you code
tp168 2001-11-13
  • 打赏
  • 举报
回复
(这个原理我是知道,但是我有发现一个问题不知如何解决:
就是在cell中加入combox后缩小该column的宽度combox的宽度还保持原来的宽度,
影响美观,不知如何解决 )
我的意思就是把一个DBComBox放进DBGrid后(不用Column中PickList属性)
缩小该column的宽度,放进DBGrid该Cell的DBComBox的宽度还保持原来的宽度???
songlichao 2001-11-12
  • 打赏
  • 举报
回复
你详细的看一下DBGrid的Column中的属性,你会发现更好的方法。
因为我不知道你的具体目的,所以不能具体的讲。
tp168 2001-11-12
  • 打赏
  • 举报
回复
这个原理我是知道,但是我有发现一个问题不知如何解决:
就是在cell中加入combox后缩小该column的宽度combox的宽度还保持原来的宽度,
影响美观,不知如何解决
EP外星人 2001-11-09
  • 打赏
  • 举报
回复
procedure TForm1.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect;
Field: TField; State: TGridDrawState);
begin
if (gdFocused in State) then
begin
if (Field.DataType = ftMemo) then
begin
DBMemo1.DataField :=Field.FieldName;
DBMemo1.Left := Rect.Left + DBGrid1.Left;
DBMemo1.Top := Rect.Top + DBGrid1.top;
DBMemo1.Width := Rect.Right - Rect.Left;
DBMemo1.Height := DBMemo1.Width;
DBMemo1.Visible := True;
end
else if (Field.DataType = ftGraphic) then
begin
DBImage1.DataField:=Field.FieldName;
DBImage1.Left := Rect.Left + DBGrid1.Left;
DBImage1.Top := Rect.Top + DBGrid1.top;
DBImage1.Width := Rect.Right - Rect.Left;
if not DBImage1.Picture.Bitmap.Empty then
DBImage1.Height := trunc(DBImage1.Picture.Height/DBImage1.Picture.Width * DBImage1.Width)
else DBImage1.Height :=DBImage1.Width;
DBImage1.Visible := True;
end;
end;

end;

procedure TForm1.DBGrid1ColExit(Sender: TObject);
begin
If DBGrid1.SelectedField.FieldName = DBMemo1.DataField then
DBMemo1.Visible := false
else If DBGrid1.SelectedField.FieldName = DBImage1.DataField then
DBImage1.Visible := false;

end;

procedure TForm1.DBGrid1KeyPress(Sender: TObject; var Key: Char);
begin
if (key <> chr(9)) then
begin
if (DBGrid1.SelectedField.FieldName = DBMemo1.DataField) then
begin
DBMemo1.SetFocus;
SendMessage(DBMemo1.Handle, WM_Char, word(Key), 0);
end
else if (DBGrid1.SelectedField.FieldName = DBImage1.DataField) then
begin
DBImage1.SetFocus;
SendMessage(DBImage1.Handle, WM_Char, word(Key), 0);
end;
end;
end;

上面的例子是把一个DBImage和DBMemo放进DBGrid
事先在Form上任意放置一个DBImage和DBMemo,设为不可见。
jabmoon 2001-11-08
  • 打赏
  • 举报
回复
动态申明一个,然后将它画在你需要的单元格中,用完之后释放。
taxi 2001-11-08
  • 打赏
  • 举报
回复
看Mastering Delphi6
liang_z 2001-11-08
  • 打赏
  • 举报
回复
放个控件在DBGRID上面不就可以了
作为ComponentOne Studio for .NET 和 ComponentOne Studio Enterprise的一部分,ComponentOne True DBGrid for .NET是我们受欢迎的ActiveX控件-True DBGrid Pro的.NET版本。它使用ADO.NET,最新的数据绑定技术,能完全管理数据库界面并提供强大灵活的浏览,编辑,添加和操作表格数据的能力。 True DBGrid Pro for ActiveX的爱好者会喜欢ComponentOne True DBGrid for .NET。因为它包含了您所依赖的特性:复合显示模式,具有独立或同步滚动的水平和垂直拆分,完全可定制网格界面(字体,颜色,图片和格式),增强键盘导航,健壮的打印选项以及其它更多特性! [特 性] ComponentOne True DBGrid for .NET具有您对我们畅销的ActiveX 控件True DBGrid Pro所期望的高级特性。以下是一个实例: 复合显示模式以最实用的格式表示数据:标准Outlook样式分组,可以动态的排序网格列;分层数据显示提供了增强的Master-Detail显示以及完全可编辑的下拉视图;窗体视图可在需要能修改的标准“窗体”重新定位数据;反转视图可将行转换为列,从而提供方便的“向下读”方式。 Microsoft Word- 和Excel-类型模型定制网格的外观:字体,颜色,图片以及格式化规范。从列和行边框…到前景图片…到正文环绕。能非常简单的让网格显示出您需要的结果。 具有定制滚动条的垂直和水平分割可以水平,垂直和两者同时分割网格!此外,您具有对滚动行为的控制:选择具有在每个分割独立工作的滚动条(对于需要从不同列的数据对比字段值时非常有效)或选择一个滚动条同步滚动复合分割。 2D和3D单元显示选择两维,三维和两者结合来控制单元外观符合您的要求。例如,您可能希望允许鼠标移动元素来获得一个3D外观。 Excel-类型单元格选项选择不但可以是任何行或列,而且可以是任何区域的单元。 丰富的滚动能力跟踪滚动条的位置并且在滚动条移动时给用户一个信息弹出框。 自动调整列尺寸(弹性模式)当网格水平尺寸调整时,通过适当改变列的尺寸保证您的数据可见。 增强键盘导航当用户按回车键时使用DirectionAfterEnter属性控制下一单元的相应位置。 FilterBar数据输入行实现定制用户操作,如增长搜索和记录集过滤。 标签属性可以向一个列附加任何类型的对象。 合并相邻单元从指定的列合并相邻数据行到一个不可编辑单元,或独立显示所有单元属性。 AutoDropdown和 AutoCompletion属性 · 通过减少下拉选项所需按键次数来简化数据输入。 · 自动将网格单元转换为True DBDropDown值 · 连接一个TDBDropDown控件到一个包含值和描述的表上,该表的下拉选项将自动的将描述映射到该值上。 · 健壮的打印选项 · 控件打印具有完备的功能,如缩放,调整到窗体,停止分页以及打印预览。

5,931

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧