Hi,
Markus Walter hat geschrieben:
es ging (natürlich) um mein Problem mit dem Kontext-Menü im XbpHtmlViewer, respektive generell um das Thema: Reagieren auf Ereignisse, die auftreten wenn ein ActiveX-Control den Focus hat.
z. B.:
- Unterdrücken des Context-Menü beim XbpHtmlViewer
- ESC (oder sonstige Tastatur-Events) behandeln, wenn der XbpHtmlViewer den Focus hat
sorry vorweg : hast du dich schon mal mit einem anderen activeX
ausser den von Alaska beschätig ?
In
findest du ja den Source zu allen "neuen" activex Class(en).
Dort musst du ansetzten !
Markus Walter hat geschrieben:
Habe zwischenzeitlich meine Subscription im OnlineShop verlängert (und wenn Alaska den Geldeingang verzeichnet, darf ich auch wieder Support-Anfragen stellen...)
Wenn das obrige deine Anfrage war kann ich es verstehen das keine
Antwort kommt ... Das muss der User lernen.
Ich glaube auch kaum das Alaska den Source jemals "aufbohren" wird
damit man damit "vernünftig" was machen kann ... eben so wie auch die
anderen Beispiele nur rundimentär sind.
Gewarnt hatte ich schon zur beta Phase von v1.9x, das die notwendigen
*.OCX M$ComClt32 etc., sich nicht unter XP Pro x64 installieren lassen
und es dabei zu Crash kommt. Unter VISTA32 scheint es zu gehen aber
unter VISTA64 ist das selbe Problem wie XP64 ... crash.
Markus Walter hat geschrieben:
Ich hätte auch noch den ein oder anderen Bug zu melden (teilweise wieder zu melden):
- GetUniqueFileName() erzeugt eine Datei im Temp-Verzeichnis und löscht diese nicht wieder (habe ich schon im Sommer letzten Jahres gemeldet, ist noch nicht mal als PDR angelegt)
und wie öft pro Tag "nervst" du die damit ?
Markus Walter hat geschrieben:
- ich habe immer noch massive Probleme mit "Systemlast 100%" bei einigen meiner Anwender, aber da hat Alaska keine Idee, wobei man in den diversen Foren/newsgroups ja auch schon von einigen anderen Programmieren gelesen hat, die offenbar exakt die gleichen Probleme haben.
Da habe ich langsam Anwender, die richtig sauer sind!
schon mal EventSpy angesetzt ? Damit hab ich meine Probleme gefunden
wenn ich mal wieder einen Event an das falsche Object geschickt habe.
Wenn man dann bei 100% CPU mit ALT-C abbricht findet man sich
meistens an folgendert Stelle wieder :
Code: Alles auswählen
OTHERWISE
oXbp:HandleEvent ( nEvent, mp1, mp2 ) // -> hier bei 100%
ENDCASE
ENDDO
also wenn du :Keyboard Slot oder PostAppEvent(xbeP_Keyboard,x,y,Obj)
verwendest, dann würde ich darauf wetten das es dort passiert.
Manchmal hatte ich davon "zuviel" verwendet und ebenfall 100% CPU.
Code: Alles auswählen
PROCEDURE MAIN
...
oDlg := XbpDialog():new( AppDesktop(),, aPos, aSize, , .F.)
...
oXbp := Xbp_xxx():new()
AADD(aControls,oXbp) // control to keyhandler
...
//
// install keyboard handler
//
bKeyHandler := {|nKey,uNIL,obj| MAINKEYS(nKey, ....) }
AEval( aControls, {|o| o:keyBoard := bKeyHandler } )
...
DO WHILE .NOT. SP_MainExit()
nEvent := AppEvent( @mp1, @mp2, @oXbp, nTimeout ) // nTimeout
DO CASE
...
//
// do NOT Scroll2bar :keyboard here !!!
//
* CASE nEvent == xbeP_Keyboard .AND. mp1 == xbeK_RIGHT
* IF oBar:getData()+1 > SP_Duration()
* oBar:setData( SP_Duration() )
* ELSE
* oBar:setData( oBar:getData()+1 )
* ENDIF
* Scroll2bar( oBar:getData(), XBPSB_NEXTPOS ... )
* setAppFocus(oDlg)
...
OTHERWISE
oXbp:handleEvent( nEvent, mp1, mp2 ) // hier 100%
ENDCASE
man sieht also das ich jedem XbPart schon einen :Keyboard Handler
zugewiesen habe. Wenn ich in der Main darauf reagiere lande ich
irgendwann bei Otherwise ...
Wenn ich allerdings den :Keyboard Handler nehme funktioniert alles
Code: Alles auswählen
PROCEDURE MAINKEYS(nKey, ...)
DO CASE
...
CASE nKey == xbeK_RIGHT
IF aoChild[CH_BAR]:getData()+1 > SP_Duration()
aoChild[CH_BAR]:setData( SP_Duration() )
ELSE
aoChild[CH_BAR]:setData( aoChild[CH_BAR]:getData()+1 )
ENDIF
Scroll2bar( aoChild[CH_BAR]:getData(), XBPSB_NEXTPOS ... )
setAppFocus(aoChild[CH_BAR])
...
wie man sehen kann ist der Code absolute identisch, aber in der Main loop
geht es eben nicht, deshalb möglist nicht die DO WHILE loop benutzen
sondern wenn möglich immer einen :Keyboard Slot benutzen.
gruss by OHR
Jimmy