![]() |
Hideselection funktioniert nicht
Hallo,
könnt Ihr Euch mal kurz den Code ansehen: Ich kann an den Strings die Farbe ändern und sie auf Schreibschutz stellen, aber nicht verstecken! Sieht jemand meinen Fehler? Viele Grüsse, moperswings
Delphi-Quellcode:
function findtextall(re: TRichEdit; sText: string; options:TSearchTypes): TIntegerdynarray;
var istart, ifound, ilength: integer; begin setlength(result, 0); istart := 0; ilength := length(re.Lines.Text); while istart < (ilength - length(stext)) do begin ifound := re.FindText(sText, istart, ilength - istart, options); if ifound = - 1 then exit; Setlength(Result, succ(length(result))); result[high(result)] := ifound; istart := ifound + length(stext); end; end; procedure TForm1.Button19Click(Sender: TObject); var i, p, x: integer; s: string; bild: string; dateiname: string; inhalt: Tstringlist; ida: TIntegerDynArray; begin dateiname := 'd:\image16\daten.html'; RichEdit3.Lines.LoadFromFile(dateiname); inhalt := TStringlist.Create; inhalt.LoadFromFile(dateiname); bild := '<img'; for i := 0 to inhalt.Count - 1 do begin if pos(bild, inhalt[i]) > 0 then begin s := ''; for p := pos(bild, inhalt[i]) to length(inhalt[i]) do if inhalt[i][p] <> s then s := s + inhalt[i][p] else break; while pos(s[length(s)], '/>') = 0 do delete(s, length(s), 1); end; ida := findtextall(RichEdit3, s, []); for x := low(ida) to high(ida) do with RichEdit3 do begin selstart := ida[x]; sellength := length(s); //selattributes.Color := clred; -> funktioniert ================== HideSelection := true; // RichEdit habe ich auch auf true umgestellt! ??? // selattributes.Protected := true; -> funktioniert =============== end; RichEdit3.SetFocus; end; inhalt.Free; end; |
Re: Hideselection funktioniert nicht
Hallo,
Du setzt doch am Ende den Fokus auf das RichEdit. HideSelection dient aber nur dazu, die Markierung zu verstecken, wenn das Control keinen Focus hat. Somit zeigt das Richedit also das erwartete Verhalten. Eventuell solltest Du mit
Delphi-Quellcode:
einfach die Markierung entfernen.
SelLength := 0;
Gruß xaromz |
Re: Hideselection funktioniert nicht
Aber die Länge brauche ich doch, um bis zum Ende des Strings zu kommen, der Markiert werden soll!
Oder verstehe ich Dich falsch? |
Re: Hideselection funktioniert nicht
Hallo,
wozu brauchst Du denn die Markierung am Ende? Gruß xaromz |
Re: Hideselection funktioniert nicht
Das ist ein Teilstring in einem RichEdit. Diesen String kann ich schützen oder die Farbe ändern. Und ich wollte ihn auch unsichtbar machen - und das müsste doch mit hideselection gehen!
|
Re: Hideselection funktioniert nicht
Nein. HideSelection setzt nicht das Attribut "hidden" beim ausgewählten Text sondern bewirkt das, was xaromz schon beschrieben hat.
Die Eigenschaft "versteckt" (CFE_HIDDEN in TTextFormat in RichEdit.pas) gehört zu denen, die ein RichEdit zwar "unterstützt" aber nicht anzeigt. Mit "Unterstützung" meinen die Entwickler von Microsoft hier, dass das Attribut aus einer RTF-Datei eingelesen und auch wieder in diese geschrieben wird. |
Re: Hideselection funktioniert nicht
Also kann ich den Text nicht unsichtbar machen!
Alles klar! Vielen Dank und viele Grüsse moperswings |
Re: Hideselection funktioniert nicht
Hallo,
versuch es mal damit:
Delphi-Quellcode:
Das ist aber abhängig vom Betriebssystem bzw. der genutzten RichEd**.dll!
RichEdit.SelText := '{\rtf1 \v '+RichEdit.SelText+'\v0}';
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:04 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