Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
Delphi 12 Athens
|
Re: Schrifttyp der Items in ListBox
25. Mai 2008, 21:06
Meine Delphi 7-Hilfe sagt zu "OnDrawItem":
Zitat:
Es folgt eine typische Behandlungsroutine für das Ereignis OnDrawItem. Hier wird in einem Listenfeld mit dem Stil lbOwnerDrawFixed ein Bitmap links neben jedem String gezeichnet.
Windows:
Delphi-Quellcode:
procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer; Rect:TRect;State: TOwnerDrawState);
var
Bitmap: TBitmap; { Temporäre Variable für Bitmap }
Offset: Integer; { Offset für Text }
begin
with (Control as TListBox).Canvas do { Ausgabe in Zeichenfläche der Liste, nicht im Formular }
begin
FillRect(Rect); { Rechteck löschen }
Offset := 2; { Standard-Offset }
Bitmap := TBitmap((Control as TListBox).Items.Objects[Index]); { Bitmap abrufen }
if Bitmap <> nil then
begin
BrushCopy(Bounds(Rect.Left + Offset, Rect.Top, Bitmap.Width, Bitmap.Height),
Bitmap, Bounds(0, 0, Bitmap.Width, Bitmap.Height), clRed); { Bitmap anzeigen}
Offset := Bitmap.width + 6; { Vier Pixel zwischen Bitmap und Text einfügen}
end;
TextOut(Rect.Left + Offset, Rect.Top, (Control as TListBox).Items[Index]) { Text anzeigen }
end;
end;
Plattformübergreifend:
Delphi-Quellcode:
procedure TForm1.ListBox1DrawItem(Sender: TObject; Index: Integer; Rect:TRect; State: TOwnerDrawState);
var
Bitmap: TBitmap; { Temporäre Variable für Bitmap }
Offset: Integer; { Offset für Text }
begin
with (Sender as TListBox).Canvas do { Ausgabe in Zeichenfläche der Liste, nicht im Formular }
begin
FillRect(Rect); { Rechteck löschen }
Offset := 2; { Standard-Offset }
Bitmap := TBitmap((Sender as TListBox).Items.Objects[Index]); { Bitmap abrufen }
if Bitmap <> nil then
begin
Draw(Rect.Left + Offset, Rect.Top, Bitmap); { Bitmap anzeigen}
Offset := Bitmap.width + 6; { Vier Pixel zwischen Bitmap und Text einfügen}
end;
TextOut(Rect.Left + Offset, Rect.Top, (Sender as TListBox).Items[Index]) { Text anzeigen }
end;
end;
Detlef "Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
|
|
Zitat
|