Warum wird kein Button angezeigt?
Warum wird kein Button angezeigt?
Wer kann mir helfen? Beim Öffnen eines Feldes mit einem Progressbar-Gadget und einem Button-Gadget wird der Button Gadget nicht angezeigt. Außerdem wird die Hintergrundfarbe eines Text-Gadgets nicht korrekt wiedergegeben. Das Programm lautet:
If OpenWindow(700, 666, 362, 405, 160,"Test",#PB_Window_SystemMenu|#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
Hintergrundfarbe=$00000AAFFF; orange
SetWindowColor(700,Hintergrundfarbe)
FontID1 = LoadFont(1, "Arial", 12)
TextGadget(701, 40, 20, 240, 20, "Bitte warten")
SetGadgetFont(701, FontID1)
SetGadgetColor(701,#PB_Gadget_BackColor,Hintergrundfarbe)
ProgressBarGadget(710, 40, 60, 330, 30, 0, 100,#PB_ProgressBar_Smooth)
SetGadgetColor(710,#PB_Gadget_BackColor,Hintergrundfarbe)
ButtonGadget(705, 260, 110, 110, 30,"Abbrechen")
SetGadgetColor(705,#PB_Gadget_BackColor,Hintergrundfarbe)
SetGadgetFont(705, FontID1)
I=0
Repeat
I=I+1
SetGadgetState(710,I/100000)
Until I=10000000
EndIf
If OpenWindow(700, 666, 362, 405, 160,"Test",#PB_Window_SystemMenu|#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
Hintergrundfarbe=$00000AAFFF; orange
SetWindowColor(700,Hintergrundfarbe)
FontID1 = LoadFont(1, "Arial", 12)
TextGadget(701, 40, 20, 240, 20, "Bitte warten")
SetGadgetFont(701, FontID1)
SetGadgetColor(701,#PB_Gadget_BackColor,Hintergrundfarbe)
ProgressBarGadget(710, 40, 60, 330, 30, 0, 100,#PB_ProgressBar_Smooth)
SetGadgetColor(710,#PB_Gadget_BackColor,Hintergrundfarbe)
ButtonGadget(705, 260, 110, 110, 30,"Abbrechen")
SetGadgetColor(705,#PB_Gadget_BackColor,Hintergrundfarbe)
SetGadgetFont(705, FontID1)
I=0
Repeat
I=I+1
SetGadgetState(710,I/100000)
Until I=10000000
EndIf
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Hallo Alantope
Deinen Code sollteste in code-tags packen: [ code ]SetGadgetText ... [ /code ]
, ohne spaces.
Dein Code enthält keinerlei EventLoop, somit wird dort auch keinerlei
Anzeige aktualisiert, siehe WaitWindowEvent() und Beispiele
Gruß
Thomas
Deinen Code sollteste in code-tags packen: [ code ]SetGadgetText ... [ /code ]
, ohne spaces.
Dein Code enthält keinerlei EventLoop, somit wird dort auch keinerlei
Anzeige aktualisiert, siehe WaitWindowEvent() und Beispiele
Gruß
Thomas
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Hallo Thomas,
leider kann ich Dir nicht ganz folgen. Was sind Code Tags und was bewirken sie? Ich habe schon mehrere auch anspruchsvollere Programme geschrieben aber bin bisher -so glaube ich zumindest - bisher immer ohne ausgekommen.
Weiterhin verstehe ich nicht, warum die Anzeige refresht werden muss. Ich bilde doch den Button und die Progress Bar unabhängig voneinander ab und beide überschreiben sich nicht.
Alantope
leider kann ich Dir nicht ganz folgen. Was sind Code Tags und was bewirken sie? Ich habe schon mehrere auch anspruchsvollere Programme geschrieben aber bin bisher -so glaube ich zumindest - bisher immer ohne ausgekommen.
Weiterhin verstehe ich nicht, warum die Anzeige refresht werden muss. Ich bilde doch den Button und die Progress Bar unabhängig voneinander ab und beide überschreiben sich nicht.
Alantope
Alantope hat geschrieben:leider kann ich Dir nicht ganz folgen. Was sind Code Tags und was bewirken sie? Ich habe schon mehrere auch anspruchsvollere Programme geschrieben aber bin bisher -so glaube ich zumindest - bisher immer ohne ausgekommen.

Code: Alles auswählen
If OpenWindow(700, 666, 362, 405, 160, "Test", #PB_Window_SystemMenu | #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
Hintergrundfarbe = $00000AAFFF; orange
SetWindowColor(700, Hintergrundfarbe)
FontID1 = LoadFont(1, "Arial", 12)
TextGadget(701, 40, 20, 240, 20, "Bitte warten")
SetGadgetFont(701, FontID1)
SetGadgetColor(701, #PB_Gadget_BackColor, Hintergrundfarbe)
ProgressBarGadget(710, 40, 60, 330, 30, 0, 100, #PB_ProgressBar_Smooth)
SetGadgetColor(710, #PB_Gadget_BackColor, Hintergrundfarbe)
ButtonGadget(705, 260, 110, 110, 30, "Abbrechen")
ButtonGadget(706, 40, 110, 110, 30, "Test")
SetGadgetColor(705, #PB_Gadget_BackColor, Hintergrundfarbe)
SetGadgetFont(705, FontID1)
Repeat
Event = WaitWindowEvent()
Select Event
Case #PB_Event_Gadget
Select EventGadget()
Case 706
I = 0
Repeat
I = I + 1
SetGadgetState(710, I/100000)
Until I = 10000000
EndSelect
EndSelect
Until Event = #PB_Event_CloseWindow
EndIf
Projekte: IO.pbi, vcpu
Pausierte Projekte: Easy Network Manager, µC Emulator
Aufgegebene Projekte: ECluster

PB 5.1 x64/x86; OS: Win7 x64/Ubuntu 10.x x86
Pausierte Projekte: Easy Network Manager, µC Emulator
Aufgegebene Projekte: ECluster
PB 5.1 x64/x86; OS: Win7 x64/Ubuntu 10.x x86
Siehe den Code den ich oben gepostet habe....
Projekte: IO.pbi, vcpu
Pausierte Projekte: Easy Network Manager, µC Emulator
Aufgegebene Projekte: ECluster

PB 5.1 x64/x86; OS: Win7 x64/Ubuntu 10.x x86
Pausierte Projekte: Easy Network Manager, µC Emulator
Aufgegebene Projekte: ECluster
PB 5.1 x64/x86; OS: Win7 x64/Ubuntu 10.x x86
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Der Code von cAlex ändert auch nicht viel, ausser das die Button da sind
PS: Keine willkürlichen Zahlen für Gadgets verwenden, durchnummerieren von 0 bis, am besten mit Konstanten
Code: Alles auswählen
If OpenWindow(700, 666, 362, 405, 160,"Test",#PB_Window_SystemMenu|#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
Hintergrundfarbe=$00000AAFFF; orange
SetWindowColor(700,Hintergrundfarbe)
FontID1 = LoadFont(1, "Arial", 12)
TextGadget(701, 40, 20, 240, 20, "Bitte warten")
SetGadgetFont(701, FontID1)
SetGadgetColor(701,#PB_Gadget_BackColor,Hintergrundfarbe)
ProgressBarGadget(710, 40, 60, 330, 30, 0, 100,#PB_ProgressBar_Smooth)
SetGadgetColor(710,#PB_Gadget_BackColor,Hintergrundfarbe)
ButtonGadget(705, 260, 110, 110, 30,"Abbrechen")
SetGadgetColor(705,#PB_Gadget_BackColor,Hintergrundfarbe)
SetGadgetFont(705, FontID1)
I=0
Repeat
Select WaitWindowEvent(30)
Case #PB_Event_CloseWindow
Break
Case #PB_Event_Gadget
If EventGadget() = 705
I = 100
MessageRequester("", "Abgebrochen")
EndIf
Case 0
If I < 100
I=I+1
SetGadgetState(710,I)
EndIf
EndSelect
ForEver
EndIf
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Hey, Super. Ich komme der Lösung schon näher.
Mein Problem ist, dass ich eine komplizierte Berechnung durchführen möchte, die unter Umständen mehrere Minuten dauern kann. Ich möchte dem User aber die Möglichkeit geben, dass er - wenn es zu lange dauert - den Prozess auch Abbrechen kann. Daher der Button. Daher nutzt mir das Programm von Thomas schon ein wenig mehr. Ich sehe aber nicht, wie sich der Fortschrittsbalken weiterbewegt.
Mein Problem ist, dass ich eine komplizierte Berechnung durchführen möchte, die unter Umständen mehrere Minuten dauern kann. Ich möchte dem User aber die Möglichkeit geben, dass er - wenn es zu lange dauert - den Prozess auch Abbrechen kann. Daher der Button. Daher nutzt mir das Programm von Thomas schon ein wenig mehr. Ich sehe aber nicht, wie sich der Fortschrittsbalken weiterbewegt.
Sicherlich hast Du Recht. Ich habe aber diesen Programmteil aus einem großen Programm von mir entnommen, wo die Prozeduren durchnummeriert sind. Und dies ist eben die 7. Prozedur und dann weiß ich sofort, zu welcher Prozedur die Gadgets gehören.PS: Keine willkürlichen Zahlen für Gadgets verwenden, durchnummerieren von 0 bis, am besten mit Konstanten