Theotokos Posted February 19, 2020 Report Share Posted February 19, 2020 Pode parecer besta, mas me surgiu essa questão.... o que muda em relação ao funcionamento do sistema no cliente, com relação a velocidade, memória, algo assim... se criarmos a variaves da seguinte formas : * Variaveis de todos os botoes de um certo dialog aBtn_Dlg1[5] ==> ou seja são cinco botoes cada um utilizando no fonte aBtn[1], aBtn[2], aBtn[x] ou aBtn_Dlg_1, aBtn_Dlg_2, aBtn_Dlg_3, aBtn_Dlg_4, aBtn_Dlg_4 Quote Link to comment Share on other sites More sharing options...
kapiaba Posted February 19, 2020 Report Share Posted February 19, 2020 Nada, se voce fizer assim: LOCAL oBtns := ARRAY(12), IDBotao, oFont DEFINE FONT oFont NAME "Ms Sans Serif" SIZE 0, -14 BOLD //->Definicao dos Botoes do Programa REDEFINE BUTTON oBtns[01] ID 1000 OF oDlg ; ACTION ( INICIACAD( oLbx, DeOndeVem := [INCLUSAO] ) ) ; WHEN( .NOT. lEsModi ) oBtns[01]:cToolTip := OemToAnsi( "Incluir Novo Registro - Alt+N" ) REDEFINE BUTTON oBtns[02] ID 2000 OF oDlg ; ACTION ( CARREGACAD( oLbx, DeOndeVem := [ALTERACAO] ), ; lEsModi := .T. ) ; WHEN( .NOT. lEsModi ) oBtns[02]:cToolTip := OemToAnsi( "Altera‡Æo de Dados - Alt+A" ) REDEFINE BUTTON oBtns[03] ID 3000 OF oDlg ; ACTION ( IF( MsgYesNo( "Deseja Apagar Este Registro? " + ; CRLF+CRLF, "Confirma? " ), ; IF( CAD->(Rlock()), CAD->( DbDelete() ), ; CAD->(DbDelete())), .T. ), DbSkip(+1), ; CARREGACAD( oLbx ), oLbx:Refresh() ) ; WHEN( .NOT. lEsAlta .AND. .NOT. lEsModi ) oBtns[03]:cToolTip := OemToAnsi( "ExclusÆo de Registro - Alt+E" ) REDEFINE BUTTON oBtns[04] ID 4000 OF oDlg ; ACTION ( BUSCACAD(cTitle, cText, uVar, cBmpFile, cResName, oLbx)); WHEN( .NOT. lEsAlta .AND. .NOT. lEsModi ) oBtns[04]:cToolTip := OemToAnsi( "Pesquisar o Dado - Alt+P" ) REDEFINE BUTTON oBtns[05] ID 5000 OF oDlg ; ACTION ( DbGoTop(), CARREGACAD( oLbx ) ) ; WHEN( .NOT. lEsAlta .AND. .NOT. lEsModi ) oBtns[05]:cToolTip := OemToAnsi( "Inicio do Arquivo - Alt+I" ) REDEFINE BUTTON oBtns[06] ID 6000 OF oDlg ; ACTION ( IF( !BOF(), DbSkip(-1), DbGoTop() ), CARREGACAD( oLbx ) ); WHEN( .NOT. lEsAlta .AND. .NOT. lEsModi ) oBtns[06]:cToolTip := OemToAnsi( "Registro Anterior do Arquivo - Alt+T" ) REDEFINE BUTTON oBtns[07] ID 7000 OF oDlg ; ACTION ( IF( !EOF(), DbSkip(+1), Dbskip(-1) ), CARREGACAD( oLbx ) ); WHEN( .NOT. lEsAlta .AND. .NOT. lEsModi ) oBtns[07]:cToolTip := OemToAnsi( "Registro Seguinte do Arquivo - Alt+X" ) REDEFINE BUTTON oBtns[08] ID 8000 OF oDlg ; ACTION ( DbGoBottom(), CARREGACAD( oLbx ) ) ; WHEN( .NOT. lEsAlta .AND. .NOT. lEsModi ) oBtns[08]:cToolTip := OemToAnsi( "Final do Arquivo - Alt+F" ) REDEFINE BUTTON oBtns[09] ID 9000 OF oDlg ; ACTION ( IMPRIMECAD( oLbx ) ) ; WHEN( .NOT. lEsAlta .AND. .NOT. lEsModi ) oBtns[09]:cToolTip := OemToAnsi( "Listagem do Arquivo - Imprimir - Alt+L" ) REDEFINE BUTTON oBtns[10] ID 10000 OF oDlg ; ACTION ( lSalvar := .T., IF( .NOT. EMPTY( aGets[1] ), ; SALVARCAD( oLbx ), CIERTO( "Registro em Branco " ) ) ) ; WHEN( lEsAlta .OR. lEsModi ) oBtns[10]:cToolTip := OemToAnsi( "Gravar Dados no Arquivo - Alt+G" ) REDEFINE BUTTON oBtns[11] ID 11000 OF oDlg ; ACTION ( INICIACAD( oLbx ), CARREGACAD( oLbx ), lSalvar := .F., ; lEsAlta := .F., ; lEsModi := .F. ) CANCEL oBtns[11]:cToolTip := OemToAnsi( "Cancelar Opera‡Æo - Alt+C" ) REDEFINE BUTTON oBtns[12] ID 12000 OF oDlg ; ACTION ( oDlg:End() ) CANCEL UPDATE oBtns[12]:cToolTip := OemToAnsi( "Saida - Exit - Cancelar" ) //-> Liga as Fontes dos Botoes - Escolha Modelo //-> SET FONT OF oBtns[01] TO oFont //-> SET FONT OF oBtns[02] TO oFont //-> SET FONT OF oBtns[03] TO oFont //-> SET FONT OF oBtns[04] TO oFont //-> SET FONT OF oBtns[05] TO oFont //-> SET FONT OF oBtns[06] TO oFont //-> SET FONT OF oBtns[07] TO oFont //-> SET FONT OF oBtns[08] TO oFont //-> SET FONT OF oBtns[09] TO oFont //-> SET FONT OF oBtns[10] TO oFont //-> SET FONT OF oBtns[11] TO oFont //-> SET FONT OF oBtns[12] TO oFont //-> Outra Forma Mais Rapida de Fazer FOR IDBotao = 1 TO 12 SET FONT OF oBtns[IDBotao] TO oFont NEXT oFont:End() Theotokos 1 Quote Link to comment Share on other sites More sharing options...
Rogerio Figueira Posted February 19, 2020 Report Share Posted February 19, 2020 Desde o velho Clipper (RIP) como constava no manual, o uso de variáveis definidas como matrizes consome menos memória. Então eu sempre que possível uso matrizes para todas as variáveis. Também facilita bastante a programação. IF oQry:nRecCount >0 cmatriz[10] := oQry:cheques cmatriz[11] := oQry:autcartao1 cmatriz[12] := oQry:valorcartao1 cmatriz[13] := oQry:venc_cartao1 cmatriz[14] := oQry:autcartao2 cmatriz[15] := oQry:valorcartao2 cmatriz[16] := oQry:venc_cartao2 cmatriz[17] := oQry:autdebito cmatriz[18] := oQry:valordebito cmatriz[19] := oQry:dinheiro cmatriz[20] := oQry:data for xx=10 to 20 ocmatriz[xx]:refresh() next END []´s Theotokos 1 Quote Link to comment Share on other sites More sharing options...
Theotokos Posted February 19, 2020 Author Report Share Posted February 19, 2020 boa @Rogerio Figueira, vlw... sempre uso tmb, mas é que surgiu essa duvida mesmo, e queria saber de vcs a opnião, vlw.... Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.