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
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.
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.

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!