Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Einzelnes Wort eines String in anderer Farbe? (https://www.delphipraxis.net/100444-einzelnes-wort-eines-string-anderer-farbe.html)

gunfran 28. Sep 2007 10:48


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

Bernhard Geyer 28. Sep 2007 10:55

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.

Matze 28. Sep 2007 11:08

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:
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;
Eine schönere Möglichkeit wäre, das ganze selbst zu zeichnen.
Edit: Mini-Beispiel im Anhang.

mimi 28. Sep 2007 12:35

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 !

shmia 28. Sep 2007 13:01

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: http://en.wikipedia.org/wiki/Enriched_text
Man müsste nun eine Procedure schreiben:
Delphi-Quellcode:
procedure RenderEnrichedText(const txt:string; Canvas:TCanvas);
Die Tags, die von Delphi-Praxis benützt werden (z.B. [ B ] für Fettschrift) wären auch
eine gute Alternative, das sie recht kurz sind.
Auch die Wiki-Syntax wäre gut geeignet, da weit verbreitet.
Wenn jemand den Source für obige Procedure schreiben würde und hier veröffentlicht - das wäre eine richtige Heldentat. :mrgreen:

Hawkeye219 28. Sep 2007 13:12

Re: Einzelnes Wort eines String in anderer Farbe?
 
Hallo,

vielleicht hilft das DIHtmlLabel.

Gruß Hawkeye

mimi 28. Sep 2007 13:14

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...

gunfran 28. Sep 2007 13:38

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

mimi 28. Sep 2007 15:03

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:

Dies ist ein einfacher Beispiel Text ohne
Formatierung. Mal sehen ob er angezeigt wird.

Jetzt kommt die Formatierung:
[fg=red]Rot[/fg] [fg=blue]Blau[/fg]
[fg=orange]Dieser Test ist Orange und [fg=red2]Rot2 [fg=blue]Haus [fg=chocolate]Tane Tane Tane[/fg]Haus Haus Haus[/fg]
Garten Garten Garten[/fg]u77utt5[/fg]f
Text Text Text Text
Solche Texte Kann er da stellen. Der Rest kommt noch.
was haltet ihr davon ?

s-off 28. Sep 2007 15:10

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.
Seite 1 von 2  1 2      

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