Title: How to create an editable ListBox
procedure TForm1.Change1Click(Sender: TObject);
var
I9: Integer;
ColInt: Integer;
LRect: TRect;
begin
LRect := ListBox1.ItemRect(ListBox1.ItemIndex);
{Set the size of the TEdit}
Edit1.Top := LRect.Top + 1;
Edit1.Left := LRect.Left + 1;
Edit1.Width := ListBox1.Canvas.TextWidth(ListBox1.Items.Strings[ListBox1.ItemIndex]) + 6;
Edit1.Height := (LRect.Bottom - LRect.Top) + 1;
Edit1.Text := ListBox1.Items.Strings[ListBox1.ItemIndex];
ListBox1.Selected[ListBox1.ItemIndex] := False;
Edit1.Visible := True;
Edit1.SelectAll;
Edit1.SetFocus;
end;
procedure TForm1.ListBox1Click(Sender: TObject);
begin
Edit1.Visible := False;
end;
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
var
I8: Integer;
begin
if Key = #13 then
begin
I8 := ListBox1.ItemIndex;
ListBox1.Items.Delete(ListBox1.ItemIndex);
ListBox1.Items.Insert(I8, Edit1.Text);
Edit1.Visible := False;
Key := #0;
end;
end;