AGB  ·  Datenschutz  ·  Impressum  







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

Hideselection funktioniert nicht

Ein Thema von moperswings · begonnen am 30. Mai 2007 · letzter Beitrag vom 30. Mai 2007
Antwort Antwort
moperswings

Registriert seit: 27. Mai 2004
Ort: Bad Sooden-Allendorf
240 Beiträge
 
Delphi 6 Professional
 
#1

Hideselection funktioniert nicht

  Alt 30. Mai 2007, 08:52
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;
  Mit Zitat antworten Zitat
xaromz

Registriert seit: 18. Mär 2005
1.682 Beiträge
 
Delphi 2006 Enterprise
 
#2

Re: Hideselection funktioniert nicht

  Alt 30. Mai 2007, 08:59
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 mitSelLength := 0; einfach die Markierung entfernen.

Gruß
xaromz
I am a leaf on the wind - watch how I soar
  Mit Zitat antworten Zitat
moperswings

Registriert seit: 27. Mai 2004
Ort: Bad Sooden-Allendorf
240 Beiträge
 
Delphi 6 Professional
 
#3

Re: Hideselection funktioniert nicht

  Alt 30. Mai 2007, 09:21
Aber die Länge brauche ich doch, um bis zum Ende des Strings zu kommen, der Markiert werden soll!
Oder verstehe ich Dich falsch?
  Mit Zitat antworten Zitat
xaromz

Registriert seit: 18. Mär 2005
1.682 Beiträge
 
Delphi 2006 Enterprise
 
#4

Re: Hideselection funktioniert nicht

  Alt 30. Mai 2007, 13:17
Hallo,

wozu brauchst Du denn die Markierung am Ende?

Gruß
xaromz
I am a leaf on the wind - watch how I soar
  Mit Zitat antworten Zitat
moperswings

Registriert seit: 27. Mai 2004
Ort: Bad Sooden-Allendorf
240 Beiträge
 
Delphi 6 Professional
 
#5

Re: Hideselection funktioniert nicht

  Alt 30. Mai 2007, 15:06
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!
  Mit Zitat antworten Zitat
Benutzerbild von Flocke
Flocke

Registriert seit: 9. Jun 2005
Ort: Unna
1.172 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#6

Re: Hideselection funktioniert nicht

  Alt 30. Mai 2007, 15:19
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.
Volker
Besucht meine Garage
Aktuell: RtfLabel 1.3d, PrintToFile 1.4
  Mit Zitat antworten Zitat
moperswings

Registriert seit: 27. Mai 2004
Ort: Bad Sooden-Allendorf
240 Beiträge
 
Delphi 6 Professional
 
#7

Re: Hideselection funktioniert nicht

  Alt 30. Mai 2007, 16:17
Also kann ich den Text nicht unsichtbar machen!
Alles klar!
Vielen Dank und viele Grüsse
moperswings
  Mit Zitat antworten Zitat
Benutzerbild von Lannes
Lannes

Registriert seit: 30. Jan 2005
Ort: Münster
745 Beiträge
 
Delphi 3 Professional
 
#8

Re: Hideselection funktioniert nicht

  Alt 30. Mai 2007, 16:25
Hallo,

versuch es mal damit:

RichEdit.SelText := '{\rtf1 \v '+RichEdit.SelText+'\v0}'; Das ist aber abhängig vom Betriebssystem bzw. der genutzten RichEd**.dll!
MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
  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 18:54 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