![]() |
Listbox Eintrag fett machen
Hallo,
ich habe eine ListBox und in dieser würde ich gerne unterschiedliche Einträge fett machen. Also z.b. mal den ersten, dann mal den 2. und den 6. Eintrag. Das mit den Fett machen in der OnDraw-Procedure hab ich gemacht, ob ichs verstanden hab ist etwas anderes :) Mein Problem ist das ich nicht weiß, wie ich es abfragen kann das er z.b. den 1. und 2. Index normal läßt und den 3. Fett macht und den 4. wieder normal läßt. Die Test wo ich gemacht hab, hat er immer alle Einträge Fett gemacht. Könnte mir da jemand auf die Sprünge helfen? Besten Dank BenniP |
Re: Listbox Eintrag fett machen
hi,
Zitat:
gruss urbanbruhin |
Re: Listbox Eintrag fett machen
Du bekommst doch bei der prozedur index übergeben, so musst du einfach nur prüfen oder dieser 4 oder 6 ist oder sonstwas und dann deine methode ausführen.
EDIT: Hier der Code
Delphi-Quellcode:
procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer;
Rect: TRect; State: TOwnerDrawState); begin If (Index = 4) or (Index = 6) then //Hier die Methode zum fett zeichnen end; |
Re: Listbox Eintrag fett machen
@urbanbruhin:
Oh ja, Verzeihung:
Delphi-Quellcode:
@CLRS530:
procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer;
Rect: TRect; State: TOwnerDrawState); begin listbox1.canvas.FillRect(rect); Listbox1.canvas.Font.Style:= [fsbold]; Listbox1.canvas.TextOut(Rect.Left+2, Rect.Top, listbox1.Items[index]); end; Werd ich gleich probieren. |
Re: Listbox Eintrag fett machen
Zitat:
|
Re: Listbox Eintrag fett machen
Geht auch! Dankeschön für die schnelle und hilfreiche Antwort! :)
Nur noch eine abschließende Frage, kann ich in dieser OnDraw-Procdure auch for-Schleifen ausführen? |
Re: Listbox Eintrag fett machen
klar, du kannst da alles ausführen was du willst.
die schleife wird dann halt jedesmal bei einem ondraw-event aufgerufen. |
Re: Listbox Eintrag fett machen
Ok, jetzt hab ich mal meine OnDraw-Procdure erweitert.
In Listbox2 stehen die Einträge [0, 2, 5] drin. Die versuche ich mit einer For-Schleife auszulesen und dann mit dem Index zu vergleichen.
Delphi-Quellcode:
Allerdings, markiert er mir nur den fünften Eintrag, also den letzten der Listbbox, fett. Alle anderen sind normal.
procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer;
Rect: TRect; State: TOwnerDrawState); var i, i2, iihnhalt: integer; begin with (Control as TListBox).Canvas do begin for i:= 0 to listbox2.Count-1 do begin iihnhalt:= strtoint(listbox2.Items[i]); If Index = iihnhalt then begin FillRect(rect); Font.Style:= [fsbold]; TextOut(Rect.Left+2, Rect.Top, listbox1.Items[index]); end else begin FillRect(rect); Font.Style:= []; TextOut(Rect.Left+2, Rect.Top, listbox1.Items[index]); end; end; //DO end; //with end; |
Re: Listbox Eintrag fett machen
Das macht absolut kein Sinn wie du es machst.
OnDraw ist eine Prozedur die so lange aufgerufen wird, wie Elemente in der Listbox sind. Es geht also alle durch. Versuch es mal folgendermaßen:
Delphi-Quellcode:
EDIT : Habs getestet, das funzt so :)
procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer;
Rect: TRect; State: TOwnerDrawState); var iihnhalt: integer; begin with (Control as TListBox).Canvas do begin FillRect(rect); iihnhalt:= strtoint(listbox2.Items[Index]); If Index = iihnhalt then Font.Style:= [fsbold] else Font.Style:= []; TextOut(Rect.Left+2, Rect.Top, listbox1.Items[index]); end; //with end; Ist doch auch gleich viel angenehmer der Code oder? ;) |
Re: Listbox Eintrag fett machen
Ok ich werds mal testen. Danke schon mal im Vorraus :)
Edit: Ok, aber es funktioniert nur wenn die Anzahl der Listbox2 Einträge mit dem der Listbox1 übereinstimmt. Denn der Index geht ja von 0 bis zum Ende der Listbox1. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:49 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz