有关DBGrid的一个简单问题(50分)

  • 主题发起人 主题发起人 newstation
  • 开始时间 开始时间
N

newstation

Unregistered / Unconfirmed
GUEST, unregistred user!
DBGrid中已经有两列分别为:人名、工作单位。
请问点击人名,如何能得到相应的工作单位(其中人名可以重复)
 
?????说清楚一点。
 
比如:DBGrid中有两个记录,格式如下
-------------------
人名 工作单位
-------------------
1 北京
1 上海
-------------------
点击第一行的人名1,如何找到相应的工作单位。
如果工作单位不在DBGrid中显示出来,如何根据人名找到相应的工作单位。


 
DBGrid中已经有两列分别为:人名、工作单位。
工作单位却不显示出来,hehe
工作单位还保密吗??
 
没错,工作单位是保密的。
----------
人名
----------
1
1
----------
点击第一行的人名1,如何找到相应的工作单位。
 
procedure TForm1.DBGrid1CellClick(Column: TColumn);
var
name,
work:string;
begin
name:=dbgrid1.Columns[0].Field.AsString;
work:=dbgrid1.Columns[1].Field.AsString;
showmessage(name+' '+work);
end;
 
procedure TForm1.DBGrid1CellClick(Column: TColumn);
var
name,
work:string;
begin
name:=DbGrid1.Fields[0].AsString;
work:=DbGrid1.Fields[1].AsString;
showmessage(name+' '+work);
end;
 
谢谢hua8hua。这种方法在人名和工作单位都显示出来时是正确的。

如果没有显示工作单位,只有人名,该怎样得到人名对应的正确工作单位呢?
在这种情况下,我试图把人名和工作单位都查找出来并放到DBGrid里,然后设置
TForm1.Field[1].visible:=false,也就是让工作单位隐藏起来,
但是此时用TForm1.Field[1].AsString却无法得到工作单位。
 
可以阿,你是怎么隐藏的?你在DBGrid1上面单击鼠标右健,单击Columns Editor,然后
Add all fields,然后选中工作单位,在左边的属性中设置visible为false ,然后:
procedure TForm1.DBGrid1CellClick(Column: TColumn);
var
czml,zqlb:string;
begin
czml:=DBGrid1.Fields[0].AsString;
zqlb:=DBGrid1.Fields[1].AsString;
form1.Caption:=czml+' '+zqlb;
end;
IS OK?????????
 
难道还没解决吗?我都试过了。
 
你是用sql语句的吧
with query1.create(self) do
begin
close;
sql.clear;
sql.add('select * from a');
try
open;
except
on e:exception do
...
end;
end
那你只要select * from A
但在Dbgrid手工创建一个column为人名,fieldname设为name
在运行时你只要用query1.fieldbyname('unit').asString读就是了
 
多人接受答案了。
 
后退
顶部