Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Memo / Synedit Hintergrundfarbe teilen Wie ? (https://www.delphipraxis.net/45638-memo-synedit-hintergrundfarbe-teilen-wie.html)

mschaefer 9. Mai 2005 21:31


Memo / Synedit Hintergrundfarbe teilen Wie ?
 
Moin, Spätmoin,

ich habe derzeit eine Memokomponente in der man Änderungen vornehmen kann.
Jetzt ergibt sich das Problem, dass Änderungen nur noch ab Zeile (sagen wir) 20
vorgenommen werden dürfen. Das mit der Zeilenabfrage und dem automatisch auf
ReadOnly schalten bei Zeilen über 20 bekomme ich geregelt.

Würde gerne aber die Hintergrundfarbe anpassen. Abgedunkelt bis Zeile 19 und ab 20 dann
aufgehellt. Mit ist aber nicht klar ob das überhaupt mit einem Memo geht. Richedit scheidet
derzeit aus, da ich in der Edit-StringList nach Textstücken Parse und da keine Formatanweisungen
stehen dürften.

Würde mich über Ideen und Hinweise freuen...

Grüße // Martin

Narayana 10. Mai 2005 19:37

Re: Memo / Synedit Hintergrundfarbe teilen Wie ?
 
hi Martin,

wenn ich dich richtig verstehe, willst du so zu sagen einen Farbverlauf mit der Hintergrundfarbe des MemoFeldes darstellen (also zeilenweise andere Hintergrundfarbe).

Ich habe mal in einer ListBox die Zeilen in verschiedenen Farben geschrieben.

Ich habe leider gerade den Code nicht hier, vielleicht finde ich ihn morgen...

Aber auf jeden Fall habe ich es mit dem OnDraw ereignis bewältigt (da kann man gezielt die einzelnen Zeilen beim schreiben ansprechen und die Font Werte verändern...). Kannst ja mal danach suchen... das MemoFeld hat sowas irgendwie nicht, aber eine ListBox wäre ja vielleicht auch geeignet für dich (sollte ja keine Formatierung drin sein).

Ich werd morgen mal den alten Code von mir suchen, falls du es bis dahin noch nicht selber gefunden hast :-D

Hansa 10. Mai 2005 19:55

Re: Memo / Synedit Hintergrundfarbe teilen Wie ?
 
Würde auch sagen, daß da so stimmt. Bzw. mit Memo schwer/nicht zu machen ist. Mit Listbox ginge es so :

Delphi-Quellcode:
procedure TForm1.ListBox1DrawItem(Control: TWinControl; Index: Integer;
  Rect: TRect; State: TOwnerDrawState);
var
  i : Integer;
begin
  for i := 1 to Listbox1.Items.Count do begin
    if Index mod 2 = 0 then begin
      Listbox1.Canvas.Brush.Color := $00FFAB;
      Listbox1.Canvas.FillRect(Rect);
      Listbox1.Canvas.TextOut(Rect.Left, Rect.Top, Listbox1.Items[Index]);
    end
    else
      Listbox1.Canvas.TextOut(Rect.Left, Rect.Top, Listbox1.Items[Index]);
  end;
end;
Das ist aus einem alten Testprogramm abgekupfert und soll ein grün/weißes Tabellierpapier anzeigen. Als Vorlage dürfte das wohl reichen. 8)

Narayana 11. Mai 2005 06:21

Re: Memo / Synedit Hintergrundfarbe teilen Wie ?
 
Moin,

ich habe meinen Code nun gefunden, aber der ist ganz ähnlich wie der von Hansa...

mir ist eingefallen, dass du wahrscheinlich doch keine ListBox verwenden kannst...man kann ja nicht schreiben in ihr. Wenn der benutzer selber Änderungen machen können soll, dann brauchst du irgendeine andere Komponente, die eine Funktion wie dies OnDrawItem der ListBox hat

Mir fällt da blos gerade keine ein.

Vie Erfolg beim suchen :-D

mschaefer 11. Mai 2005 10:00

Re: Memo / Synedit Hintergrundfarbe teilen Wie ?
 
Hallo Narayana, hallo Hansa,

Danke für Eure Beiträge!

Das Prinzip ist damit für mich klar: Memokomponente ableiten und Zeilen die als nicht änderbar markiert sind mit einem Rechteck auf dem Canvas hinterlegen. Das wird auch so passieren wenn es bei dem Memo bleibt. Allerdigns versuche ich mich noch etwas mit Synedit zu beschäftigen, aber ich denke das mit Farbhinterlegungen ist da auch nicht richtig gelöst.

Viele Grüße // Martin


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:31 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