AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Farben im RichEdit (schon wieder ^^)

Ein Thema von Green · begonnen am 19. Jun 2006 · letzter Beitrag vom 20. Jun 2006
Antwort Antwort
Seite 1 von 2  1 2      
Green

Registriert seit: 11. Jun 2006
156 Beiträge
 
#1

Farben im RichEdit (schon wieder ^^)

  Alt 19. Jun 2006, 15:17
also mein problem is eigentlich recht einfach und ich hab auch schon in diversen foren gesucht aber NIX gefunden was geklappt hat.
folgendes Problem:

ich habe ein RichEdit und will eben diesem klar machen das es ab einem bestimmten moment alles was dazu kommt in rot schreiben soll.
fogende ansätze (keiner funzt richtig) das ganze is in eine proc gepackt welche mir einen String buchstabe für buchstabe durchgeht und in ein RichEdit addet und immer wenn ein steuerzeichen (#3) kommt soll in Rot geschrieben werden:
Delphi-Quellcode:
{Version 1}
  procedure ProcColoredText( S: string; var RichEdit: TRichEdit);
    var
      i: integer;
      buffer: string;
      colored, bold, underlined: boolean;
  begin
    colored := false; bold := false; underlined := false;
    //richedit.Lines.Append('');
    if length(S) <> 0 then
    for i := 1 to length(S) do
    begin
      if S[i] = #3 then begin
        RichEdit.SelStart := Length(RichEdit.Lines[RichEdit.Lines.Count-1]) + 2; //ich weiss nit warum 2(habs ausprobiert ^^ aber s geht
        RichEdit.SelAttributes.Color := clRed;
      end else
        //RichEdit.Lines[RichEdit.Lines.Count-1] := RichEdit.Lines[RichEdit.Lines.Count-1] + S[i];
        RichEdit.SelText := S[i];
    end;
    RichEdit.Lines.Append('');
  end;

{Version 2}
  procedure ProcColoredText( S: string; var RichEdit: TRichEdit);
    var
      i: integer;
      buffer: string;
      colored, bold, underlined: boolean;
  begin
    colored := false; bold := false; underlined := false;
    richedit.Lines.Append('');
    if length(S) <> 0 then
    for i := 1 to length(S) do
    begin
      if S[i] = #3 then begin
        RichEdit.SelStart := Length(RichEdit.Lines[RichEdit.Lines.Count-1]);
        RichEdit.SelAttributes.Color := clRed;
      end else
        RichEdit.Lines[RichEdit.Lines.Count-1] := RichEdit.Lines[RichEdit.Lines.Count-1] + S[i];
    end;
  end;
beim zeweiten hab ich gar keine farbe und beim ersten wird zwar farbig geschrieben, aber wenn ich in einer neuen zeile nochmal farbigen text screiben will wird der farbige an das ende des letzten farbigen geaddet, was n bissel komisch is...

also wie gesagt alles was ich machen will is meinem RichEdit sagen zu können: 'ab jetzt alles rot schreiben' oder alles grün oder fett oder sonstwas ^^

mfG Green
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Farben im RichEdit (schon wieder ^^)

  Alt 19. Jun 2006, 15:22
Das geht auch so nicht. Informier dich mal über RichText-Steuercodes.
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
Green

Registriert seit: 11. Jun 2006
156 Beiträge
 
#3

Re: Farben im RichEdit (schon wieder ^^)

  Alt 19. Jun 2006, 18:00
ääähm also google liefert mir zu RichText Steuercodes sagenhafte 66 ergebnise ( ) mit denen ich irgendwie nix anfangen kann... kannst du mir da ma kurz erklären was du jetzt meinst? also meinst du #3 sollte ich an sich nicht verwenden? oder was, weil das kann ich leider nicht ändern, das is 'vorgegeben'. Kennstes IRC? dann weisstes (Strg + k drücken )
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: Farben im RichEdit (schon wieder ^^)

  Alt 19. Jun 2006, 18:06
Das Asciizeichen #3 ist das ETX (end of text) Zeichen, aber das dürfte in diesem Fall unerheblich sein.

Du kannst dem RichEdit nicht direkt sagen, dass alles ab #3 rot ist. Du musst den Text, der rot sein soll, mit einem ensprechenden RichText-Steuercode versehen. Wie der genau aussieht weiß ich nicht. Aber du könntest mal Wordpad öffnen, nen Text eingeben, rot machen, abspeichern, in *.txt umbenennen, mit notepad öffnen und dir dann den Steuercode raussuchen.
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
Green

Registriert seit: 11. Jun 2006
156 Beiträge
 
#5

Re: Farben im RichEdit (schon wieder ^^)

  Alt 19. Jun 2006, 18:19
naja, rot war nur nen beispiel. es soll farben mässig möglichst dynamisch sein ^^
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#6

Re: Farben im RichEdit (schon wieder ^^)

  Alt 19. Jun 2006, 18:20
Kann es auch. Wenn du einmal das System kennst.
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#7

Re: Farben im RichEdit (schon wieder ^^)

  Alt 19. Jun 2006, 18:25
Also ich hab' mal diesen Code geschrieben, der ein Log in ein Richedit schreibt und abhängig von EventType färbt ...
(ist aus meinem SmallFTP Programm)
Delphi-Quellcode:
procedure TForm1.AddToLog (Sender: TObject; EventText: String; EventType: TEventType);
var
  SelStart: Cardinal;
  Str: String;
begin
  if EventType = etError then MessageBeep(MB_ICONERROR);

  if (EventType = etCommand) and (copy (EventText, 1, 4) = 'PASS') then
    EventText := 'PASS ' + StringOfChar ('*', length (EventText) - 5);

  SelStart := length (Log.Text);

  Str := LogPrefix[EventType] + ' ' + EventText + ' ' + LogSuffix[EventType];
  Log.Lines.Add(Str);

  if (EventType <> etCommand) or (copy (EventText, 1, 4) <> 'PASS') then LogText := LogText + Str + #13#10;

  Log.SelStart := SelStart;
  Log.SelLength := Length (Str);
  Log.SelAttributes.Color := LogColors[EventType];

  Log.SelStart := SelStart;
  Log.SelLength := Length (LogPrefix[EventType]);
  Log.SelAttributes.Style := [fsBold];

  Log.SelStart := (length (Log.Text) - 2) - length (LogSuffix[EventType]);
  Log.SelLength := Length (LogSuffix[EventType]);
  Log.SelAttributes.Style := [fsBold];

  Log.Perform(WM_VSCROLL, SB_BOTTOM,0);
end;
Zeile 8/9 ist ... nur, damit ich nicht alle Passwörter bekomme, wenn mir das Log zugeschickt wird (man ist ja nett )

Wichtig sind für dich soweit isch das jetzt gesehen hab', Zeilen 18-20:

Du merkst dir die länge des Texts im Richedit, fügst deinen Text hinzu und kannst dann den hinzugrfügten Text färben.
  Mit Zitat antworten Zitat
Green

Registriert seit: 11. Jun 2006
156 Beiträge
 
#8

Re: Farben im RichEdit (schon wieder ^^)

  Alt 19. Jun 2006, 18:31
also ich hab mal folgenden text in Word pad geschrieben

hallo hallo

ergebnis:
Code:
{\rtf1\ansi\deff0{\fonttbl{\f0\fswiss\fcharset0 Arial;}}
{\colortbl ;\red255\green0\blue0;}
{\*\generator Msftedit 5.41.15.1503;}\viewkind4\uc1\pard\lang1031\f0\fs20 hallo \cf1 hallo\cf0\par
}
da blick ich nit sooo durch

€: wenn ich des in nen rich edit einlad dann funzt des au ^^

des kann doch nit sein des des sooo schwer is ...
  Mit Zitat antworten Zitat
Benutzerbild von stz
stz

Registriert seit: 8. Sep 2005
Ort: Neuendeich, Lübeck
277 Beiträge
 
Turbo Delphi für Win32
 
#9

Re: Farben im RichEdit (schon wieder ^^)

  Alt 19. Jun 2006, 19:54
Hallo zusammen,
ich finde das hier alles furchtbar kompliziert...

Wenn ich nicht gerade völlig auf dem Schlauch stehe hilft dir folgendes:

Delphi-Quellcode:
procedure TextAusgabe(RTE: TRichEdit; Text: String);
var
  i: Integer;
  rot: Bool;
begin
  rot := False;
  RTE.Clear;
  for i := 1 to Length(Text) do
  begin
    if Text[i] = #3 then
      rot := not rot
    else
    begin
      if rot then
        RTE.SelAttributes.Color := clRed
      else
        RTE.SelAttributes.Color := clBlack;
      RTE.SelText := Text[i];
    end;
  end;
end;
Malte Schmitz
Der Unterschied zwischen Theorie und Praxis ist in der Praxis größer als in der Theorie.

Entwickler des HTML-Editors MEdit (DP)
  Mit Zitat antworten Zitat
Green

Registriert seit: 11. Jun 2006
156 Beiträge
 
#10

Re: Farben im RichEdit (schon wieder ^^)

  Alt 19. Jun 2006, 20:39
tja das problem is das seltext in dem Fall Schei**e baut...beim ersten mal geht das noch, also er macht die farbe richtig, aber wenn ich in der nächsten zeile nochmal seltext verwende, addet er denn farbigen text an die zeile davor, und den nicht farbigen in eine neue zeile, aber wenn du genau hinguckst, siehst du das die eine von den beiden versionen von mir praktisch mit deiner identisch ist...
  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 08:19 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