Einzelnen Beitrag anzeigen

Popov
(Gast)

n/a Beiträge
 
#2

AW: Idee für Auswahlfunktion

  Alt 10. Okt 2012, 00:12
Statt Editfeld nimmst du Combobox oder Listbox. Unter Style (bei Combobox Voreinstellung csDropDown, bei Listbox lbStandard) ändern in csOwnerDrawFixed oder lbOwnerDrawFixed und schon hast du Zugriff auf OnDrawItem und kannst du alles in das Item Zeichnen.

//Edit:

Hier ein kleines Beispiel für Listbox. Vorausgesetzt in der Listbox befinden sich Dateipfade und man hat die Funktion GetIconFromFile, werden die Pfade (obwohl immer noch vorhanden) als Dateinamen ausgegeben und die passenden Icons werden davorgestellt. Die sind hier zwar nur 16x16, man kann die Bilder aber auch größer machen.

Delphi-Quellcode:
procedure TfListBox_FileBox1.ListBox1DrawItem(Control: TWinControl;
  Index: Integer; Rect: TRect; State: TOwnerDrawState);
var
  TopDifTxt, TopDifIco: Integer; // Gleicht die Höhendifferenz aus
  FileName: String;
begin
  with (Control as TListbox) do
  begin
    if odSelected in State then
      Canvas.Font.Color := clInactiveCaptionText
    else
      Canvas.Font.Color := clWindowText;

    FileName := ExtractFileName(Items[Index]);

    TopDifTxt := (ItemHeight div 2) - (Canvas.TextHeight(Items[Index]) div 2);
    TopDifIco := (ItemHeight div 2) - (16 div 2);

    Canvas.TextRect(Rect, Rect.Left + 16 + 2 + 2, Rect.Top + TopDifTxt,
      ExtractFileName(Items[Index]));

    Canvas.Draw(Rect.Left + 2, Rect.Top + TopDifIco,
      GetIconFromFile(Items[Index], True));
  end;
end;
Es wird so bei dir nicht funktionieren, denn da fehlen paar Funktionen, aber das Prinzip ist erkennbar

Geändert von Popov (10. Okt 2012 um 00:23 Uhr)
  Mit Zitat antworten Zitat