快帮帮我 神呀救救我吧:) (200分)

  • 主题发起人 主题发起人 chenyushanshan0
  • 开始时间 开始时间
C

chenyushanshan0

Unregistered / Unconfirmed
GUEST, unregistred user!
我动态创建了一个combobox控件,以drawgride做为它的Parent,怎么创建后combobox
不能实现下拉?而如果使用panel或其它的控件做为它的parent,就可以
下面是个样例:
procedure TForm1.Button1Click(Sender: TObject);
var
mycombo:tcombobox;
begin
mycombo:=tcombobox.Create(self);
mycombo.Parent:=DrawGrid1;
mycombo.Items.Add('救');
mycombo.Items.Add('救');
mycombo.Items.Add('我');
mycombo.Items.Add('吧');
end;
 
[:(!][:(!][:(!][:(!]
[:(!][:(!][:(!]
[:(!][:(!]
[:(!]
 
你是不是湖南人?这么zhu
谁会救你
可能是你的 parent不支持下拉
 
猪也救不了你。
 
还是把你的标题改了吧, 没有人想当猪的
 
好像需要发送消息
 
俺是山东人,俺觉得猪挺好的:)[:D]
 
DrawGrid以及StringGrid是不支持列表框的下拉操作的。
 
to 卷起千堆雪tyn:
为什么不支持?
 
我想你是希望在GRID中能显示下拉框,但何必这么累,你放一个下拉框上去,与GRID的CELL一样
大小,然后动态改变其位置,不就可以实现了吗?前面有许多这样的例子,你可以搜一下.
 
给你一个变通的办法,试试看有没有问题——
......
mycombo:=tcombobox.Create(self);
mycombo.Parent := Self;//Form1
Windows.SetParent(mycombo.Handle, DrawGrid1.Handle);
......
 
5rain6sky大侠的方法可行,快给他加分吧!
你被救活了,[:D]
 
var
Rect: TRect;
Pnt: TPoint;
begin
with SpaceGrid do
if Col = 2 then
begin
with SpacingCombo do
ItemIndex := Items.IndexOf(Cells[2, Row]);
Rect := CellRect(2, Row);
with Rect do
begin
Pnt :=
SpacingCombo.Parent.ScreenToClient((SpaceGrid.ClientToScreen(Point(Left,
Top))));
[red]SpacingCombo.SetBounds(Pnt.X, Pnt.Y, Right - Left, Bottom - Top);[/red]
SpacingCombo.Show;
end;
end;
 
谢谢各位,尤其感谢5rain6sky
我的这个问题解决了:)我的目的是想做一控件继承drawgrid,在原有的基础上实现
其它控件的动态添加如tedit,tcombobox,tdbedit等许多控件。这样就对数据库操作
有利了,可以动态的修改。
由于我的积分少,我只能在此向各位再请教一个问题。大家都没有发对意见吧:)
我在drawgrid中把所有的控件都画好后,最后保存该设计好的模版。
我在新的应用程序动态的读入该模版,但我想让用户看到一个好看的界面,就是想把
每个控件显示成平面,只有当某个控件获得输入焦点时,才显示其原样。
如memo,edit,dbedit等没有输入焦点时,可以把它的Borderstyle设成bsNone,当获得输入焦点后,
可设成bsSingle 这样看起来平平的,多好看。
但像ComboBox,DateTimePicker没有该属性,我该怎么办?还有把它们的右边小按钮也去掉
大家可以看看delphi应用程序中Database菜单下的Explore,选中一个database,看它右边的
definition, delphi是怎样做出来的? 还有怎样在程序运行过程中调整drawgrid每个单元格
的宽度?就像你可以 随意调整definition中两列的宽度那样


 
救活了就赶快给人家加分,还等什么呀!
 
Hi,伙计,你在山东哪里?
htxy99@263.net
 
多人接受答案了。
 
后退
顶部