Seite 1 von 2

Warten bis Enter taste gedrückt wurde

Verfasst: 24.08.2011 11:49
von Bastl1993
Hallo,

Mein folgendes Problem ist, dass ich ein Eingabenfeld und ein Ausgabefeld habe, nun wenn ich einen Text in das Eingabefeld eingebe kann ich diesen nur mittels eines "Buttons" im Ausgabefeld anzeigen lassen. Ich möchte jedoch das man statt des Buttons einfach durch drücken der "Enter"-Taste im Ausgabefeld angezeigt wird.
Da ich erst seit einer Woche in PureBasic programmiere bin ich leider mit meinem Latein am Ende :oops:

Schonmal Danke im voraus

Mfg
Bastl

Re: Warten bis Enter taste gedrückt wurde

Verfasst: 24.08.2011 11:54
von RSBasic

Re: Warten bis Enter taste gedrückt wurde

Verfasst: 24.08.2011 11:57
von Bastl1993
Danke für die schnelle Hilfe :bounce:

Re: Warten bis Enter taste gedrückt wurde

Verfasst: 24.08.2011 12:39
von Bastl1993
Problem doch nicht gelöst.. Wehrscheinlich bin ich wida mal zu doof :lol:

Ich hab jetzt

Code: Alles auswählen

InitKeyboard()


If OpenWindow(0,1100,200,500,830,"Umrechnung                               CTHB",)
  
   
  
  If CreateGadgetList(WindowID(0))
    ButtonGadget(1,20,20,150,20,"Inch in MM")
    StringGadget(34,20,450,330,20,"")
    ButtonGadget(35,370,450,80,20,"Übernehmen")
    ListViewGadget(33,20,500,430,300)
    
 EndIf
  
  Repeat
         
      If EventGadget()=1
        AddGadgetItem(33,-1,"________________________________________________________________________________")
        AddGadgetItem(33,-1,"")
        AddGadgetItem(33,-1,"Inch in MM")              
        E=ValF(InputRequester("Inch in MM","Bitte geben Sie einen Wert für Inch ein!",""))
        Delay(100):AddGadgetItem(33,-1,"")
        AddGadgetItem(33,-1,"Inch="+StrF(E))
        Delay(100):AddGadgetItem(33,-1,"")
        MessageRequester("MM=",StrF(E*25.4),0)
        Delay(150): AddGadgetItem(33,-1,"MM="+StrF(E*25.4)):AddGadgetItem(33,-1,"")
        AddGadgetItem(33,-1,"________________________________________________________________________________")
      EndIf
EndIf
  Until Quit=1
EndIf
End
So ich möchte dass des ganze Inputrequester wegkommt und stattdessen die Eingabe im Eingabefenster erfolgt und durch drücken der Enter tast im ausgabefenster angezeigt wird doch ich weiß nicht wie .. :oops:

Re: Warten bis Enter taste gedrückt wurde

Verfasst: 24.08.2011 13:27
von bobobo
auha .. gadgets mit Nummern sind möglichst zu vermeiden. spätestens bei einem Redesign des Codes
kommst Du sonst vermutlich ins Schleudern.

Es gibt den in PB eingebauten VisualDesigner .. der erzeugt wenn auch keinen perfekten so doch lauffähigen
code und optional optional inkusive Messageschleife, die in deinem Code auch nicht da ist.
Damit bekommst Du schonmal ein passendes Gerüst. Aufpeppt mit einen Keyboardshortcut auf
der Returntaste und etwas nachbehandelt (Select-Schleife) ergibt sich dann eventuell sowas
wie das folgende
Die Ausgabe im EditGadget erfolgt immer in der ersten Zeile damit es das Runterscrollen spart

Code: Alles auswählen

; PureBasic Visual Designer v3.95 build 1485 (PB4Code)

Enumeration ;- Window Constants
  #Window_0
EndEnumeration

Enumeration ;- Gadget Constants
  #String_0
  #Editor_0
EndEnumeration

