[GELÖST] Fetter Text in TBitBtn und TListBox
[GELÖST] Fetter Text in TBitBtn und TListBox
Liebe Community,
ich möchte einen Teil des Textes auf einem Button (TBitBtn) fett machen.
Hintergrund: ich habe mehrere Buttons, die etwas starten (Caption "Starte x" und "Starte y") und ich möchte die Komponente, die gestartet werden soll, gerne fett machen.
Ebenso möchte ich in einer Liste (TListBox) einen Teil des Textes von jedem Eintrag fett darstellen.
Hintergrund: in der Liste sind Einträge, die mit einem Zeitstempel (Datum und Uhrzeit) beginnen, anschließend kommt das eigentlich wichtige Unterscheidungsmerkmal, das ich hervorheben will.
System: Windows XP SP3
Lazarus 0.9.3.0
Geht das irgendwie?
Danke für Eure Hilfe!
Gruß
OLLI
ich möchte einen Teil des Textes auf einem Button (TBitBtn) fett machen.
Hintergrund: ich habe mehrere Buttons, die etwas starten (Caption "Starte x" und "Starte y") und ich möchte die Komponente, die gestartet werden soll, gerne fett machen.
Ebenso möchte ich in einer Liste (TListBox) einen Teil des Textes von jedem Eintrag fett darstellen.
Hintergrund: in der Liste sind Einträge, die mit einem Zeitstempel (Datum und Uhrzeit) beginnen, anschließend kommt das eigentlich wichtige Unterscheidungsmerkmal, das ich hervorheben will.
System: Windows XP SP3
Lazarus 0.9.3.0
Geht das irgendwie?
Danke für Eure Hilfe!
Gruß
OLLI
Zuletzt geändert von OLLI_S am Di 10. Jul 2012, 23:02, insgesamt 1-mal geändert.
Re: Fetter Text in TBitBtn und TListBox
Bei TBitBtn glaube ich nicht.
Bei TListBox kannst du mit Style lbOwnerDrawFixed im Event OnDrawItem zeichnen was du willst, also auch Text ausgeben wie du willst.
Bei TListBox kannst du mit Style lbOwnerDrawFixed im Event OnDrawItem zeichnen was du willst, also auch Text ausgeben wie du willst.
Re: Fetter Text in TBitBtn und TListBox
Hallo theo,
Ich würde gerne den Text "Hallo" normal ausgeben (nicht fett) und den Text "Welt" in fetter Schrift.
Was muss ich dazu bitte machen?
Danke für Eure Hilfe!
Gruß
OLLI
Da ich Anfänger bin und mich mit OnDrawItem nicht auskenne, benötige ich Hilfe.theo hat geschrieben:Bei TBitBtn glaube ich nicht.
Bei TListBox kannst du mit Style lbOwnerDrawFixed im Event OnDrawItem zeichnen was du willst, also auch Text ausgeben wie du willst.
Ich würde gerne den Text "Hallo" normal ausgeben (nicht fett) und den Text "Welt" in fetter Schrift.
Was muss ich dazu bitte machen?
Danke für Eure Hilfe!
Gruß
OLLI
Re: Fetter Text in TBitBtn und TListBox
Du musst auf den Listbox Canvas Zeichnen. Die Parameter bekommst du mit: ARect gibt die Koordinaten an, Index die akuelle Zeile.
Du brauchst bestimmt Canvas.FillRect und Canvas.TextRect oder TextOut.
Den Text musst du nat. auch selber auseinandernehmen. Mit Canvas.TextExtent kriegst du die Dimensionen.
Es ist nicht sehr einfach und ich werde es nicht für dich programmieren. Ich finde, wer "komisches Zeuch" haben will, soll sein eigenes Hirn gebrauchen.
Vielleicht kennt jemand eine Komponente, die so etwas besser kann.
Du brauchst bestimmt Canvas.FillRect und Canvas.TextRect oder TextOut.
Den Text musst du nat. auch selber auseinandernehmen. Mit Canvas.TextExtent kriegst du die Dimensionen.
Es ist nicht sehr einfach und ich werde es nicht für dich programmieren. Ich finde, wer "komisches Zeuch" haben will, soll sein eigenes Hirn gebrauchen.

