Autor Beitrag
MasterHiggins
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 64



BeitragVerfasst: Fr 28.02.03 15:56 
Hi,

hab mal wieder ne Frage:

Ich will für ein Programm eine Startleiste programmieren.
Habe ich also einfach mit Panels gemacht (Damit ich da reinladen kann was ich will). Was mir noch fehlt ist, dass das Panel über dem die Maus steht seine Hintegrundfarbe ändert (eben wie bei Windows)

Gibts da eine Eigenschaft / ein Ereigniss, dass ich einfach nicht gefunden habe?

Oder gibts schon so ein Thema im Forum das ich einfach nicht gefunden habe?

Danke
MasterHiggins Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 64



BeitragVerfasst: Fr 28.02.03 17:35 
Inzwischen habe ich dann die Antwort dann doch (fast) selber gefunden.

Ist ja einfach nur "onMouseMove". Aber:

Wie kann ich jetzt noch sagen, dass er sobald es KEIN onMouseMove mehr gibt, er wieder etwas macht?
FD-83
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 49



BeitragVerfasst: Fr 28.02.03 17:36 
Jedes von TControl abstammende Steuerelement hat das Ereignis "OnMouseMove", welches IMMER ausgelöst wird wenn der Mauszeiger über dem Objekt bewegt wird.

Einige Control haben auch die Ereignisse "OnEnter" und "OnLeave". Die sind sehr praktisch um z.B. die Frabe zu ändern wenn der Mauszeiger pber dem Element ist und sie wieder "normal" zu machen wenn der Mauszeiger das Object verlässt...

Nur haben die meisten Komponenten diese Ereignisse standardmässig nicht. Du kannst sie aber manuell nachrüsten, indem du eine Abgeleitete Komponente des Controls erstellst und die Windows-Messages WM_MOUSEENTER und WM_MOUSELEAVE abfängst und selber ein Ereignis auslöst.

Für ein TImage sähe das dann so aus:
www.swissdelphicente...showcode.php?id=1068

Das könntest du auch mit deinem Panel machen...

[edit]
Ohh ich sehe gearde, dass das Panel zu dem Komponenten gehört die die beiden Ereignisse schon besitzen :roll:

Na denn isses kein Problem dann nimmst du einfach OnEnter und OnLeave
[/edit]

Gruss Frederik
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 28.02.03 19:06 
Man kann das auch nachrüsten, wenn eine Kompo dies nicht bietet. Siehe auf dieser Seite ganz unten: www.delphi-fundgrube.de/faq15.htm
Und der direkte Link zu dem Dokument: www.delphi-fundgrube.de/files/messages.rtf
MasterHiggins Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 64



BeitragVerfasst: Mo 03.03.03 10:19 
Danke für eure Antworten.

Habe ich noch nicht ausprobiert, komme ich wohl aber vor meinem Urlaub auch nicht mehr zu.

Also in 3 Wochen folgen weitere Fragen :wink:

MfG
MasterH
MasterHiggins Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 64



BeitragVerfasst: Mo 03.03.03 12:16 
Habe doch noch Zeit dafür :wink:

Also, wie frage ich dann dieses "OnLeave" ab?

In den Ereignissen des Panels im Oberinspektor steht nichts drin.

Wie benutze ich das dann?
Tendl
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 117



BeitragVerfasst: Di 04.03.03 09:42 
Titel: Es ist in Delphi alles ziemlich einfach!
Du mußt nicht abfragen. Du trägst einfach im Objectinspector einen neuen Procedurenamen ein. Nach einem Return wird in Sourcefenster der Rumpf der Procedure angelegt. Du schreibst nur noch in die Procedure was passieren soll.
Den Aufruf erledigt das OS für Dich.


Thomas
MasterHiggins Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 64



BeitragVerfasst: Di 04.03.03 09:56 
Klingt ja eigentlich recht simpel....

aber wie trage ich den in den Oberinspektor eine neue Prozedur ein, sprich wie kriege ich eine neue leere Zeile? :oops:
wulfskin
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1349
Erhaltene Danke: 1

Win XP
D5 Pers (SSL), D2005 Pro, C, C#
BeitragVerfasst: Di 04.03.03 11:06 
Hallo MasterHiggins!

Ganz so einfach ist es dann doch nicht: Man kann nicht einfach ein neues Ereignis in den Objektinspektor eintragen.
Deshalb musst du eine neue Komponente erstellen und sie von der ursprünglichen Ableiten und diese dann wieder installieren. Auf der Seite vom SwissDelphiCenter ist beschrieben wie das geht. Der Link steht hier weiter oben!

Gruß wulfskin!

_________________
Manche antworten um ihren Beitragszähler zu erhöhen, andere um zu Helfen.
Tomac
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 113

Win XP
D6 Ent
BeitragVerfasst: Di 04.03.03 17:08 
Ginge das nicht viel einfacher, zum Beispiel so:

panel onmousemove:

panel1.color:=clred;

form onmousemove

panel1.color:=clblue;

Wenn das Panel auf der Form plaziert ist müsste das doch eigentlich reichen.