ResizeGadget + flag

Share your advanced PureBasic knowledge/code with the community.
AZJIO
Addict
Addict
Posts: 2146
Joined: Sun May 14, 2017 1:48 am

ResizeGadget + flag

Post by AZJIO »

Simulates resizing gadgets like in AutoIt3 (GUICtrlSetResizing)

Code: Select all

Structure GadgetsSizesList
	id.i
	x.i
	y.i
	w.i
	h.i
	flag.i
EndStructure

Structure WH
	w.i
	h.i
	w2.i
	h2.i
EndStructure

Global NewList GadgetsSizesList.GadgetsSizesList()
Global GUI.WH

Procedure GetNewXYWH(ID)
	Protected x, y, w, h
	ForEach GadgetsSizesList()
		If GadgetsSizesList()\id = ID ; исправить на случай если не найдено
			Break
		EndIf
	Next
	
	With GadgetsSizesList()
		If \flag = 0 ; по умолчанию, всё остаётся на месте
			ProcedureReturn
		EndIf
		If \flag & 1 ; изменяется размер и отступы пропорционально новым размерам окна
			x = \x * GUI\w2 / GUI\w
			y = \y * GUI\h2 / GUI\h
			w = \w * GUI\w2 / GUI\w
			h = \h * GUI\h2 / GUI\h
		Else
			x = \x
			y = \y
			w = \w
			h = \h
		EndIf
		If \flag & 2 ; левый отступ не изменяется
			x = #PB_Ignore
		EndIf
		If \flag & 4 ; правый отступ не изменяется
			tmp = GUI\w - \x - \w
			If \flag & 2 ; левый отступ не изменяется
; 				x = #PB_Ignore
				w = GUI\w2 - \x - tmp
			Else
				x = GUI\w2 - w - tmp
			EndIf
		EndIf
; 		If \flag & 16
; 		EndIf
		If \flag & 32 ; верхний отступ не изменяется
			y = #PB_Ignore
		EndIf
		If \flag & 64 ; нижний отступ не изменяется
			tmp = GUI\h - \y - \h
			If \flag & 32 ; верхний отступ не изменяется
; 				y = #PB_Ignore
				h = GUI\h2 - \y - tmp
			Else
				y = GUI\h2 - h - tmp
			EndIf
		EndIf
		If \flag & 256 ; ширина не изменяется
			w = #PB_Ignore
		EndIf
		If \flag & 512 ; высота не изменяется
			h = #PB_Ignore
		EndIf
		If \flag & 8 ; не перемещается относительно горизонтального центра
			x = (\x + \w / 2) - w / 2
		EndIf
		If \flag & 128 ; не перемещается относительно вертикального центра
			y = (\y + \h / 2) - h / 2
		EndIf
	EndWith
	ResizeGadget(ID, x, y, w, h)
EndProcedure


Procedure SizeWindowHandler()
	With GUI
		\w2 = WindowWidth(0)
		\h2 = WindowHeight(0)
	EndWith
	GetNewXYWH(1)
	GetNewXYWH(2)
	
EndProcedure

Procedure AddGadgetSize(ID, flag)
	AddElement(GadgetsSizesList())
	With GadgetsSizesList()
		\id = ID
		\x = GadgetX(ID)
		\y = GadgetY(ID)
		\w = GadgetWidth(ID)
		\h = GadgetHeight(ID)
		\flag = flag
	EndWith
EndProcedure

;   Объединённые стили
; SIZE 768 (256+512) размер не изменяется
; MENUBAR 544 (512+32) элементы остаются в верхней части окна и без изменения высоты
; STATEBAR 576 (512+64) элементы остаются в нижней части окна и без изменения высоты
; ALL 802 (2+32+256+512) элемент не изменяется и не перемещается
; BORDERS 102 (2+4+32+64) размеры изменяются на величину изменения окна.

