Eingabe über String

Anfängerfragen zum Programmieren mit PureBasic.
Reich
Beiträge: 2
Registriert: 02.11.2006 13:35

Eingabe über String

Beitrag 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.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag 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
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Reich
Beiträge: 2
Registriert: 02.11.2006 13:35

string

Beitrag 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
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: string

Beitrag von Kiffi »

<OT>

> PB-Version 3.0

Schreib das bitte in Deine Signatur!

</OT>

Grüße ... Kiffi
a²+b²=mc²
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7031
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Beitrag 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
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag 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 
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7031
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Beitrag 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
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag 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:
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7031
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Beitrag 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 
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Antworten