Seite 1 von 2
Warum wird kein Button angezeigt?
Verfasst: 21.01.2009 23:30
von Alantope
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
Verfasst: 21.01.2009 23:33
von ts-soft
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
Verfasst: 21.01.2009 23:48
von Alantope
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
Verfasst: 21.01.2009 23:57
von cxAlex
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-Tags sind zum formatieren im Forum, ungefähr so:
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
Verfasst: 22.01.2009 00:07
von Alantope
O.K. Danke. Damit habe ich mich wirklich als Newbie hier im Forum geoutet.
Aber nun zum wirklichen Problem. Wer kann mir dabei helfen?
Alantope
Verfasst: 22.01.2009 00:09
von cxAlex
Siehe den Code den ich oben gepostet habe....
Verfasst: 22.01.2009 00:12
von ts-soft
Der Code von cAlex ändert auch nicht viel, ausser das die Button da sind
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
PS: Keine willkürlichen Zahlen für Gadgets verwenden, durchnummerieren von 0 bis, am besten mit Konstanten
Verfasst: 22.01.2009 00:22
von Alantope
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.
Verfasst: 22.01.2009 00:24
von Alantope
PS: Keine willkürlichen Zahlen für Gadgets verwenden, durchnummerieren von 0 bis, am besten mit Konstanten
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.
Verfasst: 22.01.2009 00:29
von edel
Dafuer bieten sich Konstanten doch gerade zu an.