Dynamische Positions- und Größenangaben von Gadgets

Hier könnt Ihr gute, von Euch geschriebene Codes posten. Sie müssen auf jeden Fall funktionieren und sollten möglichst effizient, elegant und beispielhaft oder einfach nur cool sein.
Nino
Beiträge: 1300
Registriert: 13.05.2010 09:26
Wohnort: Berlin

Dynamische Positions- und Größenangaben von Gadgets

Beitrag 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