AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Einzelnes Wort eines String in anderer Farbe?
Thema durchsuchen
Ansicht
Themen-Optionen

Einzelnes Wort eines String in anderer Farbe?

Ein Thema von gunfran · begonnen am 28. Sep 2007 · letzter Beitrag vom 30. Sep 2007
Antwort Antwort
Seite 1 von 2  1 2      
gunfran

Registriert seit: 25. Apr 2007
Ort: Hamburg
15 Beiträge
 
Delphi 10 Seattle Professional
 
#1

Einzelnes Wort eines String in anderer Farbe?

  Alt 28. Sep 2007, 10:48
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
Michael D.
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.173 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: Einzelnes Wort eines String in anderer Farbe?

  Alt 28. Sep 2007, 10:55
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.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Einzelnes Wort eines String in anderer Farbe?

  Alt 28. Sep 2007, 11:08
Hi,

wenn du's ganz schlampig machen möchtest, dann ginge es so (von mir hast du das aber nicht ):

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.
Angehängte Dateien
Dateityp: zip label_428.zip (5,0 KB, 11x aufgerufen)
  Mit Zitat antworten Zitat
mimi

Registriert seit: 1. Dez 2002
Ort: Oldenburg(Oldenburg)
2.008 Beiträge
 
FreePascal / Lazarus
 
#4

Re: Einzelnes Wort eines String in anderer Farbe?

  Alt 28. Sep 2007, 12:35
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 !
Michael Springwald
MFG
Michael Springwald,
Bitte nur Deutsche Links angeben Danke (benutzte überwiegend Lazarus)
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#5

Re: Einzelnes Wort eines String in anderer Farbe?

  Alt 28. Sep 2007, 13:01
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:
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.
Andreas
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#6

Re: Einzelnes Wort eines String in anderer Farbe?

  Alt 28. Sep 2007, 13:12
Hallo,

vielleicht hilft das DIHtmlLabel.

Gruß Hawkeye
  Mit Zitat antworten Zitat
mimi

Registriert seit: 1. Dez 2002
Ort: Oldenburg(Oldenburg)
2.008 Beiträge
 
FreePascal / Lazarus
 
#7

Re: Einzelnes Wort eines String in anderer Farbe?

  Alt 28. Sep 2007, 13:14
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...
Michael Springwald
MFG
Michael Springwald,
Bitte nur Deutsche Links angeben Danke (benutzte überwiegend Lazarus)
  Mit Zitat antworten Zitat
gunfran

Registriert seit: 25. Apr 2007
Ort: Hamburg
15 Beiträge
 
Delphi 10 Seattle Professional
 
#8

Re: Einzelnes Wort eines String in anderer Farbe?

  Alt 28. Sep 2007, 13:38
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
Michael D.
  Mit Zitat antworten Zitat
mimi

Registriert seit: 1. Dez 2002
Ort: Oldenburg(Oldenburg)
2.008 Beiträge
 
FreePascal / Lazarus
 
#9

Re: Einzelnes Wort eines String in anderer Farbe?

  Alt 28. Sep 2007, 15:03
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 ?
Miniaturansicht angehängter Grafiken
bildschirmfoto-bb-code_paser_384.png  
Michael Springwald
MFG
Michael Springwald,
Bitte nur Deutsche Links angeben Danke (benutzte überwiegend Lazarus)
  Mit Zitat antworten Zitat
s-off
(Gast)

n/a Beiträge
 
#10

Re: Einzelnes Wort eines String in anderer Farbe?

  Alt 28. Sep 2007, 15:10

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
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:34 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz