Seite 1 von 2
Abfrage ob Return in StringGadget gedrückt wurde
Verfasst: 28.03.2005 21:23
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
Verfasst: 28.03.2005 21:48
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
Verfasst: 28.03.2005 22:09
von Gamer
Stimmt! Ist logischer aufgebaut.
Aber das mit der Abfrage und Return geht trotzdem nicht so oder?
Verfasst: 28.03.2005 22:11
von 125
doch das müsste eigentlich so gehen

Verfasst: 28.03.2005 22:43
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
Verfasst: 28.03.2005 22:51
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

Verfasst: 28.03.2005 23:03
von Gamer
Das ist wiegesagt logisch, aber funzt eben nicht

Verfasst: 28.03.2005 23:11
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

Verfasst: 28.03.2005 23:35
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?
Verfasst: 29.03.2005 00:21
von 125
Wie meinst du das ? ich versteh nicht ganz mach bitte mal nen bsp. mit den ifs. dann kann ichs dir erklärn
