Ich versuche soeben an etwas eigentlich sehr simplen,
Ich möchte den Path in einer StringGadget ausgeben beim Betätigen eines Buttons.
Klappt eigentlich ganz GUT, wenn nur nicht ein Nebeneffekt auftreten würde, den ich mir nicht erklären kann.
So sieht der Code momentan aus als Bruchteil.
Nach betätigen von Button 1 ist Butten 2 freigegeben zum Benutzen, aber Butten 1 verschwindet.
Das Gleiche passiert bei Butten 2. NUR Button 3 bleibt bestehen.

Mit "Hide False" hab ich es jetzt mal versucht, "KEIN" Erfolg vernehmbar.


Wo ist mein Gedankenfehler, frage ich mich zurzeit.


Ganz Liebe vor-Wochenende Grüsse aus Bern
Christian
PS: Schreibrechte Fehler sind Absicht und zur allgemeinen Belustigung eingefügt worden.
Code: Alles auswählen
;- Top
; -----------------------------------------------------------------------------
; Name:
; Description:
; Author:
; Date: 2024-08-22
; Version:
; PB-Version:
; OS:
; Credit:
; Forum:
; Created by: IceDesign
; -----------------------------------------------------------------------------
CompilerIf #PB_Compiler_IsMainFile
EnableExplicit
CompilerEndIf
;- Enumerations
Enumeration Window
#Window_0
EndEnumeration
Enumeration Gadgets
#Btn_Execute
#Btn_Path_1
#Btn_Path_2
EndEnumeration
;- Global
Global InitialPath1$
Global Path1$
Global InitialPath2$
Global Path2$
Global InitialPath3$
Global Path3$
;- Declare
Declare Resize_Window_0()
Declare Open_Window_0(X = 0, Y = 0, Width = 540, Height = 400)
Procedure Resize_Window_0()
Protected Window_0_WidthIni = 540, Window_0_HeightIni = 400
Protected ScaleX.f, ScaleY.f
ScaleX = WindowWidth(#Window_0) / Window_0_WidthIni : ScaleY = WindowHeight(#Window_0) / Window_0_HeightIni
ResizeGadget(#Btn_Path_1, ScaleX * 40, ScaleY * 270, ScaleX * 100, ScaleY * 45)
ResizeGadget(#Btn_Path_2, ScaleX * 170, ScaleY * 270, ScaleX * 100, ScaleY * 45)
ResizeGadget(#Btn_Execute, ScaleX * 320, ScaleY * 270, ScaleX * 130, ScaleY * 45)
EndProcedure
Procedure Open_Window_0(X = 0, Y = 0, Width = 540, Height = 400)
If OpenWindow(#Window_0, X, Y, Width, Height, "Title", #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_SizeGadget | #PB_Window_ScreenCentered)
ButtonGadget(#Btn_Path_1, 40, 270, 100, 45, "Path 1")
ButtonGadget(#Btn_Path_2, 170, 270, 100, 45, "Path 2")
DisableGadget(#Btn_Path_2, #True)
ButtonGadget(#Btn_Execute, 320, 270, 130, 45, "Execute")
DisableGadget(#Btn_Execute, #True)
BindEvent(#PB_Event_SizeWindow, @Resize_Window_0(), #Window_0)
PostEvent(#PB_Event_SizeWindow, #Window_0, 0)
ProcedureReturn #True
EndIf
EndProcedure
CompilerIf #PB_Compiler_IsMainFile
;- Main Program
If Open_Window_0()
;- Event Loop
Repeat
Select WaitWindowEvent()
Case #PB_Event_CloseWindow
Break
;-> Event Gadget
Case #PB_Event_Gadget
Select EventGadget()
Case #Btn_Path_1 ; Path 1
InitialPath1$ = "C:\" ; anfänglichen Pfad für die Anzeige festlegen (kann auch leer sein)
Path1$ = PathRequester("Bitte wählen Sie einen Pfad aus", InitialPath1$)
If Path1$
StringGadget(1, 8, 80, 306, 20, Path1$, #PB_String_ReadOnly) ;Path$
DisableGadget(#Btn_Path_2, #False)
HideGadget(#Btn_Path_1, #False)
Else
MessageRequester("Information", "Der Requester wurde abgebrochen.", 0)
EndIf
Case #Btn_Path_2 ; Path 2
InitialPath2$ = "C:\" ; anfänglichen Pfad für die Anzeige festlegen (kann auch leer sein)
Path2$ = PathRequester("Bitte wählen Sie einen Pfad aus", InitialPath2$)
If Path2$
StringGadget(2, 8, 100, 306, 20, Path2$, #PB_String_ReadOnly) ;Path$
HideGadget(#Btn_Path_1, #False)
DisableGadget(#Btn_Execute, #False)
HideGadget(#Btn_Path_2, #False)
Else
MessageRequester("Information", "Der Requester wurde abgebrochen.", 0)
EndIf
Case #Btn_Execute ; Execute
InitialPath3$ = "C:\" ; anfänglichen Pfad für die Anzeige festlegen (kann auch leer sein)
Path3$ = PathRequester("Bitte wählen Sie einen Pfad aus", InitialPath3$)
If Path3$
StringGadget(3, 8, 120, 306, 20, Path3$, #PB_String_ReadOnly) ;Path$
HideGadget(#Btn_Path_2, #False)
HideGadget(#Btn_Execute, #False)
Else
MessageRequester("Information", "Der Requester wurde abgebrochen.", 0)
EndIf
EndSelect
EndSelect
ForEver
EndIf
CompilerEndIf