Re: Konstanten in PB?
Verfasst: 23.01.2011 21:47
Lief alles wie erwartet hier. Wenn du damit nicht zurechtkommst, nutze doch einfach Zustandsvariablen: Active=#True etc.
ist doch alles richtig. sagen wir mal ich drücke in das gadget 0.sharkpeter hat geschrieben: Dann geh hin, und nimm den Kommentar weg vor dem Satz "SetActiveGadget(2)". Da bekommt ein anderes
Gadget den Focus, NACH DER WIEDERKEHR VOM REQUESTER!
Und da fängt für mich der Spass an. Ich gebe einem anderen Gadget den Status "active" und als Rückmeldung
wird dann immer noch der Focus auf das gerade vorher aktive gesetzt? Erst im zweiten Anlauf, sprich der
Requester wird ein zweites Mal verlassen, dann, aber erst dann wird das SetActiveGadget(2) akzeptiert.
Code: Alles auswählen
; Testprogramm
OpenWindow (1, 0, 0,300,200,"Test")
StringGadget(0, 10, 10,280, 20,"")
StringGadget(1, 10, 40,280, 20,"")
StringGadget(2,400,400,280, 20,"Ich bin außerhalb, damit man mich nicht sieht ...")
onceonly = 0
Repeat
eventid.l=WaitWindowEvent()
eventtp.l=EventType()
actgd.l =GetActiveGadget()
Select eventid
Case #PB_Event_CloseWindow
Quit=#True
Case #PB_Event_Gadget
Select EventGadget()
Case 0
Debug "neuer Durchlauf String 0"
Select eventtp
Case #PB_EventType_Focus
Debug "String 0 hat den Focus erhalten"
If (onceonly = 0)
OpenFileRequester("test string 0","c:\","*.*|*.*",0)
SetActiveGadget(2)
onceonly = 1
EndIf
Case #PB_EventType_LostFocus
Debug "String 0 hat den Focus verloren"
EndSelect
Case 2
If (eventtp = #PB_EventType_Focus)
Debug "String 2 hat den Focus erhalten"
EndIf
EndSelect
EndSelect
Until Quit
End
Code: Alles auswählen
; Testprogramm
OpenWindow (1, 0, 0,300,200,"Test")
StringGadget(0, 10, 10,280, 20,"")
StringGadget(1, 10, 40,280, 20,"")
StringGadget(2,400,400,280, 20,"Ich bin außerhalb, damit man mich nicht sieht ...")
Repeat
eventid.l=WaitWindowEvent()
eventtp.l=EventType()
actgd.l =GetActiveGadget()
Select eventid
Case #PB_Event_CloseWindow
Quit=#True
Case #PB_Event_Gadget
Select EventGadget()
Case 0
Debug "neuer Durchlauf String 0"
Select eventtp
Case #PB_EventType_Focus
If actgd=0
Debug "String 0 hat den Focus erhalten"
SetGadgetText(0,OpenFileRequester("test string 0","c:\","*.*|*.*",0))
SetActiveGadget(2)
EndIf
Case #PB_EventType_LostFocus
Debug "String 0 hat den Focus verloren"
EndSelect
Case 1
Debug "neuer Durchlauf String 1"
Select eventtp
Case #PB_EventType_Focus
If actgd=1
Debug "String 1 hat den Focus erhalten"
SetGadgetText(1,OpenFileRequester("test string 1","c:\","*.*|*.*",0))
SetActiveGadget(2)
EndIf
Case #PB_EventType_LostFocus
Debug "String 1 hat den Focus verloren"
EndSelect
EndSelect
EndSelect
Until Quit
End
das sollte gar keine lösung sein. ich hab ja gesehen das jens die lösung schon hatte.Falko hat geschrieben:Bei deiner Lösung wird das Filerequester nur einmal geöffnet und mit der Variable onceonly=1 für weitere Stinggadgets verhindert.
ich wollt nur erklären, wieso das so ist.sharkpeter hat geschrieben:Dann geh hin, und nimm den Kommentar weg vor dem Satz "SetActiveGadget(2)". Da bekommt ein anderes
Gadget den Focus, NACH DER WIEDERKEHR VOM REQUESTER!
Und da fängt für mich der Spass an. Ich gebe einem anderen Gadget den Status "active" und als Rückmeldung
wird dann immer noch der Focus auf das gerade vorher aktive gesetzt? Erst im zweiten Anlauf, sprich der
Requester wird ein zweites Mal verlassen, dann, aber erst dann wird das SetActiveGadget(2) akzeptiert.