Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi TRichEdit transparent bzw. mit Hintergrund (https://www.delphipraxis.net/72967-trichedit-transparent-bzw-mit-hintergrund.html)

Delphi-Freak 10. Jul 2006 11:44


TRichEdit transparent bzw. mit Hintergrund
 
Hi!
Ich habe schon viel herumgesucht, nur nichts hilfreiches gefunden. Ich möchte das TRichEdit auch nicht auf ein Bild kopieren und dort den Hintergrund einblenden, weil ich gerne das markieren etc. behalten würde.
Ich habe probiert die Message WM_ERASEBKGND abzufangen und dort den Hintergrund zu zeichnen, dann sieht man nur die aktuelle Zeile, und die auch mit schwarzem Hintergrund. Auch die Message WM_PAINT hat mir nicht weitergeholfen
Habt ihr noch eine Idee oder auch eine andere Komponente? Ich brauche das RichEdit eigentlich nur zum Anzeigen, markieren sollte aber trotzdem möglich sein. Eine Möglichkeit wäre noch TWebBrowser bzw. TMozillaBrowser (ich glaube so heißt die FireFox-Kompo) zu verwenden, aber das würde das Programm wieder unnötig aufblasen...

LG, ich

Flocke 10. Jul 2006 23:11

Re: TRichEdit transparent bzw. mit Hintergrund
 
Es sollte mit einer RichEdit-Komponente funktionieren, die Version 3 oder höher unterstützt (z.B. das TJvRichEdit von den Jedis). Davon musst du eine eigene Klasse ableiten und dort in der Methode CreateParams das Bit WS_EX_TRANSPARENT hinzufügen:
Delphi-Quellcode:
TJvRichEdit_Transparent.CreateParams(var Params: TCreateParams);
begin
  inherited CreateParams(Params);
  Params.ExStyle := Params.ExStyle or WS_EX_TRANSPARENT;
end;
Danach sollte das RichEdit einen transparenten Hintergrund haben.

Delphi-Freak 11. Jul 2006 11:07

Re: TRichEdit transparent bzw. mit Hintergrund
 
Danke mal, aber irgendwie wills bei mir nicht. Es zeigt das RichEdit zwar an, aber nicht transparent. Frage dazu - müsste das dann nicht auch mit setWindowLong und GWL_EXSTYLE gehen?

LG, ich

Flocke 11. Jul 2006 19:13

Re: TRichEdit transparent bzw. mit Hintergrund
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zu deiner Frage: es kann sein, muss aber nicht. Meine Vermutung ist, dass das RichEdit-Control die Bits nur in WM_CREATE auswertet und danach nicht mehr.

Zur Transparenz: bei mir funktionierts - allerdings mit einer komplett eigenen Komponente und nicht TJvRichEdit. Ggf. musst du noch WM_ERASEBKGND abfangen und einfach 1 zurückliefern:
Delphi-Quellcode:
procedure TJvRichEdit_Transparent.WMEraseBkgnd(var Msg: TWMEraseBkgnd);
begin
  Msg.Result := 1;
end;
Das angehängte Bild zeigt einen völlig sinnlosen Text in einem transparent RichEdit-Control. Kleines Problem sind nur die Scrollbars, die stellenweise nicht neu gezeichnet werden.

Zacherl 11. Jul 2006 19:16

Re: TRichEdit transparent bzw. mit Hintergrund
 
Hi,
oder nimm das JvRichEdit. Da kannst du ein Hintergrundbild festlegen.

Florian

Delphi-Freak 11. Jul 2006 20:18

Re: TRichEdit transparent bzw. mit Hintergrund
 
Ist mir irgendwie nicht aufgefallen - mit welcher Eigenschaft? Oder als Objekt? - Geht es dann auch "fixed"?

LG, ich

Zacherl 11. Jul 2006 20:29

Re: TRichEdit transparent bzw. mit Hintergrund
 
Zitat:

Zitat von Delphi-Freak
Ist mir irgendwie nicht aufgefallen - mit welcher Eigenschaft? Oder als Objekt? - Geht es dann auch "fixed"?

Die JvRichEdit Komponente? Die Eigenschaft heißt glaube ich "BackgroundImage" Ob "fixed" geht, weiß ich nicht. Meine aber es wäre sogar immer "fixed". Versuchs einfach mal ...

Florian

Delphi-Freak 11. Jul 2006 20:31

Re: TRichEdit transparent bzw. mit Hintergrund
 
Gibts aber nicht - zumindestens nicht bei mir...

LG, ich

Zacherl 11. Jul 2006 20:46

Re: TRichEdit transparent bzw. mit Hintergrund
 
Seltsam ... ich bin mir sicher, dass ich eine solche Eigenschaft mal bei einer RichEdit ähnlichen Komponente in den Jedis gesehen habe. Hast du die neuste Version?

Delphi-Freak 11. Jul 2006 20:51

Re: TRichEdit transparent bzw. mit Hintergrund
 
Ich habe Version 3.10...

LG, ich

PS: Entschuldige, wenn ich in nächster Zeit nicht antworte, ich habe nicht unbedingt dann Zeit.


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:28 Uhr.
Seite 1 von 2  1 2      

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