控件组和的简单问题 ( 积分: 76 )

  • 主题发起人 主题发起人 funxu
  • 开始时间 开始时间
F

funxu

Unregistered / Unconfirmed
GUEST, unregistred user!
求一个组和控件的简单例子最近在学组和控件,但是找不到好的教材,希望大家能给点儿指导,不是在frame里组合好再注册的那种的组合控件
就是将一个listbox一个button一个edit组合成combobox的样子,属性和事件继承listbox即可,button的caption我设为了一个向下箭头,button的点击事件里让listbox显示,listbox点击后消失(或者listbox向下移动也可以),三个控件位置排列按照combobox设定,至于listbox的当前项随鼠标移动我还不知道怎么做
分不多请各位帮帮忙,要是有其他组和控件的例子,差不多的我也可以再给50分
 
求一个组和控件的简单例子最近在学组和控件,但是找不到好的教材,希望大家能给点儿指导,不是在frame里组合好再注册的那种的组合控件
就是将一个listbox一个button一个edit组合成combobox的样子,属性和事件继承listbox即可,button的caption我设为了一个向下箭头,button的点击事件里让listbox显示,listbox点击后消失(或者listbox向下移动也可以),三个控件位置排列按照combobox设定,至于listbox的当前项随鼠标移动我还不知道怎么做
分不多请各位帮帮忙,要是有其他组和控件的例子,差不多的我也可以再给50分
 
ListBox的当前项随鼠标移动:
procedure TFrm_SeMbl.ListBox_ListMouseMove(Sender: TObject; Shift: TShiftState;
X, Y: Integer);
var
p:TPoint;
begin
P.X:=X;
P.Y:=Y;
ListBox_List.ItemIndex:=ListBox_List.ItemAtPos(P,true);
end;
 
首先感谢DragonInCity兄的支持,不过我的贴子主要问得是组合控件,得到结果后我会分配积分的,这么多天没人理,有够郁闷的,给个类似的组合控件的例子总可以吧,嫌分少诸位大侠开个价......
 
留下EMAIL,给你传个
功能简单,但用来学习还是可以的
 
感谢感谢funxu@sohu.com
另外我自己瞎做了一个可是根本不能用,谁能提携"小菜"我一下啊

unit myListBox1;

interface

uses
Windows, Messages, SysUtils, Classes, Controls, StdCtrls;

type
TmyListBox1 = class(TListBox)
private
{ Private declarations }
fmyedit:TEdit;
fmyButton:TButton;
procedure btclick(sender:tobject);
procedure lsclick(sender:tobject);
protected
{ Protected declarations }
public
{ Public declarations }
constructor create(aowner:tcomponent);override;
destructor Destroy; override;
published
{ Published declarations }
end;

procedure Register;

implementation

procedure Register;
begin
RegisterComponents('Samples', [TmyListBox1]);
end;

constructor TmyListBox1.create(aowner:tcomponent);
begin
inherited Create(AOwner);
visible:=false;
height:=100;
width:=120;
update;
fmyedit:=TEdit.Create(self);
fmyedit.Left:=self.Left;
fmyedit.Top:=self.Top-21;
fmyedit.height:=20;
fmyedit.Width:=120;
fmyButton:=TButton.Create(self);
fmybutton.Width:=20;
fmybutton.height:=20;
fmybutton.Caption:='▼';
fmybutton.Left:=self.Left+121;
fmybutton.OnClick:=btclick;
self.OnClick:=lsclick;
end;

destructor TmyListBox1.Destroy;
begin
inherited Destroy;
end;

procedure TmyListBox1.btclick(sender:tobject);
begin
self.Visible:=true;
end;

procedure TmyListBox1.lsclick(sender:tobject);
begin
self.Visible:=false;
fmyedit.Text:=self.Items.Strings[self.ItemIndex];
end;
end.
 
没有收到..我讨厌被当作咸鱼晾着
 
组合的话,你要用SetBounds,光是用Left、Top等定义坐标是不行的

具体你可以参考Delphi6以上版本中有个LabelEdit控件的源码,他就是一个Label和一个Edit的组合控件
 
不好意思那个tlabeledit我实在看不懂,有没有简单一点的?
 
帮顶一下,我也想弄类是的一个,哈哈
 
多人接受答案了。
 
后退
顶部