Delphi-PRAXiS
Seite 1 von 2  1 2      

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 In einer Klasse Messages für alle Komponenten abfangen (https://www.delphipraxis.net/91463-einer-klasse-messages-fuer-alle-komponenten-abfangen.html)

LH_Freak 5. Mai 2007 08:51


In einer Klasse Messages für alle Komponenten abfangen
 
Hi hi, alle miteinander...

ich programmiere ja immer noch an der Skinkomponente für M.U.H Messenger (es macht Fortschritte ;-), kaum zu glauben aber wahr)...jetzt steh ich vor dem Problem, dass ich ja alle Komponenten überzeichnet aufs Formular zeichnen muss...das klappt bis jetzt ganz gut...allerdings will ich nicht jeden Redraw, HoverEffekt etc. durch ein MouseOver ermitteln. Das ruckelt dann schon alles etc.
Deswegen hab ich mir gedacht, ich könnte doch irgendwie die Messages, die sich aufs zeichnen beziehen von all den Komponenten auf dem Formular abfangen und dann das ganze zeichnen...allerdings steh ich grad auf dem Schlauch ob das überhaupt geht und wie das geht...ich hoffe mir kann da jemand helfen

MfG
LH_Freak

Ach ja...es wäre nett wenn mir jemand helfen könnte wie ich das löse, falls das mit den Messages nicht funktioniert...Danke :D

LH_Freak 6. Mai 2007 09:46

Re: In einer Klasse Messages für alle Komponenten abfangen
 
also ich denke mal, dass ich dafür Hooks verwenden muss...hat dazu jemand ein gutes Tutorial? Ich hab bisher nur eins für C++ gefunden...allerdings wäre dass sowas was ich will...ich werde mal schaun ob ich damit zurecht komme...

sirius 6. Mai 2007 09:57

Re: In einer Klasse Messages für alle Komponenten abfangen
 
Schau mal da!

Manne 6. Mai 2007 09:58

Re: In einer Klasse Messages für alle Komponenten abfangen
 
Hi,

schau dir mal den Windows XP Theme Manager von Mike Lischke an. [ Link ]
Er zeichnet das den XP Style über jedes Control.

Manne

TStringlist 6. Mai 2007 18:38

Re: In einer Klasse Messages für alle Komponenten abfangen
 
Eventuell langt aber auch schon die Benutzung eines einfachen "Application.OnMessage".

LH_Freak 13. Mai 2007 09:48

Re: In einer Klasse Messages für alle Komponenten abfangen
 
Ok, also erstmal danke...
im Moment versuche ich die WindowProcs der Komponenten zu überschreiben...das funktioniert auch gut...
allerdings weiß ich jetzt nicht wirklich welche Messages ich alle abfangen muss :oops:
Was löst z.B. bei einem Edit den Redraw aus wenn ich tippe? WM_TEXTCHANGE hat nicht funktioniert...hmhm...gibts da irgendwas wo man bezüglich dem nachschauen kann?

Apollonius 13. Mai 2007 09:58

Re: In einer Klasse Messages für alle Komponenten abfangen
 
Ich vermute mal, dass das eigentliche Neuzeichnen von WM_PAINT ausgelöst wird.

SirThornberry 13. Mai 2007 10:28

Re: In einer Klasse Messages für alle Komponenten abfangen
 
du musst auf wm_paint und wm_erasebkrnd (oder wie man das schreibt) mindestens eingehen.

LH_Freak 13. Mai 2007 17:12

Re: In einer Klasse Messages für alle Komponenten abfangen
 
ya...das mach ich ja...aber ich muss ja auch drauf reagieren wenn das Eingabefeld den Fokus bekommt, wenn man text ändert...da bekommt das Edit kein WM_PAINT...so hab ichs zumindest festgestellt...

negaH 14. Mai 2007 10:26

Re: In einer Klasse Messages für alle Komponenten abfangen
 
Schau mal, was machen alle deine Komponenten ?

Sie bekommen unterschiedlichste Messages, speichern intern unterschiedlichste Staties und stellen dies auf dem Bildschirm dar.
Logische Konsequenz: möchtest du per Hooks, egal ob Windowsbotschaften oder die vielen Delphi-VCL-Botschaften, alles abfangen und selber machen, dann wäre es besser deine eigenen Komponenten zu bauen. Denn der Aufwand ist höher mit den Hooks. Der Tipp mit den Themes ist schon richtig, denn das ist der präferierte Weg. Mit Hooks wirst du immer nur gezielte und einfache Manipulationen bewerkstelligen können und hast niemals den kompletten Zugriff auf alle internen Staties deiner Komponenten. Das was du versuchst ist so als ob du das Verhalten aller Menschen kontrollieren möchtest indem du alles von Aussen kontrollierst, also Wind,Wetter,Fernsehen,Nahrung etc.pp. ohne das du die innersten Gedanken der Menschen direkt beeinflussen kannst.

Mit Hooks wirst du auf lang oder kurz an einem Punkt ankommen bei dem du besser über alle Komponenten, die du beeinflussen möchtest, bescheid weist als der Programmierer der diese Komponenten erzeugt hat. Ergo: dann bist du schneller wenn du all diese Komponenten durch eigene Entwicklungen ersetzt. Einzigster Ausweg ist die Benutzung eines APIs das exakt diese Veränderungen vorsieht, und das sind die Themes.

Gruß Hagen


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