delphi 在 ListBox 中放置一個可編輯 item 的 TEdit 組件  
官方Delphi 学习QQ群: 682628230(三千人)
频道

delphi 在 ListBox 中放置一個可編輯 item 的 TEdit 組件


 
type
   TForm1 = class(TForm)
     ...
   
private
     ListEdit : TEdit;
     
procedure ListEditKeyPress(Sender: TObject; var Key: Char) ;
   
end;


//create the TEdit and make ListBox its parent
procedure TForm1.FormCreate(Sender: TObject) ;
begin
   ListEdit := TEdit.Create(self) ;
   ListEdit.Visible := false;
   ListEdit.Ctl3D := false;
   ListEdit.BorderStyle := bsNone;
   ListEdit.Parent := ListBox1;
   ListEdit.Width := ListBox1.ClientWidth;
   ListEdit.OnKeyPress := ListEditKeyPress;
end;

//ListView Item selected - position the Edit
procedure TForm1.ListBox1Click(Sender: TObject) ;
var
   ii : integer;
   lRect: TRect;
begin
   ii := ListBox1.ItemIndex;
   
if ii = -1 then exit;

   lRect := ListBox1.ItemRect(ii) ;
   ListEdit.Top := lRect.Top +
1;
   ListEdit.Left := lRect.Left +
1;
   ListEdit.Height := (lRect.Bottom - lRect.Top) +
1;

   ListEdit.Text := ListBox1.Items.Strings[ii];
   ListBox1.Selected[ii] := False;

   ListEdit.Visible := True;
   ListEdit.SelectAll;
   ListEdit.SetFocus;
end;

//apply editing when enter key is pressed
procedure TForm1.ListEditKeyPress(Sender: TObject; var Key: Char) ;
var
   ii: Integer;
begin
   if Key = #13 then
   begin
     ii := ListBox1.ItemIndex;
     ListBox1.Items.Delete(ii) ;
     ListBox1.Items.Insert(ii, ListEdit.Text) ;
     ListEdit.Visible := False;
     Key := #0;
   
end;
end;

//hide Edit when ListBox looses the focus
procedure TForm1.ListBox1Exit(Sender: TObject) ;
begin
   ListEdit.Visible := false;
end;


推荐分享
图文皆来源于网络,内容仅做公益性分享,版权归原作者所有,如有侵权请告知删除!
 

Copyright © 2014 DelphiW.com 开发 源码 文档 技巧 All Rights Reserved
晋ICP备14006235号-8 晋公网安备 14108102000087号

执行时间: 0.036157846450806 seconds