Seite 2 von 2

Verfasst: 22.01.2009 00:30
von ts-soft
Dann nimmste Konstanten als #Proc7_Button_Okay oder ähnlich.
Für alle Lücken in Deiner Nummerierung wird Speicher verbraucht!

Deine 1+ min dauernde Berechnung, sowie die Fortschrittanzeige sollte besser in ein TimerCallback, einfach mal suchen.

Verfasst: 22.01.2009 00:31
von KeyKon
Alantope hat geschrieben: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.
Da gibt es zwei Möglichkeiten, wenn es viele kleine Berechnungen sind die für sich schnell sind aber in der Masse lange brauchen kannst du immer alle 1000 Schritte oder so eine Eventabfrage machen und die ProgressBar updaten.
Andernfalls musst du entweder das Fenster (komplett) oder die Berechnung in einen Thread auslagern, dann kannst du das Fenster wie gewohnt bedienen...

Verfasst: 22.01.2009 00:36
von Alantope
Dafuer bieten sich Konstanten doch gerade zu an.
Vielleicht habt Ihr Recht und ich sollte es einfach mal versuchen. Aber so richtig verstehe ich den Vorteil einer Konstanten nicht.

Bzgl. meiner Schleife von oben habe ich - so glaube ich zumindest - jetzt die Lösung gefunden, wenn ich Wait WindowEvent durch WindowEvent ersetze.

Jetzt aber noch ein wahrscheinlich ganz dumme Frage: Wie erhalte ich den Button auch in der Hintergrundfarbe? Mein Farbbefehl in dem Beispiel bewirkt nämlich rein gar nichts.

Verfasst: 22.01.2009 00:46
von ts-soft
Alantope hat geschrieben:
Dafuer bieten sich Konstanten doch gerade zu an.
Vielleicht habt Ihr Recht und ich sollte es einfach mal versuchen. Aber so richtig verstehe ich den Vorteil einer Konstanten nicht.
Sind erstens einfacher zu merken, zweitens wird mit ButtonGadget(705, ...)
Speicher für 706 Buttons verbraten.
Alantope hat geschrieben: Bzgl. meiner Schleife von oben habe ich - so glaube ich zumindest - jetzt die Lösung gefunden, wenn ich Wait WindowEvent durch WindowEvent ersetze.
Nein, durch WaitWindowEvent(timeout), ist besser als WindowEvent() mit Delay und ohne Delay wird die CPU verbraten, da wird Dir jeder Dein Programm an den Kopf hauen
Alantope hat geschrieben: Jetzt aber noch ein wahrscheinlich ganz dumme Frage: Wie erhalte ich den Button auch in der Hintergrundfarbe? Mein Farbbefehl in dem Beispiel bewirkt nämlich rein gar nichts.
Buttons unterstützen keine Farbe. Also selber basteln oder besser sein
lassen, farbige Buttons sind untypisch und häßlich

Verfasst: 22.01.2009 00:53
von Kaeru Gaman
natürlich kannst du im Grunde alles in die selbe schleife packen und mit WindowEvent ohne Wait durchrödeln...
aber wie ts schon sagte, damit brätst du die CPU, sowas macht man nicht.

mit Konstanten sähe der Anfang deines Codes so aus:

Code: Alles auswählen

;Windows
Enumeration 
  #Window_7  
EndEnumeration

; Gadgets
Enumeration 
  #Win7_Text
  #Win7_Progress
  #Win7_Button_Cancel
  #Win7_Button_Test
EndEnumeration

OpenWindow(#Window_7, #PB_Ignore, 0, 405, 160, "Test", #PB_Window_SystemMenu | #PB_Window_SystemMenu | #PB_Window_ScreenCentered) 
  SetWindowColor(#Window_7, Hintergrundfarbe)
  FontID1 = LoadFont(#PB_Any, "Arial", 12)
  TextGadget(#Win7_Text, 40, 20, 240, 20, "Bitte warten")
  SetGadgetFont(#Win7_Text, FontID1)
  SetGadgetColor(#Win7_Text, #PB_Gadget_BackColor, Hintergrundfarbe)
  ProgressBarGadget(#Win7_Progress, 40, 60, 330, 30, 0, 100, #PB_ProgressBar_Smooth)
  SetGadgetColor(#Win7_Progress, #PB_Gadget_BackColor, Hintergrundfarbe)
  ButtonGadget(#Win7_Button_Cancel, 260, 110, 110, 30, "Abbrechen")
  ButtonGadget(#Win7_Button_Test, 40, 110, 110, 30, "Test")
  SetGadgetFont(#Win7_Button_Cancel, FontID1) 
... und wie ts auch schon sagte:
Buttons unterstützen keine geänderte Farben. (außer bei der Schrift)

Verfasst: 22.01.2009 01:06
von Alantope
O.K. Danke vielmals allen für die Hilfe. Ihr habt mir echt super weitergeholfen, da ich mich schon länger mit diesen Problemen rumgeärgert habe. Nebenbei habe ich auch noch etwas für eine bessere Speicherausnutzung und geringere CPU-Auslastung gelernt. Danke. <)

Verfasst: 24.01.2009 12:47
von Andesdaf
und wenn du jetzt noch die Code-Tags oben einfügst wäre es super! :)

Verfasst: 24.01.2009 13:38
von THEEX
Dann kannst vielleicht auch irgendwann anspruchsvolle Programme schreiben... ^^