Seite 1 von 1

Dynamische Positions- und Größenangaben von Gadgets

Verfasst: 27.04.2012 23:54
von Nino
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

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