Guten Tag miteinander
Ich habe folgendes Problem:
Wir haben eine eigene Klasse welche von XbpSLE abgeleitet ist.
In dieser Klasse überschreiben wir die Methode lbclick.
Diese Methode wurde vererbt und war deswegen auch leicht zu implementieren.
Nun aber möchten wir eine Methode für ctrl + lbclick. Also eine Ereignismethode für den CTRL + Linksklick.
Ich habe schon versucht in der Methode lbclick irgendwie abzufangen ob nun ctrl gedrückt wurde, aber ich habe das Gefühl, dass ctrl alleine gar nicht erkannt wird von XBase.
Danke euch im voraus!
Grüsse
Marco
Ereignismethode programmieren
Moderator: Moderatoren
- brandelh
- Foren-Moderator
- Beiträge: 15699
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 68 Mal
- Danksagung erhalten: 34 Mal
- Kontaktdaten:
Re: Ereignismethode programmieren
Tastatur und Maus sind getrennte Geräte und haben getrennte Events.
Ob die STRG ( CTRL ) Taste alleine Events erzeugt weiß ich jetzt gar nicht, das müsste man im KEYBOARD Event abfragen.
Eventuell mit einer eigenen FLAG Variable ( STRG ein / aus), die bei einem LB-Event abgefragt wird.
Ich meine dass man mit den Clipper Tools III den Zustand der STRG Taste abfragen konnte (ich könnte mich aber auch irren),
falls das bei Clipper (DOS) ging, muss das aber bei Xbase++ (Win32) nicht unbedingt auch so sein.
Ich würde ein einfaches Fenster machen und MAUS und KEYBOARD Events dieses Fensters protokollieren, so ermittle ich was wann wo ankommt.
Ob die STRG ( CTRL ) Taste alleine Events erzeugt weiß ich jetzt gar nicht, das müsste man im KEYBOARD Event abfragen.
Eventuell mit einer eigenen FLAG Variable ( STRG ein / aus), die bei einem LB-Event abgefragt wird.
Ich meine dass man mit den Clipper Tools III den Zustand der STRG Taste abfragen konnte (ich könnte mich aber auch irren),
falls das bei Clipper (DOS) ging, muss das aber bei Xbase++ (Win32) nicht unbedingt auch so sein.
Ich würde ein einfaches Fenster machen und MAUS und KEYBOARD Events dieses Fensters protokollieren, so ermittle ich was wann wo ankommt.
Gruß
Hubert
Hubert
-
- UDF-Programmierer
- Beiträge: 72
- Registriert: Fr, 09. Jun 2006 13:31
- Wohnort: Friesenried
- Danksagung erhalten: 5 Mal
- Kontaktdaten:
Re: Ereignismethode programmieren
Es ist einfache das Sle abzuleiten.
z.B.
Im Handleevent kannst du alle Events abfangen.
Grüße
Dieter
DS-Datasoft GmbH & Co.KG
z.B.
Code: Alles auswählen
CLass mySLE From xbpSle
Exported:
Method HandleEvent
ENDCLASS
METHOD mySle:HandleEvent(nEvent, mp1, mp2)
::xbpSle:HandleEvent(nEvent, mp1, mp2)
if nEvent == xbeP_Keyboard .and. mp1 == xbeK_
RETURN self
Grüße
Dieter
DS-Datasoft GmbH & Co.KG
Re: Ereignismethode programmieren
Hallo nochmals
Danke vielmals für die raschen Antworten!
Habe den Vorschlag von Dieter Stelzner umgesetzt und das HandleEvent eingebaut.
Dann gebe ich mir in einer Nachricht das aktuelle Event aus.
Die Events 1048626 und 1048598 sind glaube ich Hover Events und erscheinen andauernd wenn ich übers Objekt fahre, deswegen habe ich sie abgefangen.
Bei einem Linksklick kriege ich das Event "1048583". Wenn ich die Maus danach bewege wird "1048658" mitgeschickt.
Allerdings erhalte ich kein Event wenn ich die CTRL-Taste gedrückt habe. Auch in Verbindung mit dem Mausklick erhalte ich nur die Events die ich auch ohne CTRL erhalte.
Danke vielmals für die raschen Antworten!
Habe den Vorschlag von Dieter Stelzner umgesetzt und das HandleEvent eingebaut.
Dann gebe ich mir in einer Nachricht das aktuelle Event aus.
Code: Alles auswählen
IF nEvent != 1048626 .AND. nEvent != 1048598
Pop_Msg( Str(nEvent,,0) )
ENDIF
Bei einem Linksklick kriege ich das Event "1048583". Wenn ich die Maus danach bewege wird "1048658" mitgeschickt.
Allerdings erhalte ich kein Event wenn ich die CTRL-Taste gedrückt habe. Auch in Verbindung mit dem Mausklick erhalte ich nur die Events die ich auch ohne CTRL erhalte.
-
- UDF-Programmierer
- Beiträge: 72
- Registriert: Fr, 09. Jun 2006 13:31
- Wohnort: Friesenried
- Danksagung erhalten: 5 Mal
- Kontaktdaten:
Re: Ereignismethode programmieren
Hallo,
die Ctrl Taste und andere kannst du mit AppKeyState() abfragen.
die Ctrl Taste und andere kannst du mit AppKeyState() abfragen.
Re: Ereignismethode programmieren
Super danke!!
Habe es soeben ausprobiert mit AppKeyState(xbeK_CTRL) und es funktioniert!
Kriege 1 bei gedrückter CTRL Taste und 0 wenn sie nicht gedrückt ist.
Genau sowas habe ich gesucht! Danke vielmals für die rasche Hilfestellung!
Habe es soeben ausprobiert mit AppKeyState(xbeK_CTRL) und es funktioniert!
Kriege 1 bei gedrückter CTRL Taste und 0 wenn sie nicht gedrückt ist.
Genau sowas habe ich gesucht! Danke vielmals für die rasche Hilfestellung!