Warten bis Enter taste gedrückt wurde

Anfängerfragen zum Programmieren mit PureBasic.
Bastl1993
Beiträge: 7
Registriert: 24.08.2011 11:39
Computerausstattung: Dell Optiplex 755

Warten bis Enter taste gedrückt wurde

Beitrag 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
Chipsy
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

Re: Warten bis Enter taste gedrückt wurde

Beitrag von RSBasic »

Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
Bastl1993
Beiträge: 7
Registriert: 24.08.2011 11:39
Computerausstattung: Dell Optiplex 755

Re: Warten bis Enter taste gedrückt wurde

Beitrag von Bastl1993 »

Danke für die schnelle Hilfe :bounce:
Chipsy
Bastl1993
Beiträge: 7
Registriert: 24.08.2011 11:39
Computerausstattung: Dell Optiplex 755

Re: Warten bis Enter taste gedrückt wurde

Beitrag 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:
Chipsy
Benutzeravatar
bobobo
jaAdmin
Beiträge: 3873
Registriert: 13.09.2004 17:48
Kontaktdaten:

Re: Warten bis Enter taste gedrückt wurde

Beitrag 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
‮pb aktuel 6.2 windoof aktuell und sowas von 10
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: Warten bis Enter taste gedrückt wurde

Beitrag 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
a²+b²=mc²
Bastl1993
Beiträge: 7
Registriert: 24.08.2011 11:39
Computerausstattung: Dell Optiplex 755

Re: Warten bis Enter taste gedrückt wurde

Beitrag von Bastl1993 »

Danke jetzt klapptz <)

Nur noch eine Frage welche Beispiele meinst du ?
Chipsy
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: Warten bis Enter taste gedrückt wurde

Beitrag von Kiffi »

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

Grüße ... Kiffi
a²+b²=mc²
Bastl1993
Beiträge: 7
Registriert: 24.08.2011 11:39
Computerausstattung: Dell Optiplex 755

Re: Warten bis Enter taste gedrückt wurde

Beitrag 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
Chipsy
Benutzeravatar
bobobo
jaAdmin
Beiträge: 3873
Registriert: 13.09.2004 17:48
Kontaktdaten:

Re: Warten bis Enter taste gedrückt wurde

Beitrag 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
‮pb aktuel 6.2 windoof aktuell und sowas von 10
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
Antworten