![]() |
Einzelnes Wort eines String in anderer Farbe?
Hallo Delphi Praxis.
Ich hab da wieder mal ein kleines Problemchen, welchem ich nicht so recht auf die Schliche komme. Ich wollte bei einer bestimmten Aktion eine Messagebox aufpoppen lassen mit einem kleinen Informationstext. Dort wäre es schön, wenn da ein einzelnes Wort des Strings sich farblich hervorhebt. Ist dies in Delphi machbar? Es würde vielleicht auch schon reichen, wenn das Wort in Fettdruck dargestellt wird z.B. wie folgt (allerdings mit Hilfe der Forummittel ;)) Das Produkt Eierkuchen befindet sich schon im Korb! oder Das Produkt Eierkuchen befindet sich schon im Korb! Vielen Dank im voraus. Gruß Michael |
Re: Einzelnes Wort eines String in anderer Farbe?
Ja. Mit entsprechenden Controls die Messageboxen besitzten die Textformatierungen z.B. im HTML oder RTF-Format unterstützten.
Von Haus aus bringt Delphi (und auch Windows) sowas nicht mit. Windows kann sowas AFAIK aber ab Vista mit dem sogenannten TaskDialog. |
Re: Einzelnes Wort eines String in anderer Farbe?
Liste der Anhänge anzeigen (Anzahl: 1)
Hi,
wenn du's ganz schlampig machen möchtest, dann ginge es so (von mir hast du das aber nicht :stupid: ): Bastel dir den Dialog selbst mittels neuem Formular und erzeuge darauf dynamisch Labels. DlgForm ist der Name des Formulars. Eine Funktion kannst du dir natürlich selbst daraus basteln:
Delphi-Quellcode:
Eine schönere Möglichkeit wäre, das ganze selbst zu zeichnen.
var
myLbl1, myLbl2, myLbl3: TLabel; begin // linkes Label myLbl1 := TLabel.Create(DlgForm); with myLbl1 do begin Autosize := true; Font.Color := clBlack; Parent := Form1; Top := 30; Left := 20; Name := 'myLbl1'; Caption := 'Das Produkt '; Show; end; // mittleres Label myLbl2 := TLabel.Create(DlgForm); with myLbl2 do begin Autosize := true; Font.Color := clRed; Parent := Form1; Top := 30; Left := 20 + myLbl1.Width; Name := 'myLbl2'; Caption := 'Eierkuchen'; Show; end; // rechtes Label myLbl3 := TLabel.Create(DlgForm); with myLbl3 do begin Autosize := true; Font.Color := clBlack; Parent := Form1; Top := 30; Left := 20 + myLbl1.Width + myLbl2.Width; Name := 'myLbl3'; Caption := ' befindet sich schon im Korb! '; Show; end; end; Edit: Mini-Beispiel im Anhang. |
Re: Einzelnes Wort eines String in anderer Farbe?
das ist nicht so einfach. Es gibt verschiedne Wörter.
Das Einfachste dürfte es wohl folgende Möglichkeit sein: Du nimmst ein Array und bastelst dir ein eigenen Record zu sammen: Font, Brush, Pen Wenn es nur Wort weise sein soll ist das noch recht einfach zu lösen: Jedes Wort packst du in einem Array und dieses Array zeichnest du intern in ein Buffer und zeichnest es dann einfach in eine PainBox... ich hoffe du kannst mir folgen. Jetzt brauchst du nur noch eine Funktion die in ein Array hinzufügen kann. z.b. könnte sie AddText heißen... jedes Wort wird durch die Leerzeichen begrenzt. Du brauchst für dein Dialog eine: Paintbox 2 TBitBtns und musst einige Einstellungen in From deines Dialogs machen. evlt. bastel ich gleich mal ein beispiel ! |
Re: Einzelnes Wort eines String in anderer Farbe?
Zwei Möglichkeiten (HTML und RTF) hat Bernhard ja schon genannt.
Beide sind leider relativ aufwändig im Programm zu erstellen. Es gäbe da noch eine vereinfachte Variante: ![]() Man müsste nun eine Procedure schreiben:
Delphi-Quellcode:
Die Tags, die von Delphi-Praxis benützt werden (z.B. [ B ] für Fettschrift) wären auch
procedure RenderEnrichedText(const txt:string; Canvas:TCanvas);
eine gute Alternative, das sie recht kurz sind. Auch die ![]() Wenn jemand den Source für obige Procedure schreiben würde und hier veröffentlicht - das wäre eine richtige Heldentat. :mrgreen: |
Re: Einzelnes Wort eines String in anderer Farbe?
|
Re: Einzelnes Wort eines String in anderer Farbe?
Sowas habe ich eigentlich schon lange vor... nur habe ich klassische Probleme mit Scrollen und mit dem Markieren... aber das währe ja hier nicht so wild.
Denn ich würde das so machen: Jetzt nur Wort weise oder doch lieber gleich Buchstaben weise ? Ich würde einfach die Scrollbox nutzen und dort eine Paintbox drauf... Mal sehen.... Eigentlich ist das keine schlechte Idee ! Ich nehme die BB Syntax die ist relativ leicht zu Pasen... |
Re: Einzelnes Wort eines String in anderer Farbe?
Alles klar. Vielen Dank für die ganzen Informativen Antworten. Ich bin dann allerdings doch zu dem Entschluss gekommen, dass er Aufwand für so eine Nichtigkeit dann doch eher in keinem Verhältnis zu dem Nutzen steht.
Ich denke dann werde ich das einfach in " " setzen und das muss reichen. Zumal diese eventuelle Nachricht höchstwahrscheinlich sowieso total selten vorkommen wird. Das konnte man wohl eher als Nice-To-Have einstufen. Bis dann und schönes Wochenende Michael |
Re: Einzelnes Wort eines String in anderer Farbe?
Liste der Anhänge anzeigen (Anzahl: 1)
Ich habe mal heute angefangen einen einfachen BB Code Paser zu erstellen.
Im Anhang ist ein Bild.... Zitat:
was haltet ihr davon ? |
Re: Einzelnes Wort eines String in anderer Farbe?
:thumb:
Freue mich schon drauf. Habe das mal für Postscript gebastelt, um in einem String unterschiedliche Formatierungen nutzen zu können. Lustig wird es hinterher, wenn es aufs Canvas soll und Du Dich dann wegen Neuaufsetzen des Stiftes um Textweiten und so kümmern darfst. Zum Glück gibt es da TextWidth :zwinker: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:21 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