Ottimo. Comunque io non metterei la possibilità di inserire un'immagine, di qualunque natura essa sia.Un Button nel suo uso normale prevede soltanto una stringa da visualizzare, per cui il contenitore classico dovrebbe prevedere un controllo Label/TextBlock che la visualizzi.Se il programmatore ha bisogno di inserire anche un'immagine (o soltanto un'immagine), può benissimo sostituire il contenitore standard con uno ad hoc allo scopo.
<StackPanel Orientantion=Horizontal> <TextBlock Text="Questa è una prova" /> <Image Source="Images/TrashIcon.png" /></StackPanel>
<StackPanel> <Image Source="Images/TrashIcon.png" /> <TextBlock Text="Questa è una prova" /></StackPanel>
<Grid> <Grid.ColumnsDefinitions> <ColumnDefinition Width="Auto" /> <ColumnDefinition Width="*" /> </Grid.ColumnsDefinitions> <Image Grid.Column="0" Source="Images/TrashIcon.png" /> <TextBlock Grid.Column="1" Text="Questa è una prova" /></Grid>
GroupGad = HGui.Gadget:new(#HGUI_GROUP_GADGET, { caption = { "GROUP" }, window = mywin })LabelGad = HGui.Gadget:new(#HGUI_LABEL_GADGET, { caption = { "Label gadget" }, window = mywin })ImageGad = HGui.Gadget:new(#HGUI_IMAGE_GADGET, { image = "test.png" }, window = mywin })GroupGad:setlayout({ gadgets = { LabelGad, ImageGad }} )
myButton = HGui.Gadget:new(#HGUI_BUTTON_GADGET, { look = { icons = { iname = "Test_Icon", alignment = #HGUI_ALIGN_LEFT + #HGUI_ALIGN_VCENTER }}, caption = { "BUTTON", "YEAH!" }, actions = { onpushed = EventTester }, window = mywin3 })
AdjText = False
GroupGad = HGui.Gadget:new(#HGUI_GROUP_GADGET, { caption = { "GROUP" }, window = mywin })GroupGad:setlayout({ gadgets = { HGui.Gadget:new(#HGUI_LABEL_GADGET, { caption = { "Label gadget" }, window = mywin }), HGui.Gadget:new(#HGUI_IMAGE_GADGET, { image = "test.png" }, window = mywin }) }} )
--- layout GUI ---[SwitchA][RadioA ][SwitchB][RadioB ][SwitchC][SwitchD] [RadioC ]
HGui.Links:new(link_type, data)
HGui.Links:new(#HGUI_LINKTYPE_RADIO, { objects = { RadioA, RadioB, RadioC }})
In questi casi è meglio una classe "container" / panel che raggruppi, appunto, un certo insieme di elementi.
HGui.Link:new(#HGUI_LINKTYPE_RADIO, { Objects = { A, E } })HGui.Link:new(#HGUI_LINKTYPE_RADIO, { Objects = { B, E } })HGui.Link:new(#HGUI_LINKTYPE_RADIO, { Objects = { C, E } })HGui.Link:new(#HGUI_LINKTYPE_RADIO, { Objects = { D, E } })HGui.Link:new(#HGUI_LINKTYPE_RADIO, { Objects = { A, F } })HGui.Link:new(#HGUI_LINKTYPE_RADIO, { Objects = { B, F } })HGui.Link:new(#HGUI_LINKTYPE_RADIO, { Objects = { C, F } })HGui.Link:new(#HGUI_LINKTYPE_RADIO, { Objects = { D, F } })
HGui.Link:new(#HGUI_LINKTYPE_RADIO, { Objects = { A, B, C, D, E, F } })
Tutti gli elementi alla fine hanno sempre un "parent", e tramite questa relazione è possibile discriminare se sono figli dello stesso padre , per cui nel caso dei RadioButton si può sapere quali sono gli altri "fratelli" e agire di conseguenza quando ne viene selezionato uno (deselezionando quello precedente, eventualmente).
Non ho capito, invece, l'utilità di poter aver un oggetto collegato a più gruppi.
HGui.Link:new(#HGUI_LINKTYPE_CAPTION, { Source = MyListViewObject, Destination = A })