Seite 1 von 2

Frage zu #PB_Any?

Verfasst: 27.03.2011 18:02
von FISCHAUGE
HI,
Ich habe in meinem Program ein MDI gadget, durch drücken des Menü eintrages "Neues Fenster" kann der User so viele neue Fenster machen wie er will, jedes fenster bestizt einen button mit der gleichen Funtkion, die ID ist also Dynamisch.

Bsp:

Code: Alles auswählen

fonttool = ButtonImageGadget(#PB_Any,10,45,32,32,ImageID(3))

Wie sage ich jetzt PB, das er bei drücken dieses Buttons, folgende Aktion ausführt? bzw. auf die gadget's des aktiven ChildWindow zugreift?

Code: Alles auswählen

  Select #PB_Event_Gadget
             

          Case  fonttool
                        FontName$ = "Arial" 
                        FontSize  = 14      
 FontRequester(FontName$, FontSize, #PB_FontRequester_Effects)
            EndSelect


Danke schon mal.

Re: Frage zu #PB_Any?

Verfasst: 27.03.2011 18:52
von STARGÅTE
Genau verstehe ich nicht was du meinst ...

Auch eine mit #PB_Any erstellte Gadget-Nummer ist einmalig für die gesamte Anwendung (also nicht Window-Spezifisch).

Falls du aus einem gedrückten Button irgendwelche Informationen über das ihm übergeordnete Fenster haben willst, kannst du EventWindow() nutzen, und bekommst so die Window-Nummer.

Re: Frage zu #PB_Any?

Verfasst: 27.03.2011 19:09
von FISCHAUGE
Wenn ich mit

Code: Alles auswählen

Select #PB_Event_Gadget
Case  WAS MUSS HIER STEHEN?
    FontName$ = "Arial"
                        FontSize  = 14     
FontRequester(FontName$, FontSize, #PB_FontRequester_Effects)
Endselect
Ausführen will, welche ID muss ich hinter Case schreiben?

Da ich ja nicht weiss, wie viele fenster mit dem selben button offen sind geht ja z.B. #Gadget1 nicht.

Re: Frage zu #PB_Any?

Verfasst: 27.03.2011 19:17
von HeX0R
Du brauchst nur beim Erstellen deine IDs in einer Liste speichern, und die dann beim Event durchforsten.

Re: Frage zu #PB_Any?

Verfasst: 27.03.2011 19:20
von c4s
Du musst dir halt beim erstellen der Gadgets die ID merken:

Code: Alles auswählen

GadgetNr = ButtonGadget(#PB_Any)
;...
Select #PB_Event_Gadget
  Case GadgetNr
Bei einer unbekannten Anzahl kannst du die GadgetNr beim erstellen der Buttons in einer LinkedList abspeichern und dann entsprechend durcharbeiten.

Re: Frage zu #PB_Any?

Verfasst: 27.03.2011 19:24
von NicTheQuick
Vielleicht können wir dir mit einem vollständigen lauffähigen Beispiel deinerseits weiterhelfen.

Re: Frage zu #PB_Any?

Verfasst: 27.03.2011 20:43
von FISCHAUGE
c4s hat geschrieben:Du musst dir halt beim erstellen der Gadgets die ID merken:

Code: Alles auswählen

GadgetNr = ButtonGadget(#PB_Any)
;...
Select #PB_Event_Gadget
  Case GadgetNr
Bei einer unbekannten Anzahl kannst du die GadgetNr beim erstellen der Buttons in einer LinkedList abspeichern und dann entsprechend durcharbeiten.
danke dir ;)

Re: Frage zu #PB_Any?

Verfasst: 28.03.2011 00:08
von PMV
:lol:
FISCHAUGE hat geschrieben:

Code: Alles auswählen

fonttool = ButtonImageGadget(#PB_Any,10,45,32,32,ImageID(3))

Code: Alles auswählen

  Select #PB_Event_Gadget
             

          Case  fonttool
                        FontName$ = "Arial" 
                        FontSize  = 14      
 FontRequester(FontName$, FontSize, #PB_FontRequester_Effects)
            EndSelect
Da hast es doch schon (fast) richtig gemacht ... fonttool hast doch schon so genutzt, wie es wolltest.
c4s hat geschrieben:Du musst dir halt beim erstellen der Gadgets die ID merken:

Code: Alles auswählen

GadgetNr = ButtonGadget(#PB_Any)
;...
Select #PB_Event_Gadget
  Case GadgetNr
Bei einer unbekannten Anzahl kannst du die GadgetNr beim erstellen der Buttons in einer LinkedList abspeichern und dann entsprechend durcharbeiten.
Nur würde ich nicht die Konstante #PB_Event_Gadget, sondern EventGadget() verwenden. :wink:

Code: Alles auswählen

GadgetNr = ButtonGadget(#PB_Any, ...)
Repeat
  Select WaitWindowEvent()
    Case #PB_Event_CloseWindow
      Break
    Case #PB_Event_Gadget
       Select EventGadget()
          Case GadgetNr
            ; tue was auch immer nötig ist, wenn der Button gedrückt wurde
       EndSelect
  EndSelect
Forever

Re: Frage zu #PB_Any?

Verfasst: 28.03.2011 00:29
von c4s
@PMV
Stimmt! Ich hatte mir das von ihm kopiert, um das Tippen zu sparen, und dabei nicht so genau auf den Code geguckt. :lol:

Re: Frage zu #PB_Any?

Verfasst: 04.04.2011 23:53
von Renovatio
Gleiche Problem habe ich auch. ^^
Ich erstelle durch einen eigenserstellten file_manager() eine Liste welche für jeden Eintrag ein neues ImageGadget erstellt.

Wie genau weiß ich jetzt welcher Eintrag in meinem file_manager() sprich also welches ImageGadget gedrückt wurde?

Ich habe null Ahnung von LinkedList und habe gerade erst Prototypes verstanden (Was zu meiner Überraschung rasch ging^^)

Hat da jemand ein kleines Beispiel wie man sowas realisiert?



Danke an die Helfenden!