AGB  ·  Datenschutz  ·  Impressum  







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

Selattribut zurücksetzen [RichEdit]?

Ein Thema von Blackheart · begonnen am 19. Dez 2006 · letzter Beitrag vom 19. Dez 2006
Antwort Antwort
Blackheart

Registriert seit: 4. Mai 2005
846 Beiträge
 
Delphi 7 Enterprise
 
#1

Selattribut zurücksetzen [RichEdit]?

  Alt 19. Dez 2006, 11:49
Hallo Leute
Ich hab Mir eine Procedur geschrieben die Mir bestimmte Wörter Fett und Blau anzeigt,
Soweit klappt das auch zwischen den Reservierten Wörtern wird wieder normal geschrieben.
Jetzt mein Problem hinter dem letztem reservierten Wort wird wieder in Fett Blau geschrieben was
nicht sein sollte.
Hätte jemand eine Idee dazu - Wie kann Ich die Selattribute im Rich wieder zurücksetzen ?


Delphi-Quellcode:
var
  Form1: TForm1;
  Reserviert: array[0..2] of string =('end', 'begin', 'test');
implementation

{$R *.dfm}
procedure ReserviertBold(RichEdit1: TRichedit);
var
 i,j:Integer;
 Bold, Str: String;
begin
 with RichEdit1 do
 begin
  for i:=0 to Length(Text) do
    for j:= 0 to High(Reserviert) do
      begin
        Bold:= Uppercase(Reserviert[j]);
        Str:= Uppercase(Copy(Text, i, Length(Bold)));
        Text:=StringReplace(Text,Bold,Uppercase(Bold),[rfReplaceAll, rfIgnoreCase]);
        if (Uppercase(Str) = Uppercase(Bold)) then
          begin
            SelStart:= i-1;
            Sellength:= Length(Bold);
            SelAttributes.Color := clBlue;
            SelAttributes.Style:= [fsbold] end else begin
            SelStart:= i-1;
            SelAttributes.Color := clBlack;
            SelAttributes.Style:= [];
        end;
      end;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  ReserviertBold(RichEdit1);
end;
Blackheart
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Selattribut zurücksetzen [RichEdit]?

  Alt 19. Dez 2006, 12:33
Moin Blackheart,

Du müsstest Dir in der inneren Schleife merken wie weit Du gekommen bist, und dann nach dieser den Rest selektieren und mit normalen Attributen versehen.
Ausserde sehe ich, dass Du die Eigenschaft Text des RichEdit sehr oft, und dann auch noch in einer Schleife verwendest. Das ist allerdings ausgesprochen schlecht für die Performance, da diese Eigenschaft bei jedem Lesezugriff aus den Zeilen aufgebaut wird, bzw. bei jedem Schreibzugriff auf die Zeilen aufgeteilt wird.
Bei nur wenigen Zeilen merkt man das wohl noch nicht, aber wenn es mehr wird kann es extrem langsam werden.
Entweder Du speicherst Dir den Text einmal zwischen in einer Stringvariablen, und schreibst ihn am Ende wieder zurück, oder Du gehtst zeilenweise durch, was in Deinem Falle wohl sinnvoller wäre.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Antwort Antwort


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:12 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