Aktuelle Zeit: 21.08.2019 10:06

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 3 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: Hilfe! Anfängerproblem mit Buttongadget
BeitragVerfasst: 23.04.2019 21:09 
Offline

Registriert: 06.03.2019 21:52
Hallo Leute,

habe folgendes Problem: Möchte mir einen eigenen Messagerequester schreiben, der a) eine größere Schrift hat und b) selbstbenannte Buttons hat.

Habe folgenden Code soweit zusammengeschustert:
Code:
Enumeration 
  #window_one
  #window_two
  #fontnum 
EndEnumeration

Procedure AlertWindow(headline$,message$, button1$, button2$, button3$)
  DisableWindow(#window_one, #True)
  ; Hauptfenster inaktiv
 
  If OpenWindow(#window_two, 0, 0, 400, 250, "", #PB_Window_WindowCentered, WindowID(#window_one))
    ww = WindowWidth(#window_two)
    wh = WindowHeight(#window_two)
   
    SetWindowColor(#window_two, RGB(255,255,255))
   
    x = TextGadget(#PB_Any, 10, 0, ww-20, wh-80,"")
    SetGadgetColor(x, #PB_Gadget_FrontColor, RGB(0,0,0))
    SetGadgetColor(x, #PB_Gadget_BackColor, RGB(255,255,255))
    SetGadgetText (x, headline$ +Chr(13)+Chr(10)+Chr(13)+Chr(10)+ message$)
   
    x = ButtonGadget(#PB_Any, 10, 210, 200, 20, button1$)
    ;dieser Button macht Probleme
   
   
   Delay (5000)
   ;nur damit man sieht, dass man nichts sieht ...
   
   CloseWindow(#window_two)
   EndIf
   DisableWindow(#window_one, #False)
EndProcedure
 
If OpenWindow(#window_one, 0, 0, 222, 200, "ButtonGadgets", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
  If LoadFont(#fontnum, "Arial", 11) : SetGadgetFont(#PB_Default, FontID(#fontnum)) : EndIf
 
  b1 = ButtonGadget(#PB_Any, 10, 30, 200, 30, "AlertWindow")
 
  Repeat
    Select WaitWindowEvent()
      Case #PB_Event_CloseWindow: Break
      Case #PB_Event_Gadget
        If EventGadget() = b1
          AlertWindow("Titelzeile", "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.", "b1","b2","b3")
        EndIf
    EndSelect
  ForEver
EndIf


Kurz erklärt: Irgendwann im Programmablauf soll dieser Dialog erscheinen, das eigentliche Prog soll dann inaktiv sein, bis der Dialog beantwortet ist. Problem: der Button
Code:
 x = ButtonGadget(#PB_Any, 10, 210, 200, 20, button1$)

will sich nicht zeigen. Eigentlich sollen da noch 2 weitere Buttons gezeigt werden, aber wenn's schon mit dem ersten nicht klappen will ...

Außerdem noch zwei Fragen:
a) Gehe ich recht in der Annahme, dass ich mich um Gadgets eines geschlossenen Fensters nicht mehr kümmern muss oder müssten die noch irgendwie eliminiert werden (Stichwort Gadgetlist ...) ?
b) wie müsste die Eventschleife nur für dieses Fenster gestrickt sein?

Jetzt schon besten Dank für Eure Zeit!

_________________
Der beste Fisch ist der Schnitzel


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Hilfe! Anfängerproblem mit Buttongadget
BeitragVerfasst: 23.04.2019 22:21 
Offline
Benutzeravatar

Registriert: 01.04.2007 20:18
Der Button macht keine Probleme ;) Dein Programm erstellt ihn, und schliesst 5 Sek. später das Fenster.

Damit der Button auch gezeigt wird, muss man dem Fenster auch Gelegenheit geben ihn zu Zeichnen.
Es befindet sich aber keine Eventverarbeitung an der Stelle...
Ein einfaches :
Code:
Repeat
  Event = WaitWindowEvent()
 
  If Event = #PB_Event_Gadget
    If EventGadget() = x
      Break
    EndIf
  EndIf
 
  If Event = #PB_Event_CloseWindow
    If EventWindow() = #window_two
      Break
    EndIf
  EndIf
 
ForEver

anstelle des Delay (5000) und es sollte sich was zeigen....

_________________
PureBasic 5.70 LTS (Windows x86/x64) | Windows10 Pro x64 | Z370 Extreme4 | i7 8770k | 32GB RAM | iChill GeForce GTX 980 X4 Ultra | HAF XF Evo​​


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Hilfe! Anfängerproblem mit Buttongadget
BeitragVerfasst: 24.04.2019 06:33 
Offline

Registriert: 06.03.2019 21:52
Hallo Bisonte und herzlichen Dank!

Ich bin davon ausgegangen, dass der Button vor dem Delay angezeigt werden muss, das war mein Denkfehler. Jetzt läuft's wie geschmiert, dank Dir!

_________________
Der beste Fisch ist der Schnitzel


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 3 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  

 


Powered by phpBB © 2008 phpBB Group | Deutsche Übersetzung durch phpBB.de
subSilver+ theme by Canver Software, sponsor Sanal Modifiye