Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Listbox editierbar machen (https://www.delphipraxis.net/8607-listbox-editierbar-machen.html)

Wittlich 8. Sep 2003 18:29


Listbox editierbar machen
 
Hallo,

ich möchte eine Listbox editierbar machen. Zur Laufzeit soll mein Programm es ermöglichen mehrere Zeilen Text in eine Listbox einzugeben.
Ich dachte, das geht so wie bei Stringgrid über options und goediting, aber leider gibt es bei Listbox keine options, hm.

Wer weiß Rat?
Danke im Voraus
Wittlich

Dagon 8. Sep 2003 18:42

Re: Listbox editierbar machen
 
du musst wohl zuerst die werte in ein edit-feld eingeben lassen. und dann anschliessend den string in die listbox übergeben!

Alexander 8. Sep 2003 18:53

Re: Listbox editierbar machen
 
Probier das mal so:
Delphi-Quellcode:
{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} 

{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;


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:53 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz