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.
:lol: 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. :cry:
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.