Abfrage ob Return in StringGadget gedrückt wurde

Anfängerfragen zum Programmieren mit PureBasic.
Gamer
Beiträge: 180
Registriert: 21.03.2005 16:59

Abfrage ob Return in StringGadget gedrückt wurde

Beitrag von Gamer »

Geht um das Absenden einer Textzeile in einem Chat.

Die Abfrage müßte doch etwa so aussehen oder?

Code: Alles auswählen

If EventGadgetID()=#String_0 And EventType()=#PB_EventType_ReturnKey
Benutzeravatar
125
Beiträge: 1322
Registriert: 19.09.2004 16:52
Wohnort: Neu Wulmstorf (Hamburg)
Kontaktdaten:

Beitrag von 125 »

mal kurz was anderes: machst du die Eventbehandlung immer mit If?
Man sollte das lieber mit Select machen ist übersichtlicher.

Ungefähr so:

Code: Alles auswählen

Select WaitWindowEvent()
  Case #PB_Event_Gadget
      Select EventgadgetID()

          Case #Gadget1
              If EventType()=#PB_EventType_ReturnKey
                ;TuDas
              EndIf

          Case #Gadget2
              ;tu das
      EndSelect

   Case #PB_Event_CloseWindow
      End
EndSelect
Bild
BildDas ist Tux. Kopiere Tux in deine Signatur und hilf ihm so auf seinem Weg zur Weltherrschaft.
Gamer
Beiträge: 180
Registriert: 21.03.2005 16:59

Beitrag von Gamer »

Stimmt! Ist logischer aufgebaut.

Aber das mit der Abfrage und Return geht trotzdem nicht so oder?
Benutzeravatar
125
Beiträge: 1322
Registriert: 19.09.2004 16:52
Wohnort: Neu Wulmstorf (Hamburg)
Kontaktdaten:

Beitrag von 125 »

doch das müsste eigentlich so gehen :D
Bild
BildDas ist Tux. Kopiere Tux in deine Signatur und hilf ihm so auf seinem Weg zur Weltherrschaft.
Gamer
Beiträge: 180
Registriert: 21.03.2005 16:59

Beitrag von Gamer »

Also dieses Beispiel funzt, aber auch nur weil Multiline als Flag hinzugefügt wurde!

Code: Alles auswählen

OpenWindow(0, 0, 0, 100,100,#PB_Window_SystemMenu, "") 
CreateGadgetList(WindowID()) 
StringGadget(0, 0, 0, 200, 20, "", #PB_String_MultiLine) 

Repeat 
  Event = WindowEvent() 
  Select Event 
    Case #PB_Event_Gadget 
      If EventGadgetID() = 0 And EventType() = #PB_EventType_ReturnKey 
        Debug GetGadgetText(0) 
        SetGadgetText(0, "") 
      EndIf 
  EndSelect 
  Delay(5) 
Until Event = #PB_Event_CloseWindow 
End
Aber wie baue ich diese Abfrage bei mir richtig ein? Irgendwie hab ich da was verdreht mit den EventHandlern:

Code: Alles auswählen

Repeat 

     Select WaitWindowEvent()

     Case #PB_Event_Gadget

     Select EventGadgetID()

     Case #AbsenButton

         If EventType() = #PB_EventType_ReturnKey : End : EndIf

     EndSelect

     Case #PB_Event_CloseWindow 
     End 

     EndSelect

ForEver
Benutzeravatar
125
Beiträge: 1322
Registriert: 19.09.2004 16:52
Wohnort: Neu Wulmstorf (Hamburg)
Kontaktdaten:

Beitrag von 125 »

Code: Alles auswählen

Repeat 
 Select WaitWindowEvent() 
   Case #PB_Event_Gadget 
     Select EventGadgetID() 
        Case #AbsenButton 
         If EventType() = #PB_EventType_ReturnKey
           ;DeinCodeZumAbsenden
         EndIf 
     EndSelect 
   Case #PB_Event_CloseWindow 
     End 
 EndSelect 
ForEver
:D
Bild
BildDas ist Tux. Kopiere Tux in deine Signatur und hilf ihm so auf seinem Weg zur Weltherrschaft.
Gamer
Beiträge: 180
Registriert: 21.03.2005 16:59

Beitrag von Gamer »

Das ist wiegesagt logisch, aber funzt eben nicht :-(
Benutzeravatar
125
Beiträge: 1322
Registriert: 19.09.2004 16:52
Wohnort: Neu Wulmstorf (Hamburg)
Kontaktdaten:

Beitrag von 125 »

So das hier funzt:

Code: Alles auswählen

; PureBasic Visual Designer v3.90 build 1361


;- Window Constants
;
Enumeration
  #Window_0
EndEnumeration

;- Gadget Constants
;
Enumeration
  #String_0
  #String_1
EndEnumeration


Procedure Open_Window_0()
  If OpenWindow(#Window_0, 216, 0, 600, 300,  #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar , "New window ( 0 )")
    If CreateGadgetList(WindowID())
      StringGadget(#String_0, 30, 10, 530, 190, "",#PB_String_MultiLine)
      StringGadget(#String_1, 60, 220, 470, 30, "",#PB_String_MultiLine)
      
    EndIf
  EndIf
EndProcedure

Open_window_0()
SetGadgetText(#String_0,"Zeile1")
Repeat

Select WaitWindowEvent()
  Case #PB_Event_CloseWindow
     End
  Case #PB_Event_Gadget
     Select EventGadgetID()
         Case #String_1
            If EventType() = #PB_EventType_ReturnKey
              SetGadgetText(#String_0,GetGadgetText(#String_0)+Chr(13)+Chr(10)+GetGadgetText(#String_1))
            EndIf
     EndSelect
EndSelect
ForEver
Das EnterEvent gibt es nur wenn MultiLine an ist das macht ja aber nichts da das Gadget bei einem Chat ja eh geleert wird :D
Bild
BildDas ist Tux. Kopiere Tux in deine Signatur und hilf ihm so auf seinem Weg zur Weltherrschaft.
Gamer
Beiträge: 180
Registriert: 21.03.2005 16:59

Beitrag von Gamer »

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAARGH,
ich Vollidiot habe die ganze Zeit den AbsendeButton
abgefragt und nicht den String wo drin geschrieben wird :-)

mann mann mann.... halbe stunde geärgert für nix *g

Einen Nachteil hat dieses ganze Select-Zeug allerdings:

1) Früher konnt ich einfach gleichzeitg 2 Gadget mi If abfragen,
wie mach ich das jetzt? 2 x Case für jedes Gadget und dann
2 x die gleichen Befehle dahinter?
Benutzeravatar
125
Beiträge: 1322
Registriert: 19.09.2004 16:52
Wohnort: Neu Wulmstorf (Hamburg)
Kontaktdaten:

Beitrag von 125 »

Wie meinst du das ? ich versteh nicht ganz mach bitte mal nen bsp. mit den ifs. dann kann ichs dir erklärn :)
Bild
BildDas ist Tux. Kopiere Tux in deine Signatur und hilf ihm so auf seinem Weg zur Weltherrschaft.
Antworten