我做了一个含有自动完成功能的combobox控件,点击listbox中的候选项时报错,代码如下:(150分)

  • 主题发起人 主题发起人 迷惘的人
  • 开始时间 开始时间

迷惘的人

Unregistered / Unconfirmed
GUEST, unregistred user!
unit ComboListBox;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls,ExtCtrls;

type
TComboListBox = class(TComboBox)
private
{ Private declarations }
AutoListbox:TListbox;
mouseclick:boolean;
procedure listboxclick(sender:TObject);
protected
{ Protected declarations }
procedure Change;override;
public
{ Public declarations }

published
{ Published declarations }
//property left stored true;
end;

procedure Register;

implementation

procedure Register;
begin
RegisterComponents('Standard', [TComboListBox]);
end;

procedure TCombolistbox.listboxclick(sender:TObject);
begin
text:=AutoListbox.items[AutoListbox.itemIndex];
autolistbox.free;
mouseclick:=true;
end;

procedure TCombolistbox.Change;
var
i:integer;
begin
inherited;
if not mouseclick then
begin
if not assigned(Autolistbox) then
begin
AutoListbox:=TListbox.create(self);
AutoListbox.parent:=TWincontrol(self.Owner);
Autolistbox.top:=top+height;
Autolistbox.left:=left;
AutoListbox.width:=Width;
Autolistbox.height:=60;
Autolistbox.OnClick:=listboxClick;
mouseclick:=false;
end;
Autolistbox.items.clear;
for i:=0 to self.items.count-1 do
begin
if pos(self.text,self.items)>0 then
Autolistbox.Items.add(self.items);
//Autolistbox.Refresh;
end;
Autolistbox.sorted:=true;
end;
end;

end.
望高手们指点,谢谢。
 
报什么错?
在我这儿竟然没有问题。D6。
 
to kingdeezj:
我用的是d5。错误如下:当在combobox中的edit框中输入字符时,会弹出一个listbox,
里面有候选项,当选择一个字符串时报错。麻烦你帮我看看!
 
大富翁能真正回答问题的人太少了!
 
这个问题说起来很简单, 过程listboxclick是对象Autolistbox.OnClick的
事件响应,你在这中间将Autolistbox释放了,不出错才见鬼了。
 
多人接受答案了。
 
后退
顶部