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 ähnliche Komponente mit Formatierungsmöglichkeit (https://www.delphipraxis.net/71113-richedit-aehnliche-komponente-mit-formatierungsmoeglichkeit.html)

titus 9. Jun 2006 02:05


RichEdit ähnliche Komponente mit Formatierungsmöglichkeit
 
Hi,

wir versuchen gerade eine RichEdit ähnliche Komponente zu finden, oder gar RichEdit zu benutzen um farbigen Text darzustellen, und zwar nach folgenden Kriterien:

- Farbe Vordergrund, verschiedene in einer Zeile
- Farbe Hintergrund, verschiedene in einer Zeile

Und möglichst alle weiteren Formatierungen, wie zum Beispiel Fett, Unterstrichen etc. (ähnlich dem BBCode also).

Was wir bisher versucht haben:

Delphi-Quellcode:
procedure SelAttColor(RichEdit: TRichEdit; iString: String; ColorStart: TColor);
var
  n: integer;
begin
  n := 0;
  RichEdit.Lines[n] := iString;

  RichEdit.SelStart            := 0;
  RichEdit.SelLength           := Length(iString);
  RichEdit.SelAttributes.Color := ColorStart;
  RichEdit.Lines[n]            := RichEdit.Lines[n] + 'a';

  RichEdit.SelStart            := Length(iString);
  RichEdit.SelLength           := 0;
  RichEdit.SelAttributes.Color := STD_TEXT_COLOR;
end;

procedure SelAttBg(RichEdit: TRichEdit; AColor: TColor);
var
  Format: CHARFORMAT2;
begin
  RichEdit.SelLength := 0;
  FillChar(Format, SizeOf(Format), 0);
  with Format do
  begin
    cbSize := SizeOf(Format);
    dwMask := CFM_BACKCOLOR;
    crBackColor := AColor;
    Richedit.Perform(EM_SETCHARFORMAT, SCF_SELECTION, Longint(@Format));
  end;
end;
Die Versuche haben leider recht kläglich damit geendet, dass wir zwar farbig schreiben konnten, aber immer nur zeilenweise oder, dass die Farben verrückt spielten.

Ich hoffe ihr könnt uns helfen (wir sitzen jetzt schon seit ca. 4 Stunden dran und sind kaum weiter).

mfG, titus

NikoMitDaMacht 9. Jun 2006 02:17

Re: RichEdit ähnliche Komponente mit Formatierungsmöglichkei
 
hier das hatte ich benutzt um ein protokol zu schreiben
Delphi-Quellcode:
procedure AddProtocol(caption,text: string; col1,col2 :Tcolor; style1,style2:Tfontstyles);
var            
  Line: Integer;
  MsgString :string;
begin
  MSGString:=text;
 
  with ProtokollForm.RichEdit1 do
  begin
  Lines.Add(Caption + ' ' + MSGString + ' ('+TimeToStr(now)+')');
  Line:= Perform(EM_LINEINDEX, lines.Count-1, 0);

  SelStart := line;
  SelLength := Length(Caption);
  SelAttributes.Style:=style1;
  SelAttributes.Color:=col1;
  SelLength:=0;
 
  SelStart := line+ Length(Caption)+1;
  SelLength := Length(Lines[lines.Count-1]);
  SelAttributes.Color:=col2;
  SelAttributes.Style:=style2;
  SelLength:=0;

  SelStart := line + Length(Caption + ' ' + MsgString);
  SelLength := Length(Lines[lines.Count-1]);
  SelAttributes.Color:=clBlack;
  SelAttributes.Style:=[];
  SelLength:=0;
 end;
end;
[edit=Luckie]Code-Tags korrigiert. Mfg, Luckie[/edit]

NikoMitDaMacht 9. Jun 2006 02:22

Re: RichEdit ähnliche Komponente mit Formatierungsmöglichkei
 
ich würd nur gerne wissen was die var MSGString soll.....

titus 9. Jun 2006 20:22

Re: RichEdit ähnliche Komponente mit Formatierungsmöglichkei
 
Ok vielen Dank ich hab's zusammengeschnipselt bekommen :)


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