Allgemeine Fragen zur PROFAN Programmierung

Views (Heute): 241771 (3207)

| Suchen
| Zurück zur Übersicht

Autor | Thema: %MouseKey und %ScanKey
Wolfgang Voigt
| Datum:11.09.02 08:47 (wolfgang.voigt@modata.de) |
Hallo allerseits ich bin über einen Fehler (?) in Profan gestolpert. Die Systemvariablen %MouseKey und %ScanKey werden bei einem 2.waitinput mit Focus auf ein DialogFenster nicht gesetzt. Beispiel siehe unten. Tritt in Version 4.5;7.0;7.5 auf. Ist es ein Fehler ( wie kann ich ihn umgehen ?) oder stelle ich mich nur zu blöd an ? Für eine baldige Antwort bin ich dankbar, weil ich sonst in meinem Projekt nicht weiter komme. Besten Dank Wolfgang Declare ProgCtrl%, ausw$, pos% PROC auswahl '=========== Declare h_lb%, h_dlg%, ctrl% Let h_dlg% = @createdialog(%Hwnd," TEST ",250,50,100,180) Let h_lb% = @CreateListBox(h_dlg%,"",3,3,98,148) @AddString(h_lb%,"text1") @AddString(h_lb%,"text2") @AddString(h_lb%,"text3") @setFocus(h_lb%) Let ctrl% = 1 WHILE ctrl% waitinput print "S", %MOUSEKEY, %ScanKey, %KEY CASE @equ(%KEY,13) : Let ctrl% = 0 ' Enter CASE @equ(%KEY,2) : Let ctrl% = 0 ' Schliessen CASE @equ(%MOUSEKEY,1) : Let ctrl% = 0 ' linkeMausTaste ENDWHILE Let ausw$ = @GetString$(h_lb%,@GetCursel(h_lb%)) Let pos% = @GetCursel(h_lb%) @DestroyWindow(h_dlg%) ENDIF print "> ", pos%, ausw$ ENDPROC WindowTitle "TEST" WindowStyle $0F Window 1,1-800,600 AppendMenuBar 99," &Ende " AppendMenuBar 220," &TEST " Let ProgCtrl% = 0 WHILENOT ProgCtrl% WaitInput print "M", %MOUSEKEY, %ScanKey, %KEY IF @MenuItem(99) Let ProgCtrl%=1 ELSEIF @MenuItem(220) auswahl ENDIF ENDWHILE END
Thomas Ungerböck
| Datum:11.09.02 12:01 (Kerzenlicht@Chello.at) |
Hallo Wolfgang In Dialogfenstern funktionieren %Mousekey und %Scankey usw. nicht. Da musst du dir anders helfen. (Wär schön wenn das bei Profan 8.0 endlich geändert wird). Hier ein kleiner Testquelltext:
    DECLARE Mausposition#,x&,y&
    Dim Mausposition#, 4

    Windowstyle 8
    Cls
    Window 0,0-1024,768
    @CreateWindow(%Hwnd,"",100,0,250,450)
    While 1
    Getmessage
    case @Equ(&WParam,27):break
    Long Mausposition#, 0 = &LParam
    x& = @Word(Mausposition#,0)
    y& = @Word(Mausposition#,2)
    Print "  @getactivewindow()",@getactivewindow(),"  %Message",%Message,"  &WParam",&WParam,"  &LParam",&LParam,"  %MWnd",%MWnd,"  %PeekMessage",%PeekMessage,"  %LastMessage",%LastMessage
    Print "    ",X&,"   ",Y&
    Wend
    Dispose Mausposition#
    End
&Wparam gibt dir die gedrückte Taste wieder, bei &LParam ist die Mausposition. Gruß Thomas
Wolfgang Voigt
| Datum:11.09.02 13:01 (wolfgang.voigt@modata.de) |
Besten Dank für die schnelle Antwort. Leider ist mir damit nicht wirklich geholfen. Mein Dialogelement wird nur von einer Listbox ausgefüllt, in der bis zu 40 Elemente auswählbar sein sollen. Diese Auswahl soll mit der Maus (Doppelklick) oder mit den Cursortasten und Enter möglich sein, je nach User. Das Dialogelement ist nur vorhanden, um die Auswahl mit <Schliessen> abbrechen zu können. Gibt es da überhaupt keine andere Möglichkeit, als auf Profan 8.0 zuwarten, wo ich mir doch gerade 7.5 zugelegt habe. m.f.g Wolfgang
Gumpp Dieter
| Datum:12.09.02 17:20 (Dieter.Gumpp@t-online.de) |
Hallo, wozu brauchst du in der Listbox eigentlich diese Mausabfragen? Mit @GetCursel(h_lb%) kannst du mit Maus und Tastatur die Elemente anwählen und abfragen. Oder hab ich da was falsch verstanden? MfG Dieter
Wolfgang Voigt
| Datum:13.09.02 08:35 (wolfgang.voigt@modata.de) |
Hallo Dieter es geht mir darum, das ich mit Enter oder Doppelklick eine Auswahl treffen kann, mit @GetCursel(h_lb%) hole ich dann die Position ab.
Dieter Gumpp
| Datum:14.09.02 12:43 (Dieter.Gumpp@t-online.de) |
Hallo Wolfgang, versuchs mal mit dieser kleinen Routine. Funktioniert bei mir ganz gut. Man kann mit Maus und Tastatur auswählen/abfragen und das TestFenster mit x wegklicken. MfG Dieter Declare ProgCtrl%, ausw$, pos%,h_lb%,taste%,button%,msg% PROC auswahl '=========== Declare h_dlg%, ctrl% Let h_dlg% = @createdialog(%Hwnd," TEST ",250,50,100,180) Let h_lb% = @CreateListBox(h_dlg%,"",3,3,98,148) @AddString(h_lb%,"text1") @AddString(h_lb%,"text2") @AddString(h_lb%,"text3") @AddString(h_lb%,"text4") @AddString(h_lb%,"text5") @AddString(h_lb%,"text6") @AddString(h_lb%,"text7") @AddString(h_lb%,"text8") @AddString(h_lb%,"text9") @setFocus(h_lb%) Let ctrl% = 1 WHILE ctrl% getmessage button% = 0 taste% = 0 msg% = %message If @equ(msg%,$100) 'tastaturabfrage button% = -1 taste% = &WPARAM 'welche taste? ElseIf @equ(msg%,15) 'fenster schliessen mit x button% = 15 ElseIf @equ(%message,$0134) 'maus links button% = 1 ElseIf @equ(%message,$0202) 'maus links doppelklick button% = 11 ElseIf @equ(%message,$0204) 'maus rechts button% = 2 ElseIf @equ(%message,$0206) 'maus rechts doppelklick button% = 22 EndIf rem If @Equ(button%,-1) Print "Taste>",taste% ElseIf @Equ(button%,2) Print "rechts" ElseIf @Equ(button%,22) Print "rechts doppelt" ElseIf @Equ(button%,1) Print "links" ElseIf @Equ(button%,11) Print "links doppelt" EndIf CASE @equ(taste%,13) : Let ctrl% = 0 ' Enter CASE @equ(button%,15) : Let ctrl% = 0 ' Schliessen x CASE @equ(button%,11) : Let ctrl% = 0 ' Schliessen DoppelKlick links ENDWHILE Let ausw$ = @GetString$(h_lb%,@GetCursel(h_lb%)) Let pos% = @GetCursel(h_lb%) @DestroyWindow(h_dlg%) ENDIF print "> ", pos%, ausw$ ENDPROC WindowTitle "TEST" WindowStyle $0F Window 1,1-800,600 AppendMenuBar 99," &Ende " AppendMenuBar 220," &TEST " Let ProgCtrl% = 0 WHILENOT ProgCtrl% WaitInput print "M", %MOUSEKEY, %ScanKey, %KEY,@GetCursel(h_lb%) IF @MenuItem(99) Let ProgCtrl%=1 ELSEIF @MenuItem(220) auswahl ENDIF ENDWHILE END
Wolfgang Voigt
| Datum: 16.09.02 09:16 (wolfgang.voigt@modata.de) |
Hi Dieter, Danke für Deine Unterstützung, funktioniert gut. mfg Wolfgang

| Zurück zur Übersicht