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 |
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 |
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:
Das ist aus einem alten Testprogramm abgekupfert und soll ein grün/weißes Tabellierpapier anzeigen. Als Vorlage dürfte das wohl reichen. 8)
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; |
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 |
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