怎么实现下面的这种效果?
我不想用combobox
[解决办法]
自己弹一个alwaysontop的没有边框窗体出来。
[解决办法]
用edit加memo or listview就可以自己控制了
[解决办法]
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
lst1: TListBox;
edt1: TEdit;
procedure FormCreate(Sender: TObject);
procedure edt1Click(Sender: TObject);
procedure edt1Exit(Sender: TObject);
procedure lst1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
edt1.Text := '';
lst1.Hide;
// 随便加几项
lst1.Items.Add('dsfsfsff');
lst1.Items.Add('多少顺丰到付');
lst1.Items.Add('xzxccvvxv');
lst1.Items.Add('dsf的23233sfsff');
lst1.Top := edt1.Top + edt1.Height;
lst1.Left := edt1.Left;
lst1.Width := edt1.Width;
lst1.Height := lst1.ItemHeight * lst1.Items.Count + 4;
end;
procedure TForm1.edt1Click(Sender: TObject);
begin
if lst1.Items.Count > 0 then
lst1.Show;
end;
procedure TForm1.edt1Exit(Sender: TObject);
begin
lst1.Hide;
end;
procedure TForm1.lst1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
lst1.ItemIndex := lst1.ItemAtPos(Point(x, y), True);
end;
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if PtInRect(ClientRect, Point(x, y)) then
lst1.Hide;
end;
end.