AGB  ·  Datenschutz  ·  Impressum  







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

Linien zeichnen in TRichEdit mit TShape ??

Ein Thema von runningsoft · begonnen am 27. Jan 2010 · letzter Beitrag vom 27. Jan 2010
 
Benutzerbild von runningsoft
runningsoft

Registriert seit: 8. Okt 2004
Ort: Bernau
108 Beiträge
 
Delphi 10.4 Sydney
 
#3

Re: Linien zeichnen in TRichEdit mit TShape ??

  Alt 27. Jan 2010, 09:55
Ich hab das jetzt vom Ansatz her etwas anders gelöst, keine Ahnung, ob es besonders elegant ist, aber es funktioniert offensichtlich.

Das RichEdit habe ich in einer ScrollBox platziert. Und in dieser Scrollbox erzeuge ich zur Laufzeit als visuelle Begrenzungslinien für die im Richedit gesetzten Ränder vier Panele von entweder 1 px Breite (senkrechte Linien) oder 1 px Höhe (waagerechte Linien).

Die Panele werden über das Richedit gezeichnet und beeinflussen das RichEdit überhaupt nicht, so dass der Text wieder ganz normal sichtbar ist.

Das ganze hatte ich vorher mit TBevel bzw. TShape in der Scrollbox versucht, was aber beides nicht funktioniert hat, da sowohl Bevel als auch Shape hinter dem Richedit gezeichnet wurden, während das Panel vor dem RichEdit erscheint.

Hier noch der Code:

Delphi-Quellcode:
procedure TForm11.PaintBorders(var R : TRect);
var bLine : TPanel;
    I : integer;
begin
//Textränder als graue Linie jeweils 1 Pixel außerhalb der gesetzten Ränder anzeigen
for I := 1 to 4 do
   begin
   bLine := TPanel.Create(ScrollBox1);
   with bLine do
      begin
      Parent := ScrollBox1;
      Name := 'bLine' + IntTostr(I);
      Caption := '';
      Ctl3D := False;
      Color := $e0e0e0;
      BevelInner := bvNone;
      BevelOuter := bvNone;
      if I < 3 then
         begin
         //waagerechte Linien
         Height := 1;
         Width := R.Right - R.Left + 30;
         Left := RichEdit1.Left + R.Left - 15;
         end
      else
         begin
         //senkrechte Linien
         Width := 1;
         Top := RichEdit1.Top + R.Top - 15;
         Height := R.Bottom - R.Top + 30;
         end;
      case I of
         1: Top := RichEdit1.Top + R.Top - 1;
         2: Top := RichEdit1.Top + R.Bottom + 1;
         3: Left := RichEdit1.Left + R.Left - 1;
         4: Left := RichEdit1.Left + R.Right + 1;
         end;
      end;
   end;
end;
Steffen
Steffen
  Mit Zitat antworten Zitat
 


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 20:18 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