如题
如何能让dbgrid1.columns[i].picklist在选中单元格时就自动弹出列表来?
如何能让dbgrid1.columns[i].picklist在选中单元格时就自动弹出列表来?
解决方案 »
- ADOConnect连接数据库怎么处理参数不对的情况啊!
- 请教大家一个关于pchar 的问题
- TMediaPlayer 播放mp3声音刺耳
- ADOQuery的事务操作!!!HELLP!HELP!HELP!
- 高分请教-----做一个视频聊天的程序都要用到什么技术?
- 如何创建Help文档?
- 高分求购QuickCHM2.01的注册码
- 如何在程序运行时,设置暂停几秒......给你100分?
- 怎样判断日期字段为空?(ADO/ACCESS)
- wm_keydown 中 wparam 和 Lparam 中高位和低位所表示的意思是何东西
- 如何得到 双击 TREEVIEW的上的节点内容
- 如何调用windows画图板程序
{搞了一个土方法:
需要一个Timer
测试时,点击PickList不为空值的格子的靠右端位置(即应出现小三角的那里),静候0.5秒
}procedure TForm1.DBGrid1CellClick(Column: TColumn);
begin
if Column.PickList.Count>0 then begin
mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
mouse_event(MOUSEEVENTF_LEFTUp, 0, 0, 0, 0);
Timer1.Enabled := True;
end;
end;procedure TForm1.Timer1Timer(Sender: TObject);
begin
mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0);
mouse_event(MOUSEEVENTF_LEFTUp, 0, 0, 0, 0);
Timer1.Enabled := False;
end;procedure TForm1.FormCreate(Sender: TObject);
begin
Timer1.Interval := 600;
Timer1.Enabled := False;
end;
{附:用空格键展开DBGrid网格中的PickList的方法}
{
作者: creation_zy
日期: 2006-3-9
}
procedure TForm1.DBGrid1KeyPress(Sender: TObject; var Key: Char);
var
i, x, y:Integer;
MyEdit:TInplaceEdit;
begin
if Key=#32 then
begin
for i:=0 to Pred(DBGrid1.ComponentCount) do
if DBGrid1.Components[i] is TInplaceEdit then
begin
Key:=#0;
MyEdit:=TInplaceEdit(DBGrid1.Components[i]);
x:=MyEdit.BoundsRect.Right-MyEdit.BoundsRect.Left-4;
y:=4;
PostMessage(MyEdit.Handle,WM_LBUTTONDOWN,1,x+y shl 16);
PostMessage(MyEdit.Handle,WM_LBUTTONUP,0,x+y shl 16);
break;
end;
end;
end;
var
X, Y: Integer;
AEdit: TInplaceEdit;
begin
DBGridEh1.EditorMode := True;
AEdit := DBGridEh1.InplaceEditor;
X := AEdit.Width - 1;
Y := AEdit.Height - 1;
AEdit.Perform(WM_LBUTTONDOWN, 0, MakeLong(X, Y));
AEdit.Perform(WM_LBUTTONUP, 0, MakeLong(X, Y));
end;
在CellClick事件中写上这个。跟源代码看了好久才搞定的
建议你加上Column的判断
同时发现在ColEnter事件中也要加上,不过个人认为用按键选中单元格就弹出列表不太友好。
而且第一项选中