Mastodon
Programmierung

Create Editable ListBox

NOTE : This will also work with an OwnerDraw ListBox
But be sure you “pad” the Left Property of the Edit so
Any icons etc, do not get covered up by the TEdit.
And also be aware that there will be a bit of “flashing”
if you do use an OwnerDraw ListBox

[code lang=”delphi”]//This is in a Popup menu.
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;[/code]

[tags]Delphi, Components, ListBox[/tags]

0 Kommentare zu “Create Editable ListBox

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.