如何在StringGrid控件显示的每个Cell中(5行7列)嵌入ListBox?请高手帮忙,谢谢! ( 积分: 50 )

  • 主题发起人 主题发起人 jog81
  • 开始时间 开始时间
J

jog81

Unregistered / Unconfirmed
GUEST, unregistred user!
如题。我尝试了好多次:
var DaList:TListBox;Rect:TRect;Pnt:TPoint


CellRect(Col,Row);
with Rect do
begin
Pnt := DaList.Parent.ScreenToClient((ClientToScreen(Point(Left, Top))));
DaList.SetBounds(Pnt.X, Pnt.Y, Right - Left, Bottom - Top);
DaList.Show;
end;

这是我加的代码,但是一直出错!
分不够可以再加,谢谢各位!
 
如题。我尝试了好多次:
var DaList:TListBox;Rect:TRect;Pnt:TPoint


CellRect(Col,Row);
with Rect do
begin
Pnt := DaList.Parent.ScreenToClient((ClientToScreen(Point(Left, Top))));
DaList.SetBounds(Pnt.X, Pnt.Y, Right - Left, Bottom - Top);
DaList.Show;
end;

这是我加的代码,但是一直出错!
分不够可以再加,谢谢各位!
 
换个其他控件吧:AdvStringGrid1,很好用,合你要求
 
高手在哪呀?[?][:(]
 
是怎样错?
 
要先创建对象
DaList:= TListBox.create();
然后才能使用.
用完后要free;
 
你看看这个就知道了:

if EditMode and (StringGrid2.Col=3) then
begin
if unt_ModUI.GetIdFromStringGrid(StringGrid2)='' then
begin
FieldStringGridExitForInputDataType:=true;
rect := StringGrid2.CellRect(StringGrid2.col,StringGrid2.row);
combobox1.Left:= rect.left+StringGrid2.left;
combobox1.top:=rect.top+StringGrid2.top;
combobox1.width:=rect.right-rect.left;
combobox1.height:=rect.bottom-rect.top;
combobox1.DroppedDown:=true;
combobox1.visible:=true;
combobox1.setfocus;
end
else
begin
StringGrid2.Col := StringGrid2.Col+1;
//ShowMessage('该字段已保存到数据库,不能修改数据类型!');
end;
end
else
begin
combobox1.Visible := false;
end;
 
我现在已经可以创建Listbox了,但却不知道如何停止,因为新的控件加载后一直在刷新ListBox。请各位高手指点迷津。
 
后退
顶部