我看到有些DBGrid显示的字段下的值,有下拉菜单!是在怎么做到的?
解决方案 »
- 如何写查询?请高手赐教。
- 为什么DBGridEh控件最左边显示出来的行号列不能自适应列宽?
- fastReport4.3报表,有金额大小写转换的函数吗?
- 如何捕捉得到 WebBrowser 执行页面中的js脚本window.close() 的事件??
- 在VC下用ATL写一个COM的DLL,在VB中调用时没有错误,为什么用同样的数据在Delphi中执行到某一个函数时就会抛出错误。谢谢
- 如何向另一程序传送字符?
- Bde,怎样将Table中的记录清空......有会的吗?
- 一个网络数据库的问题
- Iphone的动画翻页效果,Delphi实现的思路
- 用QuickRep生成的报表在HP上打印时总是分页,可怎么办呢?
- 初学者问题:如何隐藏BITBTN所加载的图片!
- 好问题!!!高分数!!!快快来抢呀!!!
=============================
放一个memo,假设另一张表用query2连接。
memo1.clear;
query2.Open;
query2.First;
while not query2.eof do
begin
memo1.Lines.AddStrings(query2['某个字段']);//必须是string型字段
query2.next;
end; DBGrid1.Columns[1].PickList:=Memo1.Lines;
with DBGri1.selectedfield do
if (FieldName='field1') then //field1下拉显示FieldMc值
with adoquery1 do
begin
close;
sql.Clear ;
sql.Add('select distinct fieldmc from table1 ');//信息来源表
open;
if recordcount>0 then
begin
first;
with DBgrid1 do
for j:=1 to FieldCount do
if columns[j].FieldName ='fieldmc' then
begin
columns[j].PickList.Clear;
for i:=1 to recordcount do
begin
columns[j].PickList.Add(fieldbyname('fieldmc').value);
next;
end;
break;
end;
end;
close;
end;
不过Lookup是针对query(Adoquery)实现的
鼠标双击query(adoquery),鼠标单击右键,
New Field设置Field type=Lookup
然后设置相关属性即可!
添加值,楼上newsofter(横空出世小霸王) 说得好全
delphi6数据库使用程序设计100例
人民邮电出版社
书上第一个例子就是你提出问题的
还有过于dbgrid的排序问题
……;//ColEnter中sql的where 条件
dbgNameColEnter(self);注意DBGird的options->dgindicator设为true
//动态添加dbgrid的picklist值;
h:=0;
with AdoQuery2 do
begin
first ;
while not eof do
begin
DBGrid1.Columns[1].PickList.Add(FieldByName('机构名称').AsString);
inc(h);
next ;
end;
end;