Delphi-PRAXiS
Seite 3 von 4     123 4      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Wörter in Zeichenstring fett schreiben (https://www.delphipraxis.net/161636-woerter-zeichenstring-fett-schreiben.html)

Bjoerk 14. Jul 2011 13:08

AW: Wörter in Zeichenstring fett schreiben
 
Zitat:

Zitat von t0mmy (Beitrag 1111698)
Das Programm lässt sich ausführen, jedoch schreibt er was anderes fett -.-
kann ich die Höhe: --> groß schreiben.. wie geht das mit fett schreiben???

Oh mann, weil der Text HÖHE nicht enthält (PosEx ist CaseSensitive).

Eventuell so:

Delphi-Quellcode:

  RE: string;
begin
  RE:= AnsiLowercase(ARichEdit.Text);

  ..
 
  X:= PosEx(AnsiLowercase(S), RE, X);

t0mmy 14. Jul 2011 13:33

AW: Wörter in Zeichenstring fett schreiben
 
@Bojerk

Es wird immer das Falsche fett markiert -.-

Bjoerk 14. Jul 2011 13:44

AW: Wörter in Zeichenstring fett schreiben
 
Nochmal zum mitschreiben:

Delphi-Quellcode:
procedure DoColorWork (ARichEdit: TWasAuchImmerFuerEinRichEdit; const S: string);
var
  I, X, L: integer;
  F: boolean;
  RE: string;
begin
  RE:= AnsiLowerCase(ARichEdit.Tex); // !!
  ARichEdit.Lines.BeginUpDate;
  L:= Length(S);
  X:= 1;
  F:= true;
  while F do
  begin
    X:= PosEx(AnsiLowerCase(S), RE, X); / !!
    if X <> 0 then
    begin
      with ARichEdit do // !!
      begin
        SelStart:= X-1;
        SelLength:= L;
        SelAttributes.Color:= clNavy;
        SelAttributes.Style:= [fsBold];
        SelAttributes.Name:= Font.Name;
        SelAttributes.Size:= Font.Size;
      end;
      Inc(X, L);
    end
    else
      F:= false;
  end;
  ARichEdit.SelLength:= 0;
  ARichEdit.Lines.EndUpDate;
end;

// Aufruf:

DoColorWork (WasAuchImmerFuerEinRichEdit, 'HÖHE:');

Bjoerk 14. Jul 2011 13:58

AW: Wörter in Zeichenstring fett schreiben
 
Alternative:

Delphi-Quellcode:
procedure DoColorWork (ARichEdit: TWasAuchImmerFuerEinRichEdit; const S: string);
var
  I, X, L: integer;
  F: boolean;
begin
  ARichEdit.Text:= StringReplace(AnsiLowerCase(ARichEdit.Text), AnsiLowerCase(S), S, [rfReplaceAll]);
  ARichEdit.Lines.BeginUpDate;
  L:= Length(S);
  X:= 1;
  F:= true;
  while F do
  begin
    X:= PosEx(S, ARichEdit.Text, X);
    if X <> 0 then
    begin
      with ARichEdit do
      begin
        SelStart:= X-1;
        SelLength:= L;
        SelAttributes.Color:= clNavy;
        SelAttributes.Style:= [fsBold];
        SelAttributes.Name:= Font.Name;
        SelAttributes.Size:= Font.Size;
      end;
      Inc(X, L);
    end
    else
      F:= false;
  end;
  ARichEdit.SelLength:= 0;
  ARichEdit.Lines.EndUpDate;
end;

// Aufruf:

DoColorWork (WasAuchImmerFuerEinRichEdit, 'HÖHE:');

DeddyH 14. Jul 2011 14:04

AW: Wörter in Zeichenstring fett schreiben
 
Liste der Anhänge anzeigen (Anzahl: 1)
Siehe Anhang.

t0mmy 14. Jul 2011 14:08

AW: Wörter in Zeichenstring fett schreiben
 
Ich glaub man versteht mich hier nicht.. ja der Code funktioniert Bjoerk, jedoch wenn ich einen Text hab und dazwischen Bilder.. dann findet er nichts -.-
DeddyH's Methode ist da einsichtiger... jedoch hab ich noch immer keinen Plan wie ich FindText anwenden soll :( Ja die Funktion kenn ich und auch die Parameter aber bei meinem Problem check ichs nicht.

DeddyH 14. Jul 2011 14:17

AW: Wörter in Zeichenstring fett schreiben
 
Versuch mal, ob es hiermit geht:
Delphi-Quellcode:
procedure {TfrmDemo.}MarkKeyword(RE: TRichEdit; const s: string;
  CaseSensitive: Boolean);
var
  FoundAt: LongInt;
  StartPos, ToEnd: Integer;
  SearchTypes: TSearchTypes;
begin
  Assert(Assigned(RE));
  if CaseSensitive then
    SearchTypes := [stMatchCase]
  else
    SearchTypes := [];
  StartPos := 0;
  ToEnd := Length(RE.Text);
  FoundAt := RE.FindText(s, StartPos, ToEnd, SearchTypes);
  while FoundAt > -1 do
    begin
      RE.SelStart := FoundAt;
      RE.SelLength := Length(s);
      RE.SelAttributes.Style := RE.SelAttributes.Style + [fsBold];
      RE.SelLength := 0;
      StartPos := FoundAt + Length(s);
      ToEnd := Length(RE.Text) - StartPos;
      FoundAt := RE.FindText(s, StartPos, ToEnd, SearchTypes);
    end;
end;
Aufruf (Button1):
Delphi-Quellcode:
procedure TfrmDemo.Button1Click(Sender: TObject);
begin
  RichEdit1.Lines.BeginUpdate;
  try
    MarkKeyword(RichEdit1, 'Höhe:', CheckBox1.Checked);
    MarkKeyword(RichEdit1, 'Breite:', CheckBox1.Checked);
    MarkKeyword(RichEdit1, 'Tiefe:', CheckBox1.Checked);
  finally
    RichEdit1.Lines.EndUpdate;
  end;
end;
Ggf. musst Du eben die Typen noch anpassen, ich habe die JVCL nicht installiert und kann daher nicht nachsehen, wie das da heißen muss.

t0mmy 14. Jul 2011 14:32

AW: Wörter in Zeichenstring fett schreiben
 
@DeddyH

Ich habs jetzt auf TJvRichEdit abgeändert.. und bin den Code auf nem Blatt papier durchgegangen... jetzt verstehe ich... was die ganzen Funktionen auf sich haben....
Es funktioniert :))

Danke DeddyH... ich wär viel Glücklicher wenn ichs selber Rausgefunden hätte -.- aber trotzdem danke (Prof. ;) ) DeddyH

DeddyH 14. Jul 2011 14:38

AW: Wörter in Zeichenstring fett schreiben
 
Na siehste :zwinker:

t0mmy 15. Jul 2011 11:21

AW: Wörter in Zeichenstring fett schreiben
 
Hallo

Ich hätte da noch eine kleine Frage.. wie kann ich die markierten wörter zudem auch noch Groß schreiben... ?_?


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:51 Uhr.
Seite 3 von 4     123 4      

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