Seite 1 von 1

Eingabe über String

Verfasst: 02.11.2006 13:47
von Reich
Ich versuche mich mit Purebasic anzufreunden und stosse gleich auf ein Hindernis:
case...
if eventType()=#PB_eventtype_returnkey
messagerequester...


Nach aktivieren des string-gadgets kann ich in den String schreiben, aber nicht mit Return beenden. Was mache ich falsch ?

In GadgetDEMO.pb erscheint unten rechts ein solcher String, und dort geht es auch nicht ??
Ich bedanke mich für Hilfe.

Verfasst: 02.11.2006 13:57
von ts-soft
StringGadgets kann man in Windows normallerweise nicht mit Return
beenden, sondern mit TAB. Du kannst Dir aber mit einem KeyBoardShortcut
behelfen.

PS: Herzlich Willkommen

Gruß
Thomas

// Nachtrag:
Hier mal ein Beispiel:

Code: Alles auswählen

If OpenWindow(0, #PB_Ignore, 0, 640, 480, "")
  AddKeyboardShortcut(0, #PB_Shortcut_Return, 0)

  If CreateGadgetList(WindowID(0))
    StringGadget(0, 10, 10, 620, 30, "")
    
    Repeat
      Select WaitWindowEvent()
        Case #PB_Event_Menu
          If EventMenu() = 0 ;Return
            If GetActiveGadget() = 0 ; Stringgadget
              Debug "Im StringGadget Return gedrückt"
            EndIf
          EndIf
        Case #PB_Event_CloseWindow
          Break
      EndSelect
    ForEver   
  EndIf
EndIf

string

Verfasst: 03.11.2006 15:58
von Reich
Danke für die schnelle Antwort.
Leider läuft das genannte Beispiel bei mir nicht (PB-Version 3.0). Der Compiler akzeptiert z.B. 'PB_ignore undnEvent_Menu nicht.

Gibt es eine einfache Möglichkeit, Daten über die Tastatur einzugeben, z.B. Zahlenwerte für Berechnungen ?
Input ist ja nur für Konsolenbetrieb vorgesehen, und das können einfache Basics auch.

Danke
Reich

Re: string

Verfasst: 03.11.2006 16:03
von Kiffi
<OT>

> PB-Version 3.0

Schreib das bitte in Deine Signatur!

</OT>

Grüße ... Kiffi

Verfasst: 03.11.2006 16:25
von STARGÅTE
Ich als 3.3 nutzer habe mal übersetzt :allright:

Code: Alles auswählen

If OpenWindow(0, 0, 0, 640, 480, #PB_Window_SystemMenu, "") 
 AddKeyboardShortcut(0, #PB_Shortcut_Return, 0) 
 If CreateGadgetList(WindowID(0)) 
  StringGadget(0, 10, 10, 620, 30, "") 
  
  Repeat 
   Select WaitWindowEvent() 
    Case #PB_Event_Menu 
     If EventMenuID() = 0 ;Return 
      If EventGadgetID() = 0 ; Stringgadget 
       Debug "Im StringGadget Return gedrückt" 
      EndIf 
     EndIf 
    Case #PB_Event_CloseWindow 
     End
   EndSelect 
  ForEver 
 EndIf 
EndIf

Verfasst: 03.11.2006 16:43
von ts-soft
STARGÅTE hat geschrieben:Ich als 3.3 nutzer habe mal übersetzt :allright:
Aber leider verkehrt :wink:
Reagiert jetzt immer, nicht nur im StringGadget.
Hier in PB3.94 Syntax, die sollte gehen, hoffe ich mal:

Code: Alles auswählen

If OpenWindow(0, 0, 0, 640, 480, #PB_Window_SystemMenu, "")
 AddKeyboardShortcut(0, #PB_Shortcut_Return, 0)
 If CreateGadgetList(WindowID(0))
  StringGadget(0, 10, 10, 620, 30, "")
 
  Repeat
   Select WaitWindowEvent()
    Case #PB_Event_Menu
     If EventMenuID() = 0 ;Return
      If GetFocus_() = GadgetID(0) ; Stringgadget
       Debug "Im StringGadget Return gedrückt"
      EndIf
     EndIf
    Case #PB_Event_CloseWindow
     End
   EndSelect
  ForEver
 EndIf
EndIf 

Verfasst: 03.11.2006 20:19
von STARGÅTE
GetFocus_() = GadgetID(0) ist aber das gleich wie EventGadgetID() = 0 denn beide fragen ab welche Gadget gerade "aktiv" ist also benutz wird

Verfasst: 03.11.2006 20:25
von ts-soft
STARGÅTE hat geschrieben:GetFocus_() = GadgetID(0) ist aber das gleich wie EventGadgetID() = 0 denn beide fragen ab welche Gadget gerade "aktiv" ist also benutz wird
Nein, das aktuelle Ereignis ist ein Menü-Ereignis, kein Gadget-Ereignis.
EventGadgetID() ist garnicht bestückt :wink:
Vielleicht einfach mal testen. Der Debugger reagiert bei Deinem Beispiel
immer, auch wenn das Fenster den Fokus hat, mein Beispiel nur wenn der
Fokus im StringGadget liegt. Das ist schon sehr wichtig.

Dafür kann ich aber keine Spiele proggen :wink:

Verfasst: 03.11.2006 22:32
von STARGÅTE
OK dann aber so !

Code: Alles auswählen

If OpenWindow(0, 0, 0, 640, 480, #PB_Window_SystemMenu, "") 
 AddKeyboardShortcut(0, #PB_Shortcut_Return, 1) 
 If CreateGadgetList(WindowID(0)) 
  StringGadget(1, 10, 10, 620, 30, "") 

  Repeat 
   Select WaitWindowEvent() 
    Case #PB_EventMenu 
     If EventMenuID() = 1 And Gadget = 1 ;Return 
      Debug "Im StringGadget Return gedrückt" 
     EndIf
    Case #PB_EventGadget
     Gadget = EventGadgetID()
    Case #PB_Event_CloseWindow 
     End 
   EndSelect 
  ForEver 

 EndIf 
EndIf