;-┌──GUI──┐
If OpenWindow(0, 0, 0, 720, 400, "Example...", #PB_Window_SystemMenu | #PB_Window_ScreenCentered | #PB_Window_SizeGadget)
	With GUI
		\w = 720
		\h = 400
	EndWith
	ButtonGadget(1, 10, 10, 100, 30, "Button")
	AddGadgetSize(1, 1)
	EditorGadget(2, 10, 70, 700, 320)
	AddGadgetSize(2, 32 + 64 + 2 + 4)
	BindEvent(#PB_Event_SizeWindow, @SizeWindowHandler())
;-┌──Loop──┐
	Repeat
		Select WaitWindowEvent()
			Case #PB_Event_Gadget
				Select EventGadget()
					Case 1
						Debug 1
				EndSelect
			Case #PB_Event_CloseWindow
				CloseWindow(0)
				End
		EndSelect
	ForEver
;-└──Loop──┘
EndIf
Instead of searching I used SetGadgetData(), GetGadgetData()

Code: Select all

Structure GadgetsSizesList
	id.i
	x.i
	y.i
	w.i
	h.i
	flag.i
EndStructure

Structure WH
	w.i
	h.i
	w2.i
	h2.i
EndStructure

Global NewList GadgetsSizesList.GadgetsSizesList()
Global GUI.WH

Procedure GetNewXYWH(ID)
	Protected x, y, w, h, *GadgetSize.GadgetsSizesList
	*GadgetSize = GetGadgetData(ID)
	
	With *GadgetSize
		If \flag = 0 ; по умолчанию, всё остаётся на месте
			ProcedureReturn
		EndIf
		If \flag & 1 ; изменяется размер и отступы пропорционально новым размерам окна
			x = \x * GUI\w2 / GUI\w
			y = \y * GUI\h2 / GUI\h
			w = \w * GUI\w2 / GUI\w
			h = \h * GUI\h2 / GUI\h
		Else
			x = \x
			y = \y
			w = \w
			h = \h
		EndIf
		If \flag & 2 ; левый отступ не изменяется
			x = #PB_Ignore
		EndIf
		If \flag & 4 ; правый отступ не изменяется
			tmp = GUI\w - \x - \w
			If \flag & 2 ; левый отступ не изменяется
; 				x = #PB_Ignore
				w = GUI\w2 - \x - tmp
			Else
				x = GUI\w2 - w - tmp
			EndIf
		EndIf
; 		If \flag & 16
; 		EndIf
		If \flag & 32 ; верхний отступ не изменяется
			y = #PB_Ignore
		EndIf
		If \flag & 64 ; нижний отступ не изменяется
			tmp = GUI\h - \y - \h
			If \flag & 32 ; верхний отступ не изменяется
; 				y = #PB_Ignore
				h = GUI\h2 - \y - tmp
			Else
				y = GUI\h2 - h - tmp
			EndIf
		EndIf
		If \flag & 256 ; ширина не изменяется
			w = #PB_Ignore
		EndIf
		If \flag & 512 ; высота не изменяется
			h = #PB_Ignore
		EndIf
		If \flag & 8 ; не перемещается относительно горизонтального центра
			x = (\x + \w / 2) - w / 2
		EndIf
		If \flag & 128 ; не перемещается относительно вертикального центра
			y = (\y + \h / 2) - h / 2
		EndIf
	EndWith
	ResizeGadget(ID, x, y, w, h)
EndProcedure


Procedure SizeWindowHandler()
	With GUI
		\w2 = WindowWidth(0)
		\h2 = WindowHeight(0)
	EndWith
	GetNewXYWH(1)
	GetNewXYWH(2)
	
EndProcedure

Procedure AddGadgetSize(ID, flag)
	Protected *item
	*item = AddElement(GadgetsSizesList())
	If *item
		With GadgetsSizesList()
			\id = ID
			\x = GadgetX(ID)
			\y = GadgetY(ID)
			\w = GadgetWidth(ID)
			\h = GadgetHeight(ID)
			\flag = flag
		EndWith
		SetGadgetData(ID, *item)
	EndIf
EndProcedure

;   Объединённые стили
; SIZE 768 (256+512) размер не изменяется
; MENUBAR 544 (512+32) элементы остаются в верхней части окна и без изменения высоты
; STATEBAR 576 (512+64) элементы остаются в нижней части окна и без изменения высоты
; ALL 802 (2+32+256+512) элемент не изменяется и не перемещается
; BORDERS 102 (2+4+32+64) размеры изменяются на величину изменения окна.

;-┌──GUI──┐
If OpenWindow(0, 0, 0, 720, 400, "Example...", #PB_Window_SystemMenu | #PB_Window_ScreenCentered | #PB_Window_SizeGadget)
	With GUI
		\w = 720
		\h = 400
	EndWith
	ButtonGadget(1, 10, 10, 100, 30, "Button")
	AddGadgetSize(1, 1)
; 	EditorGadget(2, 10, 70, 700, 320)
; 	AddGadgetSize(2, 32 + 64 + 2 + 4)
	EditorGadget(2, 160, 100, 400, 200)
	AddGadgetSize(2, 1 + 8 + 128)
	BindEvent(#PB_Event_SizeWindow, @SizeWindowHandler())
;-┌──Loop──┐
	Repeat
		Select WaitWindowEvent()
			Case #PB_Event_Gadget
				Select EventGadget()
					Case 1
						Debug 1
				EndSelect
			Case #PB_Event_CloseWindow
				CloseWindow(0)
				End
		EndSelect
	ForEver
;-└──Loop──┘
EndIf
Last edited by AZJIO on Thu Jul 25, 2024 4:59 am, edited 3 times in total.
User avatar
Mindphazer
Enthusiast
Enthusiast
Posts: 458
Joined: Mon Sep 10, 2012 10:41 am
Location: Savoie

Re: ResizeGadget + flag

Post by Mindphazer »

Interesting
But what is the flag if i want a gadget to be stick on the right side when resizing the window, keeping the same width ?
MacBook Pro 16" M4 Pro - 24 Gb - MacOS 15.4.1 - Iphone 15 Pro Max - iPad at home
...and unfortunately... Windows at work...
AZJIO
Addict
Addict
Posts: 2146
Joined: Sun May 14, 2017 1:48 am

Re: ResizeGadget + flag

Post by AZJIO »

4
I corrected it because it was wrong.
User avatar
Mindphazer
Enthusiast
Enthusiast
Posts: 458
Joined: Mon Sep 10, 2012 10:41 am
Location: Savoie

Re: ResizeGadget + flag

Post by Mindphazer »

Thanks a lot

A little variation using a map... And I defined constants, it's a bit more readable 8)

Code: Select all

#GUI_DOCKAUTO    = 1
#GUI_DOCKLEFT    = 2
#GUI_DOCKRIGHT   = 4
#GUI_DOCKHCENTER = 8
#GUI_DOCKTOP     = 32
#GUI_DOCKBOTTOM  = 64
#GUI_DOCKVCENTER = 128
#GUI_DOCKWIDTH   = 256
#GUI_DOCKHEIGHT  = 512

Structure GadgetsSizesList
;	id.i
	x.i
	y.i
	w.i
	h.i
	flag.i
EndStructure

Structure WH
	w.i
	h.i
	w2.i
	h2.i
EndStructure

Global NewMap GadgetsSizesList.GadgetsSizesList()
Global GUI.WH

Procedure GetNewXYWH(ID)
	Protected x, y, w, h

	FindMapElement(GadgetsSizesList(), Str(ID))
	
	With GadgetsSizesList()
		If \flag = 0 ; по умолчанию, всё остаётся на месте
			ProcedureReturn
		EndIf
		If \flag & 1 ; изменяется размер и отступы пропорционально новым размерам окна
			x = \x * GUI\w2 / GUI\w
			y = \y * GUI\h2 / GUI\h
			w = \w * GUI\w2 / GUI\w
			h = \h * GUI\h2 / GUI\h
		Else
			x = \x
			y = \y
			w = \w
			h = \h
		EndIf
		If \flag & 2 ; левый отступ не изменяется
			x = #PB_Ignore
		EndIf
		If \flag & 4 ; правый отступ не изменяется
			tmp = GUI\w - \x - \w
			If \flag & 2 ; левый отступ не изменяется
; 				x = #PB_Ignore
				w = GUI\w2 - \x - tmp
			Else
				x = GUI\w2 - w - tmp
			EndIf
		EndIf
; 		If \flag & 16
; 		EndIf
		If \flag & 32 ; верхний отступ не изменяется
			y = #PB_Ignore
		EndIf
		If \flag & 64 ; нижний отступ не изменяется
			tmp = GUI\h - \y - \h
			If \flag & 32 ; верхний отступ не изменяется
; 				y = #PB_Ignore
				h = GUI\h2 - \y - tmp
			Else
				y = GUI\h2 - h - tmp
			EndIf
		EndIf
		If \flag & 256 ; ширина не изменяется
			w = #PB_Ignore
		EndIf
		If \flag & 512 ; высота не изменяется
			h = #PB_Ignore
		EndIf
		If \flag & 8 ; не перемещается относительно горизонтального центра
			x = (\x + \w / 2) - w / 2
		EndIf
		If \flag & 128 ; не перемещается относительно вертикального центра
			y = (\y + \h / 2) - h / 2
		EndIf
	EndWith
	ResizeGadget(ID, x, y, w, h)
EndProcedure


Procedure SizeWindowHandler()
	With GUI
		\w2 = WindowWidth(0)
		\h2 = WindowHeight(0)
	EndWith
	
	ResetMap(GadgetsSizesList())
	While NextMapElement(GadgetsSizesList())
	  GetNewXYWH(Val(MapKey(GadgetsSizesList())))
	Wend
	
	;GetNewXYWH(1)
	;GetNewXYWH(2)
	
EndProcedure

Procedure AddGadgetSize(ID, flag)
  AddMapElement(GadgetsSizesList(), Str(ID))
	;AddElement(GadgetsSizesList())
	With GadgetsSizesList()
;		\id = ID
		\x = GadgetX(ID)
		\y = GadgetY(ID)
		\w = GadgetWidth(ID)
		\h = GadgetHeight(ID)
		\flag = flag
	EndWith
EndProcedure

;   Объединённые стили
; SIZE 768 (256+512) размер не изменяется
; MENUBAR 544 (512+32) элементы остаются в верхней части окна и без изменения высоты
; STATEBAR 576 (512+64) элементы остаются в нижней части окна и без изменения высоты
; ALL 802 (2+32+256+512) элемент не изменяется и не перемещается
; BORDERS 102 (2+4+32+64) размеры изменяются на величину изменения окна.

;-┌──GUI──┐
If OpenWindow(0, 0, 0, 720, 400, "Example...", #PB_Window_SystemMenu | #PB_Window_ScreenCentered | #PB_Window_SizeGadget)
	With GUI
		\w = WindowWidth(0)
		\h = WindowHeight(0)
	EndWith
	Button1 = ButtonGadget(#PB_Any, 10, 10, 100, 30, "Button")
	Button2 = ButtonGadget(#PB_Any, 610, 10, 100, 30, "Button")
	AddGadgetSize(Button2, #GUI_DOCKRIGHT)
	AddGadgetSize(Button1, #GUI_DOCKAUTO)
	Editor = EditorGadget(#PB_Any, 10, 70, 700, 290)
	String = StringGadget(#PB_Any, 10, 370, 700, 20, "String...")
	AddGadgetSize(String, #GUI_DOCKBOTTOM | #GUI_DOCKLEFT | #GUI_DOCKRIGHT)
	AddGadgetSize(Editor, #GUI_DOCKBOTTOM | #GUI_DOCKTOP | #GUI_DOCKLEFT | #GUI_DOCKRIGHT)
	BindEvent(#PB_Event_SizeWindow, @SizeWindowHandler())
;-┌──Loop──┐
	Repeat
		Select WaitWindowEvent()
			Case #PB_Event_Gadget
				Select EventGadget()
					;Case 1
					;	Debug 1
				EndSelect
			Case #PB_Event_CloseWindow
				CloseWindow(0)
				End
		EndSelect
	ForEver
;-└──Loop──┘
EndIf
MacBook Pro 16" M4 Pro - 24 Gb - MacOS 15.4.1 - Iphone 15 Pro Max - iPad at home
...and unfortunately... Windows at work...
AZJIO
Addict
Addict
Posts: 2146
Joined: Sun May 14, 2017 1:48 am

Re: ResizeGadget + flag

Post by AZJIO »

Mindphazer
If you added constants, then they also need to be added to the GetNewXYWH() function.
boddhi
Enthusiast
Enthusiast
Posts: 524
Joined: Mon Nov 15, 2010 9:53 pm

Re: ResizeGadget + flag

Post by boddhi »

Hi guys,

Why not use the Dialog library, which does just as well (if not better) without making things so "complicated"?

Just for the fun of coding, maybe? :mrgreen: :wink:
If my English syntax and lexicon are incorrect, please bear with Google translate and DeepL. They rarely agree with each other!
Except on this sentence...
User avatar
Mindphazer
Enthusiast
Enthusiast
Posts: 458
Joined: Mon Sep 10, 2012 10:41 am
Location: Savoie

Re: ResizeGadget + flag

Post by Mindphazer »

AZJIO wrote: Thu Jul 25, 2024 5:58 pm Mindphazer
If you added constants, then they also need to be added to the GetNewXYWH() function.
That's right !
Here's the modified version. I also attempted to proportionally resize each column of a ListIcon. It's not perfect and needs to be re-worked, but it works...

Code: Select all

#GUI_DOCKAUTO    = 1
#GUI_DOCKLEFT    = 2
#GUI_DOCKRIGHT   = 4
#GUI_DOCKHCENTER = 8
#GUI_DOCKTOP     = 32
#GUI_DOCKBOTTOM  = 64
#GUI_DOCKVCENTER = 128
#GUI_DOCKWIDTH   = 256
#GUI_DOCKHEIGHT  = 512

Structure GadgetsSizesList
	x.i
	y.i
	w.i
	h.i
	flag.i
EndStructure

Structure WH
	w.i
	h.i
	w2.i
	h2.i
EndStructure

Global NewMap GadgetsSizesList.GadgetsSizesList()
Global GUI.WH

Procedure GetNewXYWH(ID)
	Protected x, y, w, h, Oldw, tmp, FacX.f, i
	If FindMapElement(GadgetsSizesList(), Str(ID))
	  With GadgetsSizesList()
  		If \flag = 0 ; по умолчанию, всё остаётся на месте  
			  ProcedureReturn
		  EndIf
	  	If \flag & #GUI_DOCKAUTO ; изменяется размер и отступы пропорционально новым размерам окна
  			x = \x * GUI\w2 / GUI\w
  			y = \y * GUI\h2 / GUI\h
  			w = \w * GUI\w2 / GUI\w
	  		h = \h * GUI\h2 / GUI\h
  		Else
  			x = \x
  			y = \y
  			w = \w
  			h = \h
  		EndIf
  		If \flag & #GUI_DOCKLEFT ; левый отступ не изменяется
  			x = #PB_Ignore
  		EndIf
	  	If \flag & #GUI_DOCKRIGHT ; правый отступ не изменяется
  			tmp = GUI\w - \x - \w
  			If \flag & #GUI_DOCKLEFT ; левый отступ не изменяется
; 				x = #PB_Ignore
	  			w = GUI\w2 - \x - tmp
	  		Else
  				x = GUI\w2 - w - tmp
  			EndIf
	  	EndIf
; 		If \flag & 16
; 		EndIf
  		If \flag & #GUI_DOCKTOP ; верхний отступ не изменяется
  			y = #PB_Ignore
  		EndIf
  		If \flag & #GUI_DOCKBOTTOM ; нижний отступ не изменяется
  			tmp = GUI\h - \y - \h
  			If \flag & #GUI_DOCKTOP ; верхний отступ не изменяется
;   				y = #PB_Ignore
	  			h = GUI\h2 - \y - tmp
	  		Else
	  			y = GUI\h2 - h - tmp
	  		EndIf
  		EndIf
  		If \flag & #GUI_DOCKWIDTH ; ширина не изменяется
  			w = #PB_Ignore
  		EndIf
  		If \flag & #GUI_DOCKHEIGHT ; высота не изменяется
  			h = #PB_Ignore
  		EndIf
  		If \flag & #GUI_DOCKHCENTER ; не перемещается относительно горизонтального центра
  			x = (\x + \w / 2) - w / 2
  		EndIf
  		If \flag & #GUI_DOCKVCENTER ; не перемещается относительно вертикального центра
  			y = (\y + \h / 2) - h / 2
  		EndIf
  		
  	EndWith
  	Oldw = GadgetWidth(ID)
  	ResizeGadget(ID, x, y, w, h)
  	If GadgetType(ID) = #PB_GadgetType_ListIcon
  	  FacX = GadgetWidth(ID) / Oldw
  	  CompilerIf #PB_Compiler_OS = #PB_OS_Windows
  	    SendMessage_(GadgetID(ID), #WM_SETREDRAW, 0, 0)  
  	  CompilerEndIf
  	  For i = 0 To  GetGadgetAttribute(ID, #PB_ListIcon_ColumnCount) - 1
  	    SetGadgetItemAttribute(ID, 0, #PB_ListIcon_ColumnWidth, GetGadgetItemAttribute(ID, 0, #PB_ListIcon_ColumnWidth, i) * FacX, i)
  	  Next i
  	  CompilerIf #PB_Compiler_OS = #PB_OS_Windows
        SendMessage_(GadgetID(ID),#WM_SETREDRAW, 1, 0)
        InvalidateRect_(GadgetID(ID), 0, 1)
        UpdateWindow_(GadgetID(ID)) 
  	  CompilerEndIf
  	EndIf 	  
	EndIf
EndProcedure

Procedure SizeWindowHandler()
	With GUI
		\w2 = WindowWidth(0)
		\h2 = WindowHeight(0)
	EndWith
	
	ResetMap(GadgetsSizesList())
	While NextMapElement(GadgetsSizesList())
	  GetNewXYWH(Val(MapKey(GadgetsSizesList())))
	Wend
	
EndProcedure

Procedure AddGadgetSize(ID, Flag)
  AddMapElement(GadgetsSizesList(), Str(ID))
	With GadgetsSizesList()
		\x = GadgetX(ID)
		\y = GadgetY(ID)
		\w = GadgetWidth(ID)
		\h = GadgetHeight(ID)
		\flag = Flag
	EndWith
EndProcedure

;   Объединённые стили
; SIZE 768 (256+512) размер не изменяется
; MENUBAR 544 (512+32) элементы остаются в верхней части окна и без изменения высоты
; STATEBAR 576 (512+64) элементы остаются в нижней части окна и без изменения высоты
; ALL 802 (2+32+256+512) элемент не изменяется и не перемещается
; BORDERS 102 (2+4+32+64) размеры изменяются на величину изменения окна.

CompilerIf #PB_Compiler_IsMainFile

;-┌──GUI──┐
  If OpenWindow(0, 0, 0, 720, 400, "Example...", #PB_Window_SystemMenu | #PB_Window_ScreenCentered | #PB_Window_SizeGadget)
  	With GUI
  		\w = WindowWidth(0)
  		\h = WindowHeight(0)
  	EndWith
  	Button1 = ButtonGadget(#PB_Any, 10, 10, 100, 30, "Button")
  	Button2 = ButtonGadget(#PB_Any, 610, 10, 100, 30, "Button")
  	AddGadgetSize(Button2, #GUI_DOCKRIGHT)
  	AddGadgetSize(Button1, #GUI_DOCKAUTO)
  	Editor = EditorGadget(#PB_Any, 10, 70, 200, 290)
  	ListIcon = ListIconGadget(#PB_Any, 220, 70, 490, 290, "Colonne 1", 150, #PB_ListIcon_GridLines)
  	String = StringGadget(#PB_Any, 10, 370, 700, 20, "String...")
  	AddGadgetColumn(ListIcon, 1, "Colonne 2", 100)
  	AddGadgetColumn(ListIcon, 2, "Colonne 3", 80)
  	AddGadgetColumn(ListIcon, 3, "Colonne 4", 150)
  	AddGadgetSize(ListIcon, #GUI_DOCKBOTTOM | #GUI_DOCKTOP | #GUI_DOCKRIGHT | #GUI_DOCKLEFT )
  	AddGadgetSize(String, #GUI_DOCKBOTTOM | #GUI_DOCKLEFT | #GUI_DOCKRIGHT)
  	AddGadgetSize(Editor, #GUI_DOCKBOTTOM | #GUI_DOCKTOP | #GUI_DOCKLEFT); | #GUI_DOCKRIGHT)
  	BindEvent(#PB_Event_SizeWindow, @SizeWindowHandler())
;-┌──Loop──┐
  	Repeat
   		Select WaitWindowEvent()
	;  		Case #PB_Event_Gadget

	  		Case #PB_Event_CloseWindow
	  			CloseWindow(0)
	  			End
	  	EndSelect
	  ForEver
;-└──Loop──┘
  EndIf
CompilerEndIf
MacBook Pro 16" M4 Pro - 24 Gb - MacOS 15.4.1 - Iphone 15 Pro Max - iPad at home
...and unfortunately... Windows at work...
User avatar
Mindphazer
Enthusiast
Enthusiast
Posts: 458
Joined: Mon Sep 10, 2012 10:41 am
Location: Savoie

Re: ResizeGadget + flag

Post by Mindphazer »

boddhi wrote: Thu Jul 25, 2024 11:30 pm Hi guys,

Why not use the Dialog library, which does just as well (if not better) without making things so "complicated"?

Just for the fun of coding, maybe? :mrgreen: :wink:
I know :D
But I'm really not comfortable with Dialog Library !
MacBook Pro 16" M4 Pro - 24 Gb - MacOS 15.4.1 - Iphone 15 Pro Max - iPad at home
...and unfortunately... Windows at work...
boddhi
Enthusiast
Enthusiast
Posts: 524
Joined: Mon Nov 15, 2010 9:53 pm

Re: ResizeGadget + flag

Post by boddhi »

Mindphazer wrote: But I'm really not comfortable with Dialog Library !
If you only knew how it makes life easier! :mrgreen:
It's not very complicated. I did it, that's for sure! :mrgreen:

In first times, It could be a little difficult to understand how to build your UI directly in XML, but there's Hex0r's very useful, shall I say excellent! DialogDesign0r tool.

So, use the Dialog library, at least to create the dialog box. After, you can use Dialog library or directly PB window/gadget libraries instruction sets, it depends how you've built your XML string.
If my English syntax and lexicon are incorrect, please bear with Google translate and DeepL. They rarely agree with each other!
Except on this sentence...
Post Reply