![]() |
Einzelne Wörter in TListBox fett zeichnen
Hallo,
tut mir leid, wenn ich euch schon wieder zur Hilfe ziehen muss, aber leider gibt es wohl noch kein entsprechendes Thema oder eine passende Hilfe auf Google. Also: Ich habe eine TListBox. Wie man ganze Einträge (also Zeilen) fett zeichnen kann, weiß ich ja. Nur, wie kann ich mit DrawItem nur einzelte Wörter oder Buchstaben fett zeichnen? Die Methode OnDrawItem kennt ja leider keinen Zeichenindex, sondern nur einen Zeilenindex. Gibt es hier auch eine Möglichkeit, dieses evtl. zu bekommen? MFG |
AW: Einzelne Wörter in TListBox fett zeichnen
Indem du den Text der gerade zu zeichnenden Zeile zerlegst und separat ausgibst.
Nehmen wir an, alle Ziffern sollen Fett geschrieben werden. In etwa würde ich mir das dann (ganz primitiv) so vorstellen:
Delphi-Quellcode:
var i:integer; s:string;
begin with TListBox(Sender), Canvas, Font do begin PenPos:=Rect.TopLeft; s:=Items[Index]; for i:=1 to Length(s) do begin if s[i] in ['0'..'9'] then Style:=[fsBold] else Style:=[]; TextOut(PenPos.X,PenPos.Y,s[i]); end; end; end; |
AW: Einzelne Wörter in TListBox fett zeichnen
Danke bis hierhin schonmal.
Nun hätte ich noch drei andere Fragen. Und zwar:
Ich hoffe, ihr könnt mir auch hier wieder kurz Hilfe leisten. Danke. |
AW: Einzelne Wörter in TListBox fett zeichnen
Bei der API Funktion Drawtext kannst du mit den Flags bestimmen, wie Tabs behandelt werden sollen.
|
AW: Einzelne Wörter in TListBox fett zeichnen
Zitat:
OwnerDrawVariable = Zeilenhöhe für jede Zeile separat bestimmen. Dann wird vor OnDrawItem ein OnMeasureItem ausgelöst, in dem du die Zeilenhöhe festlegen kannst. Zitat:
Vielleicht postest du mal deinen Code? |
AW: Einzelne Wörter in TListBox fett zeichnen
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
Zitat:
Zitat:
MFG und Danke bis hierhin; Dennis |
AW: Einzelne Wörter in TListBox fett zeichnen
Zitat:
Zitat:
Wie soll man dir helfen, wenn man nicht weiß, wie du die Texte ausgibst. |
AW: Einzelne Wörter in TListBox fett zeichnen
Ich würde einfach TJvHTListBox aus der JVCL verwenden. Da kannst du einfach HTML zur Formatierung nutzen. Das ist sicher ein klein wenig langsamer, aber in einer Listbox hat man ja auch kaum tausende von Einträgen.
|
AW: Einzelne Wörter in TListBox fett zeichnen
Hallo,
Ich habe noch keine OnDrawItem-Prozedur für DIESE ListBox, da ich es im Grunde nur für den Highlight des jeweiligen Texts zwischen dem Zeichen #9 und : brauche. Das ist die erste ListBox. Die zweite, die man auch auf dem Screenshot meines letzten Beitrags sehen kann, hat folgenden Code:
Delphi-Quellcode:
TfmChat = class(TForm)
public { Public-Deklarationen } NickName: String; //Anzeigename end; { ... } procedure TfmChat.lbPeopleDrawItem(Control: TWinControl; Index: Integer; Rect: TRect; State: TOwnerDrawState); { Eigenen Namen fett anzeigen } begin if Index = lbPeople.Items.IndexOf(NickName) then begin (Control as TListBox).Canvas.Font.Style := [fsBold]; end else begin (Control as TListBox).Canvas.Font.Style := []; end; with Control as TListBox do begin Canvas.Pen.Color := lbPeople.Color; Canvas.FillRect(Rect); Canvas.TextOut(Rect.Left + 2,Rect.Top - 1,Items[Index]); end; end; |
AW: Einzelne Wörter in TListBox fett zeichnen
Zitat:
Das hast du mit
Delphi-Quellcode:
so vorgegeben.
Canvas.TextOut(Rect.Left + 2,Rect.Top - 1,Items[Index]);
Mit Rect.Top-1 positionierst du den Text 1 Pixel oberhalb der Zeile. Abhilfe:
Delphi-Quellcode:
Das "FillRect" kannst du dir dann auch sparen.
Canvas.TextRect(Rect,Rect.Left+2,Rect.Top-1,Items[Index]);
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:57 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