Além de menos digitação, tem outro lado interessante, que a gente sempre esquece:
Código: Selecionar todos
nLini := Max( Int( ( MaxRow() - 10 ) / 2 ), 0 ) + 14 // Conforme posicao do logotipo
nColi := Max( Int( MaxCol() - 50 ) / 2, 0 )
oButton := tstPushButton():New()
oButton:PointerFocus := .F.
oButton:oImage := {, WVG_IMAGE_BITMAPRESOURCE, "FotoFachada",,1 }
oButton:Create( , , { -( nLini - 15 ), -( nColi + 10 ) }, { -11, -30 } )
oButton:lImageResize := .T.
AppUserName( "" )
AppUserLevel( 2 )
@ nLini - 2, nColi + 15 SAY "Free Memory: " + LTrim( Str( Memory( 0 ) / 1024 / 1024 ) ) + " GB"
Scroll( nLini, nColi, nLini + 2, nColi + 50, 0 )
@ nLini, nColi TO nLini + 2, nColi + 50
Código: Selecionar todos
nLini := Max( Int( ( MaxRow() - 10 ) / 2 ), 0 ) + 14 // Conforme posicao do logotipo
nColi := Max( Int( MaxCol() - 50 ) / 2, 0 )
oButton := tstPushButton():New()
WITH OBJECT oButton
:PointerFocus := .F.
:oImage := {, WVG_IMAGE_BITMAPRESOURCE, "FotoFachada",,1 }
:Create( , , { -( nLini - 15 ), -( nColi + 10 ) }, { -11, -30 } )
:lImageResize := .T.
END WITH
AppUserName( "" )
AppUserLevel( 2 )
@ nLini - 2, nColi + 15 SAY "Free Memory: " + LTrim( Str( Memory( 0 ) / 1024 / 1024 ) ) + " GB"
Scroll( nLini, nColi, nLini + 2, nColi + 50, 0 )
@ nLini, nColi TO nLini + 2, nColi + 50
Já comentei sobre deixar o fonte fácil de fazer manutenção.
À primeira vista, a vantagem do WITH OBJECT é economizar digitação.
Na prática acabamos organizando o fonte pra usá-lo.
Ficou organizada a parte do fonte referente ao button.
Nem precisa inventar de colocar traços, colocar anotações, espaços em branco, etc.
Um fonte organizado, de fácil leitura, é a chave pra tudo.
Tem muita coisa que inventaram pra ajudar nisso, esse WITH OBJECT é uma delas.
Gostei.
Por enquanto 84 blocos melhorados.
No fonte da foto, como exemplo, o que faz parte da QUERY ficou dentro do bloco organizado com WITH OBJECT.