Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi RichEdit. String in Bold hinzufügen. (https://www.delphipraxis.net/108478-richedit-string-bold-hinzufuegen.html)

k4ni 14. Feb 2008 12:02


RichEdit. String in Bold hinzufügen.
 
Hallo DP,

ich hab schon fleißig gesucht, aber nur möglichekiten gefunden in denen man beim OnChange oder so strings sucht und dann Bold macht.
Nur ich will schon von anfang an einen String im bold format hinzufügen. Also mit

RichEdit.Lines.Add(String, fsBold);
Oder so ähnlich :/

danke :)

Blackheart 14. Feb 2008 12:07

Re: RichEdit. String in Bold hinzufügen.
 
SelAttributes

k4ni 14. Feb 2008 12:34

Re: RichEdit. String in Bold hinzufügen.
 
Ohh, danke.
Doch wie kann ich eine einzige linie machen bei der, e.g. der erste teil Fett ist, und der 2. normal?
Weil das:
Delphi-Quellcode:
RichEdit1.SelAttributes.style :=
RichEdit1.SelAttributes.style + [fsBold];
RichEdit1.Lines.Add('Das ist fett');
RichEdit1.SelAttributes.style :=
RichEdit1.SelAttributes.style - [fsBold];
RichEdit1.Lines.Add('Das nicht');
Nur das macht natürlich 2 linien.

Blackheart 14. Feb 2008 12:39

Re: RichEdit. String in Bold hinzufügen.
 
Delphi-Quellcode:
with RichEdit do
  begin
   SelAttributes.Style := [fsBold];
   Lines.Add('Fett');
   SelAttributes.Style := [];
   Lines.Add('Nicht ganz so fettig');
end;

k4ni 14. Feb 2008 14:09

Re: RichEdit. String in Bold hinzufügen.
 
hmm ist im prinzip das gleiche, und macht auch das gleiche :(.

DeddyH 14. Feb 2008 14:12

Re: RichEdit. String in Bold hinzufügen.
 
Klar, Lines.Add fügt ja auch eine neue Zeile ein. Ein etwas umständliches Beispiel:
Delphi-Quellcode:
var s1, s2: string;
begin
  s1 := 'fett ';
  s2 := 'nicht mehr fett';
  RichEdit1.SelAttributes.Style := [fsBold];
  RichEdit1.Lines.Add(s1 + s2);
  RichEdit1.SelStart := Length(RichEdit1.Text) - 2 - Length(s2);
  RichEdit1.SelLength := Length(s2);
  RichEdit1.SelAttributes.Style := [];
end;

k4ni 20. Mai 2008 01:30

Re: RichEdit. String in Bold hinzufügen.
 
Zitat:

Zitat von DeddyH
Klar, Lines.Add fügt ja auch eine neue Zeile ein. Ein etwas umständliches Beispiel:
Delphi-Quellcode:
var s1, s2: string;
begin
  s1 := 'fett ';
  s2 := 'nicht mehr fett';
  RichEdit1.SelAttributes.Style := [fsBold];
  RichEdit1.Lines.Add(s1 + s2);
  RichEdit1.SelStart := Length(RichEdit1.Text) - 2 - Length(s2);
  RichEdit1.SelLength := Length(s2);
  RichEdit1.SelAttributes.Style := [];
end;

[Bump]
Ich hab grad totale probleme mit deinem beispiel. Wie du bereits erwähnt hast ist dein beispiel umständlich :D
Also ich möchte so eine linie hinzufügen

Code:
[bold][color=gray]>>[/color=gray] [italic][color=black]name[/italic][/color=black] [color=gray]msg[/color=gray][/bold]
name und msg sind string-variablen.
Gibt es dafür keine einfach lösung?

marabu 20. Mai 2008 08:21

Re: RichEdit. String in Bold hinzufügen.
 
Moin,

wenn du einen Namen und eine Msg in deinem Chat-Fenster formatiert anzeigen willst, dann baust du dir eine Routine, die genau das tut - nicht mehr und nicht weniger:

Delphi-Quellcode:
procedure AddMessage(re: TRichEdit; const name, msg: string);
begin
  re.SelStart := MaxInt;
  re.SelAttributes.Color := clGray;
  re.SelAttributes.Style := [fsBold];
  re.SelText := '>> ';
  re.SelAttributes.Color := clBlack;
  re.SelAttributes.Style := [fsBold, fsItalic];
  re.SelText := name + ' ';
  re.SelAttributes.Color := clGray;
  re.SelAttributes.Style := [fsBold];
  re.SelText := msg + sLineBreak;
end;
Grüße vom marabu

Gutelo 13. Jan 2014 23:36

AW: RichEdit. String in Bold hinzufügen.
 
Hallo

Dieser Thread ist zwar schon alt, aber da ich ueber ein aehnliches Problem gestolpert bin, moechte ich hier noch eine Information hinzufuegen.

Die Stringsuche mit Pos macht anscheinend Probleme wenn der Text des RichEdit Sonderzeichen enthaelt. Ich hatte ein RichEdit mit Carriage Returns (#13) im String. Damit waren auch die Pos Angaben falsch. Geloest habe ich es indem ich RichEdit.FindText verwende, d.h.:

MarkStart := RichEdit1.FindText(KeyWords[a],0, Length(RichEdit1.Text),[stWholeWord]);


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:58 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