关于在StringGrid中使用下拉框的问题?(内容见内) ( 积分: 50 )

  • 主题发起人 主题发起人 rickyjia
  • 开始时间 开始时间
R

rickyjia

Unregistered / Unconfirmed
GUEST, unregistred user!
公司现在开发一个软件,有一部分内容需要用到StringGrid,并且在StringGrid中使用下拉框,功能都基本上实现了,但是现在有个问题,就是StringGrid过长,我一拖动滚动条,下拉框也跟着跑,就使得下拉框不在原来的位置了,我想问一下,有没有办法使得下拉框的位置固定在某个位置,不管如何拖动滚动条,都不会出现位置错位的问题。
 
公司现在开发一个软件,有一部分内容需要用到StringGrid,并且在StringGrid中使用下拉框,功能都基本上实现了,但是现在有个问题,就是StringGrid过长,我一拖动滚动条,下拉框也跟着跑,就使得下拉框不在原来的位置了,我想问一下,有没有办法使得下拉框的位置固定在某个位置,不管如何拖动滚动条,都不会出现位置错位的问题。
 
你的下拉框的位置是根据鼠标来确定的吧.
你可以设一个逻辑变量在下拉框得到焦点的时候将其设为false,而只有当其为true的时候才执行你显示的操作
 
不清楚你的下拉框是通过什么方法实现的。

不过,在拖动滚动条时关闭下拉框就OK了。

就像ComboBox一样,一失去焦点就关才下拉框,而你的下拉框是针对于单元格,这个单元格就相当于ComboBox
 
在StringGrid的DrawCell事件里面判断如果获得焦点的单元格需要下拉框,并且下拉框并未显示则将ComboBox画出,否则设置ComboBox的visible为false
比如
if ACol=2 then begin
DrawComboBox(Rect, Cell[ARow, ACol].Text;
end;

procedure DrawComboxBox(...)
begin
if ComboBox1.Showing then begin
SetBounds(ComboBox1, Rect)
left := xxx;
end;
end;
 
后退
顶部