有关dbgrid下picklist问题,有难度。高手请进!悬赏300分(200分)

  • 主题发起人 主题发起人 xjktthq
  • 开始时间 开始时间
X

xjktthq

Unregistered / Unconfirmed
GUEST, unregistred user!
1. 比如picklist有'line1','line2','line3','line4','+' 这五项(或更多)
而我某个字段下的值可能是'line1','line2','line3','line4'的任一组合,如'line1+line2'
不考虑在单元格中直接输入,只能在picklist中选(为了输入效率)如先选'line1'再选'+'再选'line'2
但选'line1'后选'+'时不是追加('line1+')而是替换了'line1'
如何才能追加?
2. 我改buttonstyle为Ellipsis,然后通过事件... 程序怎么写?

 
1.dbgrid.beforeedit
oldvalue:=fields[...].asString;

dbgrid.beforepost
fields[...].asString:=oldvalue+'+'+fields[...].asString

2.查帮助
 
最好用方法2。响应editbuttonclick
procedure TForm1.DBGrid1EditButtonClick(Sender: TObject);
begin
if dbgrid1.selectedindex = 0 then //用selectindex判断是哪一列的editbutton。
showmessage('hello'); //改为你自己的输入界面。如inputform.showmodal,在inputform
//中修改字段值。
end;
 
在 OnEditButtonClick 事件中写类似如下代码:
s := s + '+' + fields[..].asstring; //s 需要在 private 或public 中声明
在dbgrid的beforepost事件中写如下代码:
fields[..].asstring := s;
s := '';

其原理就是先将用户选择的几个项记录到一个变量s中,然后在beforepost时,为数据
字段重新赋值。
 
接受答案了.
 
后退
顶部