pipininhos na rotina devido aos CHs
Eu modifiquei tudo pra simplificar, mas a criação da idéia é dele.
Apenas simplifiquei, dependendo do ponto de vista...
Código: Selecionar todos
/*
test codeblock
*/
#include "minigui.ch"
// don't initialize values here
STATIC nRowPos, nColPos
FUNCTION Main()
LOCAL aList := {}, nCont, nMesa, cName, bCode
nColPos := -1
nRowPos := -1
FOR nCont = 1 TO 35
AAdd( aList, nCont + 50 )
NEXT
DEFINE WINDOW ( "Form_1" ) ;
AT 0,0 ;
WIDTH 1000 ;
HEIGHT 500 ;
MAIN;
TITLE 'Teste de Mesa' ;
NOSIZE ;
NOMAXIMIZE
DEFINE MAIN MENU
FOR nCont := 1 TO Len( aList )
// two variables uniques
FOR EACH nMesa, cName IN ;
{ aList[ nCont ] }, ;
{ "Mesa" + StrZero( nCont,2 ) }
RowPos()
@ nRowPos, nColPos BUTTONEX ( cName ) ;
CAPTION "Mesa Nº" + CRLF + StrZero( nMesa, 2 ) ;
PICTURE "button.bmp" ;
BACKCOLOR GREEN GRADIENTFILL { { 1, GREEN,GREEN } } ;
WIDTH 120 ;
HEIGHT 60
bCode := { || MostraMesa( nMesa, cName ) }
SetProperty( "FORM_1", cName, "ACTION", bCode )
NEXT
NEXT
END WINDOW
CENTER WINDOW ( "Form_1" )
ACTIVATE WINDOW ( "Form_1" )
RETURN Nil
STATIC FUNCTION RowPos()
IF nColPos == -1
nRowPos := 5
nColPos := 5
ELSE
nColPos += 125
IF nColPos > GetProperty( "form_1", "width" ) - 200
nRowPos += 65
nColPos := 5
ENDIF
ENDIF
RETURN nRowPos
STATIC FUNCTION MostraMesa( nMesa, cName )
MsgInfo( "Mesa " + StrZero( nMesa, 2 ) + " selecionada" )
SetProperty( "FORM_1", cName, "BACKCOLOR", RED )
SetProperty( "FORM_1", cName, "GRADIENTFILL", { { 1, RED, RED } } )
RETURN Nil
1) Codeblock, tem que isolar as variáveis
Usei um FOR/EACH de dois elementos
Código: Selecionar todos
// two variables uniques
FOR EACH nMesa, cName IN ;
{ aList[ nCont ] }, ;
{ "Mesa" + StrZero( nCont,2 ) }
Usei SetProperty( "form_1", cName, "ACTION", bCode )
Código: Selecionar todos
bCode := { || MostraMesa( nMesa, cName ) }
SetProperty( "FORM_1", cName, "ACTION", bCode )
Movi pra linha anterior
Código: Selecionar todos
RowPos()
@ nRowPos, nColPos BUTTONEX ( cName ) ;
CAPTION "Mesa Nº" + CRLF + StrZero( nMesa, 2 ) ;
No final tanto faz pra minigui, passou a ser chamada na linha anterior.
Código: Selecionar todos
STATIC FUNCTION RowPos()
IF nColPos == -1
nRowPos := 5
nColPos := 5
ELSE
nColPos += 125
IF nColPos > GetProperty( "form_1", "width" ) - 200
nRowPos += 65
nColPos := 5
ENDIF
ENDIF
RETURN nRowPos