Vielleicht kennt jemand eine Komponente, die so etwas besser kann.
Re: Fetter Text in TBitBtn und TListBox
Hallo,
ich habe eine generelle Frage bevor ich anfange in die Tiefe zu programmieren:
Wenn ich mit folgenden Befehle Text in der Listbox ausgebe:
dann wird dieser Text auch angezeigt.
Sobald ich aber in die Listbox klicke, ist er wieder weg.
Den Style der ListBox habe ich auf lbOwnerDrawFixed gestellt.
Ist das ein Problem, weil ich noch was machen muss oder funktioniert das ganze nicht?
Gruß
OLLI
ich habe eine generelle Frage bevor ich anfange in die Tiefe zu programmieren:
Wenn ich mit folgenden Befehle Text in der Listbox ausgebe:
Code: Alles auswählen
ListBox1.Canvas.TextOut(10,10,'Zeile 1');
ListBox1.Canvas.TextOut(10,30,'Zeile 2');
Sobald ich aber in die Listbox klicke, ist er wieder weg.
Den Style der ListBox habe ich auf lbOwnerDrawFixed gestellt.
Ist das ein Problem, weil ich noch was machen muss oder funktioniert das ganze nicht?
Gruß
OLLI
Re: Fetter Text in TBitBtn und TListBox
Du musst wie oben gesagt, im OnDrawItem Ereignis zeichnen und nicht irgendwann.
Dann auch nur das durch Index angegebene Item an der durch ARect beschriebenen Position.
Dann auch nur das durch Index angegebene Item an der durch ARect beschriebenen Position.
Re: Fetter Text in TBitBtn und TListBox
Hallo,
ich habe auch mal in Google gesucht und folgenden Beitrag gefunden:
http://www.delphipraxis.net/116296-vers ... tring.html" onclick="window.open(this.href);return false;
Im Zweiten Beitrag (vom Benutzer shmia) findet man einen recht brauchbaren Code.
Unter Lazarus muss man den noch geringfügig verändern, das habe aber selbst ich (Einsteiger) geschafft.
Bei mir funktioniert das ganze, ich kann beliebige Texte in die ListBox hinzufügen und die durch spezielle Code-Zeichen formatieren.
Gruß
OLLI
ich habe auch mal in Google gesucht und folgenden Beitrag gefunden:
http://www.delphipraxis.net/116296-vers ... tring.html" onclick="window.open(this.href);return false;
Im Zweiten Beitrag (vom Benutzer shmia) findet man einen recht brauchbaren Code.
Unter Lazarus muss man den noch geringfügig verändern, das habe aber selbst ich (Einsteiger) geschafft.
Bei mir funktioniert das ganze, ich kann beliebige Texte in die ListBox hinzufügen und die durch spezielle Code-Zeichen formatieren.
Gruß
OLLI
Re: Fetter Text in TBitBtn und TListBox
Das ist natürlich praktisch, wenn man sowas findet.
Das ist aber nicht gut ausgerichtet innerhalb der Zeile, probier mal OutputText zu ersetzen mit:

Das ist aber nicht gut ausgerichtet innerhalb der Zeile, probier mal OutputText zu ersetzen mit:
Code: Alles auswählen
procedure OutputText(const s:string);
var
tlen : Integer;
Styl:TTextStyle;
begin
Inc(Rect.Left, 2);
Styl.Layout:=tlCenter;
Styl.Alignment:=taLeftJustify;
Canvas.TextRect(Rect,Rect.Left,0,S,Styl);
tlen := Canvas.TextWidth(s); //Länge des Teilstrings bzw. Platzbedarf im Canvas ermitteln
Inc(Rect.Left, tlen); //Zum linken X-Wert der Canvas addieren (für den nächsten Teilstring)
end;