I wish use a dialog with WS_OVERLAPPED style
When the use resize the dialog the buttons must move and resize ( height,width)
How I can make ?
I made this is a test it run the buttos are moved but the size of each buttons are the same
How I can to change also the width and height of each button simulating a zoom ?
- Code: Select all Expand view
#include "FiveWin.ch"
#include "constant.ch"
#include "Tsbutton.ch"
#DEFINE BTNSIZE_H 40
#DEFINE BTNSIZE_W 40
Function test()
Local oDlg
Local aBtnsLines[12]
Local aBtnsProdu[24]
Local nBottom := 41
Local nRight := 110
Local nWidth := Max( nRight * DLG_CHARPIX_W, 180 )
Local nHeight := nBottom * DLG_CHARPIX_H
DEFINE DIALOG oDlg ;
TITLE "test" ;
SIZE nWidth, nHeight TRANSPARENT PIXEL
oDlg:nStyle := nOr( WS_OVERLAPPED,WS_THICKFRAME,WS_SYSMENU,WS_MAXIMIZEBOX, 0 )
@ 5,190 SBUTTON aBtnsLines[ 1] OF oDlg SIZE 40, 30 PIXELS
@ 5,232 SBUTTON aBtnsLines[ 2] OF oDlg SIZE 40, 30 PIXELS
@ 5,274 SBUTTON aBtnsLines[ 3] OF oDlg SIZE 40, 30 PIXELS
@ 5,316 SBUTTON aBtnsLines[ 4] OF oDlg SIZE 40, 30 PIXELS
@ 37,190 SBUTTON aBtnsLines[ 5] OF oDlg SIZE 40, 30 PIXELS
@ 37,232 SBUTTON aBtnsLines[ 6] OF oDlg SIZE 40, 30 PIXELS
@ 37,274 SBUTTON aBtnsLines[ 7] OF oDlg SIZE 40, 30 PIXELS
@ 37,316 SBUTTON aBtnsLines[ 8] OF oDlg SIZE 40, 30 PIXELS
@ 69,190 SBUTTON aBtnsLines[ 9] OF oDlg SIZE 40, 30 PIXELS
@ 69,232 SBUTTON aBtnsLines[10] OF oDlg SIZE 40, 30 PIXELS
@ 69,274 SBUTTON aBtnsLines[11] OF oDlg SIZE 40, 30 PIXELS
@ 69,316 SBUTTON aBtnsLines[12] OF oDlg SIZE 40, 30 PIXELS
@ 108,190 SBUTTON aBtnsProdu[ 1] OF oDlg SIZE 40, 30 PIXELS OFFICE
@ 108,232 SBUTTON aBtnsProdu[ 2] OF oDlg SIZE 40, 30 PIXELS OFFICE
@ 108,274 SBUTTON aBtnsProdu[ 3] OF oDlg SIZE 40, 30 PIXELS OFFICE
@ 108,316 SBUTTON aBtnsProdu[ 4] OF oDlg SIZE 40, 30 PIXELS OFFICE
@ 140,190 SBUTTON aBtnsProdu[ 5] OF oDlg SIZE 40, 30 PIXELS OFFICE
@ 140,232 SBUTTON aBtnsProdu[ 6] OF oDlg SIZE 40, 30 PIXELS OFFICE
@ 140,274 SBUTTON aBtnsProdu[ 7] OF oDlg SIZE 40, 30 PIXELS OFFICE
@ 140,316 SBUTTON aBtnsProdu[ 8] OF oDlg SIZE 40, 30 PIXELS OFFICE
@ 172,190 SBUTTON aBtnsProdu[ 9] OF oDlg SIZE 40, 30 PIXELS OFFICE
@ 172,232 SBUTTON aBtnsProdu[10] OF oDlg SIZE 40, 30 PIXELS OFFICE
@ 172,274 SBUTTON aBtnsProdu[11] OF oDlg SIZE 40, 30 PIXELS OFFICE
@ 172,316 SBUTTON aBtnsProdu[12] OF oDlg SIZE 40, 30 PIXELS OFFICE
@ 204,190 SBUTTON aBtnsProdu[13] OF oDlg SIZE 40, 30 PIXELS OFFICE
@ 204,232 SBUTTON aBtnsProdu[14] OF oDlg SIZE 40, 30 PIXELS OFFICE
@ 204,274 SBUTTON aBtnsProdu[15] OF oDlg SIZE 40, 30 PIXELS OFFICE
@ 204,316 SBUTTON aBtnsProdu[16] OF oDlg SIZE 40, 30 PIXELS OFFICE
@ 236,190 SBUTTON aBtnsProdu[17] OF oDlg SIZE 40, 30 PIXELS OFFICE
@ 236,232 SBUTTON aBtnsProdu[18] OF oDlg SIZE 40, 30 PIXELS OFFICE
@ 236,274 SBUTTON aBtnsProdu[19] OF oDlg SIZE 40, 30 PIXELS OFFICE
@ 236,316 SBUTTON aBtnsProdu[20] OF oDlg SIZE 40, 30 PIXELS OFFICE
@ 268,190 SBUTTON aBtnsProdu[21] OF oDlg SIZE 40, 30 PIXELS OFFICE
@ 268,232 SBUTTON aBtnsProdu[22] OF oDlg SIZE 40, 30 PIXELS OFFICE
@ 268,274 SBUTTON aBtnsProdu[23] OF oDlg SIZE 40, 30 PIXELS OFFICE
@ 268,316 SBUTTON aBtnsProdu[24] OF oDlg SIZE 40, 30 PIXELS OFFICE
oDlg:bResized := {|| Rinfresca_oDlg(nHeight,nWidth,oDlg, aBtnsLines,aBtnsProdu ) }
ACTIVATE DIALOG oDlg CENTERED ;
ON INIT Rinfresca_oDlg(nHeight,nWidth,oDlg, aBtnsLines,aBtnsProdu );
ON PAINT ( aRct := GetClientRect( oDlg:hWnd ), ;
GradColor(oDlg:hDC, aRct, CLR_BLUE, LightColor(100, CLR_HGRAY) ))
return nil
//----------------------------------------------------------------------------------------------//
Function Rinfresca_oDlg(nHeight,nWidth,oDlg, aBtnsLines,aBtnsProdu )
Local i
Local oRect := oDlg:GetCliRect()
aBtnsLines[01]:nTop := oRect:nBottom - 630
aBtnsLines[02]:nTop := oRect:nBottom - 630
aBtnsLines[03]:nTop := oRect:nBottom - 630
aBtnsLines[04]:nTop := oRect:nBottom - 630
aBtnsLines[01]:nLeft := oRect:nRight - (355+ aBtnsLines[09]:nWidth)
aBtnsLines[02]:nLeft := oRect:nRight - (270+ aBtnsLines[10]:nWidth)
aBtnsLines[03]:nLeft := oRect:nRight - (185+ aBtnsLines[11]:nWidth)
aBtnsLines[04]:nLeft := oRect:nRight - (100+ aBtnsLines[12]:nWidth)
aBtnsLines[05]:nTop := oRect:nBottom - 565
aBtnsLines[06]:nTop := oRect:nBottom - 565
aBtnsLines[07]:nTop := oRect:nBottom - 565
aBtnsLines[08]:nTop := oRect:nBottom - 565
aBtnsLines[05]:nLeft := oRect:nRight - (355+ aBtnsLines[09]:nWidth)
aBtnsLines[06]:nLeft := oRect:nRight - (270+ aBtnsLines[10]:nWidth)
aBtnsLines[07]:nLeft := oRect:nRight - (185+ aBtnsLines[11]:nWidth)
aBtnsLines[08]:nLeft := oRect:nRight - (100+ aBtnsLines[12]:nWidth)
aBtnsLines[09]:nTop := oRect:nBottom - 500
aBtnsLines[10]:nTop := oRect:nBottom - 500
aBtnsLines[11]:nTop := oRect:nBottom - 500
aBtnsLines[12]:nTop := oRect:nBottom - 500
aBtnsLines[09]:nLeft := oRect:nRight - (355+ aBtnsLines[09]:nWidth)
aBtnsLines[10]:nLeft := oRect:nRight - (270+ aBtnsLines[10]:nWidth)
aBtnsLines[11]:nLeft := oRect:nRight - (185+ aBtnsLines[11]:nWidth)
aBtnsLines[12]:nLeft := oRect:nRight - (100+ aBtnsLines[12]:nWidth)
aBtnsProdu[01]:nTop := oRect:nBottom - 395
aBtnsProdu[02]:nTop := oRect:nBottom - 395
aBtnsProdu[03]:nTop := oRect:nBottom - 395
aBtnsProdu[04]:nTop := oRect:nBottom - 395
aBtnsProdu[01]:nLeft:= oRect:nRight - (355+ aBtnsProdu[21]:nWidth)
aBtnsProdu[02]:nLeft:= oRect:nRight - (270+ aBtnsProdu[22]:nWidth)
aBtnsProdu[03]:nLeft:= oRect:nRight - (185+ aBtnsProdu[23]:nWidth)
aBtnsProdu[04]:nLeft:= oRect:nRight - (100+ aBtnsProdu[24]:nWidth)
aBtnsProdu[05]:nTop := oRect:nBottom - 330
aBtnsProdu[06]:nTop := oRect:nBottom - 330
aBtnsProdu[07]:nTop := oRect:nBottom - 330
aBtnsProdu[08]:nTop := oRect:nBottom - 330
aBtnsProdu[05]:nLeft:= oRect:nRight - (355+ aBtnsProdu[21]:nWidth)
aBtnsProdu[06]:nLeft:= oRect:nRight - (270+ aBtnsProdu[22]:nWidth)
aBtnsProdu[07]:nLeft:= oRect:nRight - (185+ aBtnsProdu[23]:nWidth)
aBtnsProdu[08]:nLeft:= oRect:nRight - (100+ aBtnsProdu[24]:nWidth)
aBtnsProdu[09]:nTop := oRect:nBottom - 265
aBtnsProdu[10]:nTop := oRect:nBottom - 265
aBtnsProdu[11]:nTop := oRect:nBottom - 265
aBtnsProdu[12]:nTop := oRect:nBottom - 265
aBtnsProdu[09]:nLeft:= oRect:nRight - (355+ aBtnsProdu[21]:nWidth)
aBtnsProdu[10]:nLeft:= oRect:nRight - (270+ aBtnsProdu[22]:nWidth)
aBtnsProdu[11]:nLeft:= oRect:nRight - (185+ aBtnsProdu[23]:nWidth)
aBtnsProdu[12]:nLeft:= oRect:nRight - (100+ aBtnsProdu[24]:nWidth)
aBtnsProdu[13]:nTop := oRect:nBottom - 200
aBtnsProdu[14]:nTop := oRect:nBottom - 200
aBtnsProdu[15]:nTop := oRect:nBottom - 200
aBtnsProdu[16]:nTop := oRect:nBottom - 200
aBtnsProdu[13]:nLeft:= oRect:nRight - (355+ aBtnsProdu[21]:nWidth)
aBtnsProdu[14]:nLeft:= oRect:nRight - (270+ aBtnsProdu[22]:nWidth)
aBtnsProdu[15]:nLeft:= oRect:nRight - (185+ aBtnsProdu[23]:nWidth)
aBtnsProdu[16]:nLeft:= oRect:nRight - (100+ aBtnsProdu[24]:nWidth)
aBtnsProdu[17]:nTop := oRect:nBottom - 135
aBtnsProdu[18]:nTop := oRect:nBottom - 135
aBtnsProdu[19]:nTop := oRect:nBottom - 135
aBtnsProdu[20]:nTop := oRect:nBottom - 135
aBtnsProdu[17]:nLeft:= oRect:nRight - (355+ aBtnsProdu[17]:nWidth)
aBtnsProdu[18]:nLeft:= oRect:nRight - (270+ aBtnsProdu[18]:nWidth)
aBtnsProdu[19]:nLeft:= oRect:nRight - (185+ aBtnsProdu[19]:nWidth)
aBtnsProdu[20]:nLeft:= oRect:nRight - (100+ aBtnsProdu[20]:nWidth)
aBtnsProdu[21]:nTop := oRect:nBottom - 70
aBtnsProdu[22]:nTop := oRect:nBottom - 70
aBtnsProdu[23]:nTop := oRect:nBottom - 70
aBtnsProdu[24]:nTop := oRect:nBottom - 70
aBtnsProdu[21]:nLeft:= oRect:nRight - (355+ aBtnsProdu[21]:nWidth)
aBtnsProdu[22]:nLeft:= oRect:nRight - (270+ aBtnsProdu[22]:nWidth)
aBtnsProdu[23]:nLeft:= oRect:nRight - (185+ aBtnsProdu[23]:nWidth)
aBtnsProdu[24]:nLeft:= oRect:nRight - (100+ aBtnsProdu[24]:nWidth)
return nil