Enumeration;Menu Constants
  #SK1
EndEnumeration

If OpenWindow(#Window_0, 339, 218, 424, 300, "Ende mit quit",  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar )
  If CreateGadgetList(WindowID(#Window_0))
    StringGadget(#String_0, 20, 10, 380, 20, "")
    EditorGadget(#Editor_0, 20, 40, 380, 230)
  EndIf
  AddKeyboardShortcut(#Window_0,#PB_Shortcut_Return,#SK1)
EndIf

Repeat ; Start of the event loop
  Event = WaitWindowEvent() ; This line waits until an event is received from Windows
  WindowID = EventWindow() ; The Window where the event is generated, can be used in the gadget procedures
  GadgetID = EventGadget() ; Is it a gadget event?
  EventType = EventType() ; The event type
  EventMenu = EventMenu() ; The event Menu
  ;You can place code here, and use the result as parameters for the procedures
  Select event
    Case #PB_Event_CloseWindow
      quit+1
    Case #PB_Event_Menu
      If eventMenu=#SK1
        tmp.s= GetGadgetText(#STRING_0)
        tmp=ReplaceString(tmp,",",".")
        AddGadgetItem(#Editor_0,0,tmp+" (mm) -> "+StrF(ValF(tmp)*25.4,4)+" inch")
        SetGadgetText(#string_0,"")
        If tmp="quit"
          quit+1
        EndIf
      EndIf
    Case  #PB_Event_Gadget
      If GadgetID = #String_0
        ;irgendwas
      ElseIf GadgetID = #Editor_0
        ;was anderes
      EndIf
  EndSelect
  
Until quit

End

Re: Warten bis Enter taste gedrückt wurde

Verfasst: 24.08.2011 13:36
von Kiffi
ich habe auch noch was :-)

Code: Alles auswählen

EnableExplicit

Enumeration ; Windows
  #MainWindow
EndEnumeration
Enumeration ; Gadgets
  #myLabel
  #myInput
  #myButton
  #myOutput
EndEnumeration
Enumeration ; Menu-/ToolbarItems
  #ShortcutReturn
EndEnumeration

Define WWE, Quit

Procedure Berechnen()
  
  Protected E.f
  
  E = ValF(GetGadgetText(#myInput))
  
  AddGadgetItem(#myOutput, -1, "------------------")
  AddGadgetItem(#myOutput, -1, "Inch=" + StrF(E))
  AddGadgetItem(#myOutput, -1, "MM=" + StrF(E*25.4))
  AddGadgetItem(#myOutput, -1, "------------------")
  
  SetGadgetState(#myOutput, CountGadgetItems(#myOutput) - 1)
  
EndProcedure

If OpenWindow(#MainWindow, #PB_Ignore, #PB_Ignore, 342, 303, "Umrechnung                               CTHB")
  
  TextGadget(#myLabel, 20, 20, 150, 20, "Inch in MM")
  StringGadget(#myInput, 85, 15, 145, 20, "")
  ButtonGadget(#myButton, 240, 15, 80, 20, "Übernehmen")
  ListViewGadget(#myOutput, 20, 50, 300, 240)
  
  AddKeyboardShortcut(#MainWindow, #PB_Shortcut_Return, #ShortcutReturn)
  
  Repeat
    
    WWE = WaitWindowEvent()
    
    Select WWE
        
      Case #PB_Event_Gadget
        Select EventGadget()
          Case #myButton
            Berechnen()
        EndSelect
        
      Case #PB_Event_Menu
        Select EventMenu()
          Case #ShortcutReturn
            Berechnen()
        EndSelect
        
      Case #PB_Event_CloseWindow
        Select EventWindow()
          Case #MainWindow
            Quit = #True
        EndSelect
        
    EndSelect
    
  Until Quit = #True
  
EndIf
Erklärungen spare ich mir. Ich gehe davon aus, dass Bastl1993 die Beispiele genau studiert
und in Zukunft nur noch konkrete Fragen stellt ;-)

Grüße ... Kiffi

Re: Warten bis Enter taste gedrückt wurde

Verfasst: 24.08.2011 14:19
von Bastl1993
Danke jetzt klapptz <)

Nur noch eine Frage welche Beispiele meinst du ?

Re: Warten bis Enter taste gedrückt wurde

Verfasst: 24.08.2011 14:23
von Kiffi
Bastl1993 hat geschrieben:Nur noch eine Frage welche Beispiele meinst du ?
die oben stehenden Codes von bobobo und mir.

Grüße ... Kiffi

Re: Warten bis Enter taste gedrückt wurde

Verfasst: 24.08.2011 15:51
von Bastl1993
Aso ..

Falls ich jz angenommen noch 2,3,4,...35 andere Umrechnung hinzufügen möchte was müsst ich dann ändern damitz ich zum Auswählen zw. den jeweiligen Umrechnungen die ButtonGadget's nehmen kann.. ?

Danke schon mal im Voraus für deine Mühe :)
Gruß Bastl

Re: Warten bis Enter taste gedrückt wurde

Verfasst: 24.08.2011 17:18
von bobobo
fauler Sack :mrgreen:
Du brauchst eben bei der Berechnung einen Hinweis was wie zu rechnen ist
Als Anregung der Code von mir etwas durch ein ComboGadget erweitert

Code: Alles auswählen

; PureBasic Visual Designer v3.95 build 1485 (PB4Code)

Enumeration;- Window Constants
  #Window_0
EndEnumeration

Enumeration ;- Gadget Constants
  #String_0
  #Editor_0
  #Combo
EndEnumeration

Enumeration
  #SK1
  #SK2
EndEnumeration

If OpenWindow(#Window_0, 339, 218, 424, 300, "Ende mit quit oder Esc",  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar )
  If CreateGadgetList(WindowID(#Window_0))
    StringGadget(#String_0, 20, 10, 380,  20, "")
    ComboBoxGadget(#Combo , 20, 40, 380,  20)
    EditorGadget(#Editor_0, 20, 60, 380, 220)
  EndIf
  AddKeyboardShortcut(#Window_0,#PB_Shortcut_Return,#SK1)
  AddKeyboardShortcut(#Window_0,#PB_Shortcut_Escape,#SK2)
  AddGadgetItem(#combo,-1,"mm -> inch")
  AddGadgetItem(#combo,-1,"inch -> mm")
  SetGadgetState(#combo,0) ;vorauswahl
EndIf

Repeat ; Start of the event loop
  Event = WaitWindowEvent() ; This line waits until an event is received from Windows
  WindowID = EventWindow() ; The Window where the event is generated, can be used in the gadget procedures
  GadgetID = EventGadget() ; Is it a gadget event?
  EventType = EventType() ; The event type
  EventMenu = EventMenu() ; The event Menu
  ;You can place code here, and use the result as parameters for the procedures
  Select event
    Case #PB_Event_CloseWindow
      quit+1
    Case #PB_Event_Menu
      If eventmenu =#SK2
        quit+1
      EndIf
      If eventMenu=#SK1 ;Enter gedrückt
        tmp.s= GetGadgetText(#STRING_0)
        tmp=ReplaceString(tmp,",",".")
        Select GetGadgetText(#Combo)
          Case "mm -> inch"
            AddGadgetItem(#Editor_0,0,tmp+" (mm) -> "+StrF(ValF(tmp)*25.4,4)+" inch")
          Case "inch -> mm"
            AddGadgetItem(#Editor_0,0,tmp+" (inch) -> "+StrF(ValF(tmp)/25.4,4)+" mm")
        EndSelect
        SetGadgetText(#string_0,"")
        If tmp="quit"
          quit+1
        EndIf
        SetActiveGadget(#String_0)
      EndIf
    Case  #PB_Event_Gadget
      If GadgetID = #String_0
      ElseIf GadgetID = #Editor_0
      EndIf
  EndSelect
Until quit
End