Dynamische Positions- und Größenangaben von Gadgets
Verfasst: 27.04.2012 23:54
Hallo,
hier ist ein kleiner Beispielcode der zeigt, wie sich dynamische Positions- und Größenangaben von Gadgets einfach realisieren lassen (cross-plattform):
Die gewünschten X- und Y-Positionen sowie Breite und Höhe der Gadgets werden als Makros definiert. Dabei wird auch bestimmt, welche Werte jeweils fest und welche dynamisch veränderbar sind. Die Makros werden zum Erzeugen der Gadgets ebenso wie für die Größenänderungen in der Hauptschleife benutzt.
Grüße, Nino
hier ist ein kleiner Beispielcode der zeigt, wie sich dynamische Positions- und Größenangaben von Gadgets einfach realisieren lassen (cross-plattform):
Die gewünschten X- und Y-Positionen sowie Breite und Höhe der Gadgets werden als Makros definiert. Dabei wird auch bestimmt, welche Werte jeweils fest und welche dynamisch veränderbar sind. Die Makros werden zum Erzeugen der Gadgets ebenso wie für die Größenänderungen in der Hauptschleife benutzt.
Grüße, Nino
Code: Alles auswählen
; getestet mit PB 4.60 unter Windows XP x86
#AppName$ = "Resize demo"
;- Window constants
Enumeration
#WinMain
EndEnumeration
;- Gadget constants
Enumeration
#ListIcon
#ListView
#ButtonA
#ButtonB
EndEnumeration
;- Dynamically movable/resizable gadgets
;---------------------------------------
Macro ListIcon_Width
(WindowWidth(#WinMain) - 20)
EndMacro
Macro ListIcon_Height
(WindowHeight(#WinMain) - 145)
EndMacro
Macro ListIcon_X
10
EndMacro
Macro ListIcon_Y
10
EndMacro
;---------------------------------------
Macro ListView_Width
(WindowWidth(#WinMain) - 20)
EndMacro
Macro ListView_Height
50
EndMacro
Macro ListView_X
10
EndMacro
Macro ListView_Y
(WindowHeight(#WinMain) - 130)
EndMacro
;---------------------------------------
Macro ButtonA_Width
110
EndMacro
Macro ButtonA_Height
30
EndMacro
Macro ButtonA_X
30
EndMacro
Macro ButtonA_Y
(WindowHeight(#WinMain) - 50)
EndMacro
;---------------------------------------
Macro ButtonB_Width
110
EndMacro
Macro ButtonB_Height
30
EndMacro
Macro ButtonB_X
((WindowWidth(#WinMain) - 30 - ButtonB_Width))
EndMacro
Macro ButtonB_Y
(WindowHeight(#WinMain) - 50)
EndMacro
;---------------------------------------
;- Create window
If OpenWindow(#WinMain, #PB_Ignore, #PB_Ignore, 650, 380, #AppName$, #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_SizeGadget) = 0
MessageRequester(#AppName$, "Fehler: Kann das Hauptfenster nicht erzeugen.")
End
EndIf
WindowBounds(#WinMain, 450, 250, #PB_Ignore, #PB_Ignore)
;- Create gadgets
ListIconGadget(#ListIcon, ListIcon_X, ListIcon_Y, ListIcon_Width, ListIcon_Height, "Name", 180, #PB_ListIcon_CheckBoxes | #PB_ListIcon_FullRowSelect | #PB_ListIcon_GridLines)
AddGadgetColumn(#ListIcon, 1, "PLZ", 50)
AddGadgetColumn(#ListIcon, 2, "Ort", 180)
AddGadgetColumn(#ListIcon, 3, "Straße", 200)
ListViewGadget(#ListView, Listview_X, Listview_Y, Listview_Width, Listview_Height)
ButtonGadget(#ButtonA, ButtonA_X, ButtonA_Y, ButtonA_Width, ButtonA_Height, "Mach dies")
ButtonGadget(#ButtonB, ButtonB_X, ButtonB_Y, ButtonB_Width, ButtonB_Height, "Tu das")
;- Main loop
Repeat
Select WaitWindowEvent()
Case #PB_Event_SizeWindow
ResizeGadget(#ListIcon, #PB_Ignore, #PB_Ignore, ListIcon_Width, ListIcon_Height)
ResizeGadget(#ListView, #PB_Ignore, Listview_Y, Listview_Width, #PB_Ignore)
ResizeGadget(#ButtonA, ButtonA_X, ButtonA_Y, #PB_Ignore, #PB_Ignore)
ResizeGadget(#ButtonB, ButtonB_X, ButtonB_Y, #PB_Ignore, #PB_Ignore)
Case #PB_Event_CloseWindow
Break
EndSelect
ForEver