Thema: Delphi RichEdit formatieren

Einzelnen Beitrag anzeigen

Benutzerbild von Sourcemaker
Sourcemaker

Registriert seit: 3. Sep 2003
Ort: Westoverledingen
264 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: RichEdit formatieren

  Alt 6. Nov 2003, 10:50
Hi Sebastian,

diesen Quellcode benutze ich in meiner RTF-Form (ist von den Demo abgeleitet).
Im Gegensatz zum Demo-Code werden hier alle Style richtig angewandt und kombiniert.
Für dich sollte es möglich sein die grundsätzliche Technik abzuleiten.

Delphi-Quellcode:
procedure TFRtfForm.SetStyle(lSet: Boolean; xStyle: TFontStyles);
var
   i : integer;
   nStart : integer;
   nLength : integer;
   xMerkStyle: TFontStyles;
   nStartMerker : integer;
   lCopy : Boolean;
   edText3 : TRxRichEdit;
begin
   bUpdating := True;
   try
      nStart := edText.SelStart;
      nLength := edText.SelLength;
      if nLength = 0 then
      begin
         if lSet then
            edText.SelAttributes.Style := edText.SelAttributes.Style + xStyle
         else edText.SelAttributes.Style := edText.SelAttributes.Style - xStyle;
         Exit;
      end;
      lCopy := False;
      edText3 := edText;
      i := nStart+1;
      edText3.SelStart := i;
      edText3.SelLength := 1;
      nStartMerker := nStart;
      xMerkStyle := edText3.SelAttributes.Style;
      while i < nStart+nLength do
      begin
         edText3.SelStart := i;
         if xMerkStyle = edText3.SelAttributes.Style then
         begin
            Inc(i);
            Continue;
         end;
         if not lCopy then
         begin
            CopyRxRichEditText(edText, edText2);
            edText3 := edText2;
            lCopy := True;
            edText3.SelStart := i;
         end;
         xMerkStyle := edText3.SelAttributes.Style;
         edText3.SelStart := nStartMerker;
         edText3.SelLength := i-nStartMerker-1;
         if lSet then
            edText3.SelAttributes.Style := edText3.SelAttributes.Style + xStyle
         else edText3.SelAttributes.Style := edText3.SelAttributes.Style - xStyle;
         nStartMerker := i-1;
         Inc(i);
      end;

      edText3.SelStart := nStartMerker;
      edText3.SelLength := i-nStartMerker;
      if lSet then
         edText3.SelAttributes.Style := edText3.SelAttributes.Style + xStyle
      else edText3.SelAttributes.Style := edText3.SelAttributes.Style - xStyle;

      if lCopy then
         CopyRxRichEditText(edText3, edText);
      edText.SelStart := nStart;
      edText.SelLength := nLength;
   finally
      bUpdating := False;
   end;
end;
Gruß

Frank
Frank
  Mit Zitat antworten Zitat