Página 1 de 2

Como alterar o PICTURE dinamicamente?

Enviado: 28 Jul 2012 22:41
por ANDRIL
Pessoal estou voltando a programar com a HwGui por enquanto na versao 2.16 usando o Designer. Estou tentando atribuir a um objeto GET uma picture dinamica. No inicio do Form, o GET nao tem uma picture definida.
@ 27,442 GET oEdt1 VAR vEdt1 OF oGrpEdit SIZE 702,107 ;
STYLE WS_BORDER+WS_DISABLED PICTURE "" MAXLENGTH 10 ;
VALID {|| cmpAtuDbf(vEdt1)=.T.}
Depois quando direciono o focu para oEdt1 eu ATIVO ele e depedendo do dado que quero que seja digitado queria montar minha picture, para textos "@!", para numeros "999999", para valores "9999.999" e assim por diante.
Tentei:

REDEFINE GET oEdt1 VAR vEdt1 PICTURE "@!"

e

oEdt1:=HEdit():Redefine( oEdt1,,,vEdt1,,,,,,,,,,"@!")

Ambos deram erro, o primeiro na compilacao
(Error E0030 Syntax error: "syntax error at 'GET'")
e o segundo
Class: 'CHARACTER' has no exported method: EVAL
Called from ->EVAL(0)
Called from hedit.prg->HEDIT:REFRESH(370)
Called from TESTE2.PRG->BROWSEKEYPARTE1F(156)
Called from TESTE2.PRG->(b)_TESTE(86)
Called from hbrowse.prg->HBROWSE:PAINT(856)
Called from hbrowse.prg->HBROWSE:ONEVENT(279)
Called from ->HWG_DLGBOXINDIRECT(0)
Called from hdialog.prg->HDIALOG:ACTIVATE(156)
Called from TESTE2.PRG->_TESTE(88)

HwGUI 2.16 xHarbour build 1.0.0 Intl. (SimpLex)
Date:07/28/12
Time:22:37:34
Ate+

Como alterar o PICTURE dinamicamente?

Enviado: 29 Jul 2012 11:49
por esbasso
Tua Lib esta muito desatualizado, sujiro baixar do SVN e atualizar

mas para trocar a picture dinamincamente use

oget:ParsePict( cPicture, vari )

Como alterar o PICTURE dinamicamente?

Enviado: 30 Jul 2012 08:40
por ANDRIL
esbasso escreveu:oget:ParsePict( cPicture, vari )
Funcionou, obrigado.

Agora vi que preciso alterar dinamicamente outras propriedades, por exemplo:
ANDRIL escreveu:SIZE 702,107
Preciso diminuir ou aumentar esta propriedade, de acordo com a picture que defini dinamicamente.
ANDRIL escreveu:MAXLENGTH 10
Esta aqui tambem preciso alterar de 10 para outro valor de acordo com a picture.
esbasso escreveu:Tua Lib esta muito desatualizado, sujiro baixar do SVN e atualizar
Realmente, fiquei muito tempo sem usa-la, ate tinha baixado a 2.17 mas ao compilar meu aplicativo acabou por ter alguns problemas e voltei a 2.16. Qual a versão atual? Onde baixa-la? É compativel com o xharbour 1.0.0 SimpLex?
Outra dúvida, a HwGUI pode rodar tambem no HARBOUR caso tenha que migrar?
Estou pensando seriamente em passar meus aplicativos para GUI e penso em utiliza-la.

Obrigado pela resposta.

Como alterar o PICTURE dinamicamente?

Enviado: 30 Jul 2012 12:20
por esbasso
Para alterar o tamho do GET use
oGet:Move( nleft, ntop, nwidth, nheight )
se quer só aumentar passe somente o tamanho
oGet:Move( ,, nwidth, )

è compativel coM XHARBOUR E HARBOUR

para baixar use SVN
INSTALE O tortoise svn E DEPOIS use o local
https://hwgui.svn.sourceforge.net/svnro ... unk/hwgui/

Como alterar o PICTURE dinamicamente?

Enviado: 30 Jul 2012 16:36
por ANDRIL
esbasso escreveu:oGet:Move( ,, nwidth, )
Funcionou, ok.
ANDRIL escreveu:MAXLENGTH 10
E este tem como mudar dinamicamente, pois se diminuo o GET gostaria de limitar o campo também.

Aproveitando, to usando o BROWSE e vi que da para editar diretamente nele o conteudo do campo. Porem, não achei uma forma de passar uma function para fazer a validação ao teclar ENTER para encerrar a edição. Tem como fazer isso direto na edição do campo?

Agradeço por todas as informações prestadas.
Ate+

Como alterar o PICTURE dinamicamente?

Enviado: 01 Ago 2012 21:55
por ANDRIL
Alguem saberia me dizer se tem ou não como fazer o que citei acima. Procurei, em toda pasta da HWGUI e não consegui identificar nenhum código que menciona o que estou procurando.
Ate+

Como alterar o PICTURE dinamicamente?

Enviado: 01 Ago 2012 22:34
por esbasso
voce começa um tópico com Picture dinamicamente, no meio mudou para o Brorwse e no final pergunta se tem como fazer o descrito acima, mas não fica claro ao que está se referindo.

Como alterar o PICTURE dinamicamente?

Enviado: 02 Ago 2012 07:05
por ANDRIL
Esbosso, voce tem razão. Só não abri outros tópicos por que o que estou fazendo esta tudo na mesma função. Vou tentar explicar. Quero migrar meus sistemas "grandes" para GUI. Então minha idéia para as telas de entradas de dados, quero criar uma única função para montar a tela.

Bem, decidi criar um BROWSE onde sera montado com 2 colunas como a janela de propriedades do Designer (a da esquerda seria os labels e o da direita os campos para preenchimento). No BROWSE ao teclar ENTER posso editar o valor do campo direto no browse (foi neste caso que citei se tem como colocar uma função de validação neste instante). Quando o campo for grande (mais de 1 linha) eu criei uma funcao para o BROWSE onde se aperto TAB abre um GET para ser preenchido (neste caso é onde preciso redefinir o PICTURE, MAXLENGTH e AUMENTAR/DIMINUIR o tamanho DINAMICAMENTE). O picture e o tamanho voce ja me informou e funcionou ok. Então ficou faltando saber como consigo alterar dinamicamente a propriedade MAXLENGTH (se é que tem essa possibilidade).

Agradeço antecipadamente.

Como alterar o PICTURE dinamicamente?

Enviado: 02 Ago 2012 09:00
por esbasso
oGet:nMaxLength := novo tamnho

Como alterar o PICTURE dinamicamente?

Enviado: 02 Ago 2012 20:41
por ANDRIL
esbasso escreveu:oGet:nMaxLength := novo tamnho
Obrigado, vou testar amanha.

Voce responde que nem o "chico picadinho", por partes, kkkk. Referente se pode ou nao por uma function de validacao na edicao de cada campo do BROWSE voce nao sabe ou nao tem como mesmo. Desculpe a insistencia.
Abraço

Como alterar o PICTURE dinamicamente?

Enviado: 02 Ago 2012 21:49
por esbasso
voce deveria atualizar a tua lib para a versão do SVN
dai sim é possivel responder melhor

Como alterar o PICTURE dinamicamente?

Enviado: 20 Mai 2015 16:08
por andersoncamilo
Reativando esse topico.

Estou iniciando com a hwgui, peguei o programa SCM do Leonardo como exemplo para testar, e estou com o seguinte erro quando executo a função ParsePict:

Error HCUSTOMWINDOW/0 Invalid class member
Called from source\winapi\hcwindow.prg->HEDIT:PARSEPICT(230)
Called from cadastro.prg->MUDA_TEXTO(553)
Called from cadastro.prg->(b)CAD_ASSOCIADO(406)
Called from source\winapi\hdialog.prg->INITMODALDLG(258)
Called from source\winapi\hdialog.prg->(b)(_INITSTATICS00003)(0)
Called from source\winapi\hdialog.prg->HDIALOG:ONEVENT(182)
Called from ->HWG_DLGBOXINDIRECT(0)
Called from source\winapi\hdialog.prg->HDIALOG:ACTIVATE(135)
Called from cadastro.prg->CAD_ASSOCIADO(537)
Called from scm.prg->(b)MAIN(164)
Called from source\winapi\hwindow.prg->ONCOMMAND(574)
Called from source\winapi\hwindow.prg->(b)HMAINWINDOW(256)
Called from source\winapi\hwindow.prg->HMAINWINDOW:ONEVENT(346)
Called from ->HWG_ACTIVATEMAINWINDOW(0)
Called from source\winapi\hwindow.prg->HMAINWINDOW:ACTIVATE(335)
Called from scm.prg->MAIN(370)

HWGUI 2.19 Build 3
Date:20/05/2015
Time:14:57:44

a Linha que chama a função Muda_Texto é está aqui.

ON INIT {||iif(r1=1,Muda_texto(oCNPJ_CPF , "CPF :", oRG_IE , "RG :" ),Muda_texto(oCNPJ_CPF , "CNPJ :", oRG_IE , "INSC :")),.T.}

Estou estou usando o Xharbour 1.2.1 e hwgui 2.19 b3

Código: Selecionar todos

**********************
FUNCTION Cad_Associado
**********************
PRIVATE oCadAss
PRIVATE oFont
PRIVATE oIcon := HIcon():AddResource(1004)
*************VARIAVEIS******************** 
PRIVATE LBLnome, Wnome := "", Onome
PRIVATE LBLend, Wend := "", Oend
PRIVATE LBLbairro, Wbairro := "", Obairro
PRIVATE LBLcidade, Wcidade := "", Ocidade
PRIVATE LBLuf, CBOuf, Wuf := "",aItens:= {"AC","AL","AP","AM","BA","CE","DF","GO","ES","MA","MT","MS","MG","PA","PB","PR","PE","PI","RJ","RN","RS","RO","RR","SP","SC","SE","TO"}
PRIVATE LBLCBnome, CBOnome, WCBnome := "",aItensCBnome := {}
PRIVATE LBLcep, Wcep := "", Ocep
PRIVATE LBLfone, Wfone := "", Ofone
PRIVATE LBLfax, Wfax := "", Ofax
PRIVATE LBLcel, Wcel := "", Ocel
PRIVATE LBLemail, Wemail := "", Omail
PRIVATE wInicio :=.T., wNovo := .F.
PRIVATE LBLcodigo, Wcodigo := "", Ocodigo, LBLmostcodigo   
PRIVATE LBLfunc1, Wfunc1 := "", Ofunc1,aItens1:= {}
PRIVATE LBLfunc2, Wfunc2 := "", Ofunc2,aItens2:= {}
PRIVATE LBLvalor, Wvalor := 0 , Ovalor
PRIVATE LBLvenc, Wvenc := date(), Ovenc
PRIVATE LTIPOJF, WTIPOJF := space(1), OTIPOJF, oRadio1,oRadio2,r1 := 1
PRIVATE LCNPJ_CPF  , LRG_IE     , cPicture
PRIVATE oCNPJ_CPF  , oRG_IE     , oObj1      , oObj2
PRIVATE wCNPJ_CPF   := Space(18)
PRIVATE wCNPJ       := Space(18)
PRIVATE wCPF        := Space(14)
PRIVATE wRG_IE      := Space(14)
PRIVATE wRG         := Space(14)
PRIVATE wIE         := Space(14)

*************VARIAVEIS********************
PARA TIPOCAD,Abre_Dbf

IF TIPOCAD="C"
   IF Abre_Dbf="S"
      Dbcloseall()
      IF Use_Arq("ASSOCI",,.T.,.F.,.F.)=.F.
         Return
      ENDIF

      IF Use_Arq("FUNCAO",,.T.,.F.,.F.)=.F.
         Return
      ENDIF
   ENDIF
ENDIF

SELE FUNCAO
DBGOTOP()
do while !eof()
   vFUNC=FUNCAO
   aadd(aItens1,vFUNC)
   aadd(aItens2,vFUNC)
   dbskip()
Enddo

IF TIPOCAD="C"
   SELE ASSOCI
   DBSETORDER(1)
   DbGoBottom()
   Wcodigo=CODASSOC+1
ELSE
   SELE ASSOCI
   wCodigo = CODASSOC
   DBSETORDER(1)
   DBSEEK(wCodigo)
   IF FOUND()
      IF TRAVAREG()=.F.
         RETURN
      ENDIF
      WCodigo   = CODASSOC
      Wnome     = NOME
      Wend      = ENDE
      Wbairro   = BAIRRO
      Wcidade   = CIDADE
      Wuf       = UF
      Wcep      = CEP
      wTIPOJF   = TIPOJF
      Wcpf      = CPF
      wRG       = RG
      wCNPJ     = CNPJ
      wIE       = IE
      Wfone     = TEL
      Wfax      = FAX
      Wcel      = CEL
      Wemail    = EMAIL
      Wfunc1    = FUNCAO1
      Wfunc2    = FUNCAO2
      Wvalor    = VALOR
      Wvenc     = VENC
   ELSE
      Erroreg()
      RETURN nil
   ENDIF
   IF wTIPOJF="F"
      r1 := 1
      wCNPJ_CPF=wCPF
      wRG_IE=wRG
   else
      r1 := 2
      wCNPJ_CPF=wCNPJ
      wRG_IE=wIE
   endif
ENDIF

PREPARE FONT oFont NAME "Arial" WIDTH 0 HEIGHT -12 WEIGHT 400
INIT DIALOG oCadAss CLIPPER NOEXIT TITLE "Cadastro de Associados";
AT 0,0 SIZE 670,410;
ICON  oIcon ;
FONT oFont ;   
STYLE DS_CENTER + WS_VISIBLE + WS_CAPTION + WS_SYSMENU;
ON INIT  {||iif(r1=1,Muda_texto(oCNPJ_CPF , "CPF :", oRG_IE , "RG :" ),Muda_texto(oCNPJ_CPF , "CNPJ :", oRG_IE , "INSC :")),.T.}

hwg_SetColorinFocus( .t. )
                                                                            
@ 5,5  GROUPBOX grpConfiguracao             CAPTION "Dados do Associado"      SIZE 655,335

****INICO DOS SAYS***
@ 20 ,40   SAY LBLcodigo                     CAPTION "Codigo:"                 SIZE 168,22
@ 20 ,70   SAY LBLnome                       CAPTION "Nome:"                   SIZE 168,22
@ 20 ,100  SAY LBLend                        CAPTION "Endereço:"               SIZE 168,22
@ 400,100  SAY LBLbairro                     CAPTION "Bairro:"                 SIZE 168,22
@ 20 ,130  SAY LBLcidade                     CAPTION "Cidade:"                 SIZE 168,22
@ 300,130  SAY LBLuf                         CAPTION "UF:"                     SIZE 168,22
@ 400,130  SAY LBLcep                        CAPTION "CEP:"                    SIZE 168,22
@ 20 ,160  SAY LCNPJ_CPF                     CAPTION "CPF:"                    SIZE 50 ,22
@ 300,160  SAY LRG_IE                        CAPTION "RG:"                     SIZE 40 ,22
@ 10 ,190  SAY LBLfunc1                      CAPTION "Função 01:"              SIZE 168,22
@ 300,190  SAY LBLfunc2                      CAPTION "Função 02:"              SIZE 168,22
@ 20 ,220  SAY LBLfone                       CAPTION "Fone:"                   SIZE 168,22
@ 210,220  SAY LBLfax                        CAPTION "Fax:"                    SIZE 168,22
@ 390,220  SAY LBLcel                        CAPTION "Celular:"                SIZE 168,22
@ 20 ,250  SAY LBLemail                      CAPTION "Email:"                  SIZE 168,22
@ 20 ,280  SAY LBLvalor                      CAPTION "Valor Mensalidade R$:"   SIZE 168,22
@ 270,280  SAY LBLvenc                       CAPTION "Data de Vencimento:"     SIZE 168,22
****FIM DOS SAYS***

****INCIO DOS GTES***
GET RADIOGROUP r1
@ 150,40 RADIOBUTTON oRadio1 caption "Pessoa Fisica";
SIZE 120, 22;
TOOLTIP "Escolha essa Opção para Pessoa Fisica";
ON CLICK {||Muda_texto(oCNPJ_CPF , "CPF :", oRG_IE , "RG :")}

@ 280,40 RADIOBUTTON oRadio2 caption "Pessoa Jurídica" ;
SIZE 120, 22;
TOOLTIP "Escolha essa Opção para Pessoa Juridica";
ON CLICK {||Muda_texto(oCNPJ_CPF , "CNPJ :", oRG_IE , "INSC :")}
END RADIOGROUP

@ 80,40   GET Ocodigo VAR Wcodigo           PICTURE "999999"  COLOR 255        SIZE 50,22 STYLE WS_DISABLED;
TOOLTIP "Informe o Codigo"

@ 80,70   GET Onome VAR Wnome                                           SIZE 560,22;
MAXLENGTH 50;
STYLE WS_TABSTOP;
TOOLTIP "Informe o Nome do Associado"

@ 80,100  GET Oend VAR Wend                                         SIZE 300,22;
MAXLENGTH 50;
STYLE WS_TABSTOP + ES_AUTOHSCROLL;
TOOLTIP "Informe o Endereço do Associado"

@ 440,100 GET Obairro VAR Wbairro                                  SIZE 200,22;
MAXLENGTH 20;
STYLE WS_TABSTOP + ES_AUTOHSCROLL;
TOOLTIP "Informe o Bairro"

@ 80,130  GET Ocidade VAR Wcidade                                SIZE 200,22;
MAXLENGTH 20;
STYLE WS_TABSTOP + ES_AUTOHSCROLL;
TOOLTIP "Informe a Cidade"

@ 330,130 GET COMBOBOX CBOuf VAR Wuf     ITEMS aItens                      SIZE 50,22 TEXT;
STYLE WS_TABSTOP;
TOOLTIP "Informe a Unidade Federativa"

@ 440,130 GET Ocep VAR Wcep                 PICTURE "@R 99999-999"            SIZE 120,22;
STYLE WS_TABSTOP;
TOOLTIP "Informe o CEP"

@ 80,160  GET oCNPJ_CPF    VAR wCNPJ_CPF      PICTURE cPicture                         SIZE 150,22;
STYLE WS_TABSTOP;
MAXLENGTH 18;
TOOLTIP "Informe o Cpf ou Cnpj"

@ 343,160   GET oRG_IE      VAR wRG_IE                                                SIZE 120,22;
STYLE WS_TABSTOP;
MAXLENGTH 15;
TOOLTIP "Informe o RG ou Inscrição Estadual"

@ 80,190 GET COMBOBOX Ofunc1 VAR Wfunc1 ITEMS aItens1                     SIZE 200,22 TEXT;
STYLE WS_TABSTOP;
TOOLTIP "Informe a Primeira Função"

@ 390,190 GET COMBOBOX Ofunc2 VAR Wfunc2 ITEMS aItens1                     SIZE 200,22 TEXT;
STYLE WS_TABSTOP;
TOOLTIP "Informe a Segunda Função"

@ 80,220  GET Ofone  VAR Wfone              PICTURE "@R (99)9999-9999"        SIZE 120,22;
STYLE WS_TABSTOP;
TOOLTIP "Informe o Telefone"

@ 250,220 GET Ofax   VAR Wfax               PICTURE "@R (99)9999-9999"        SIZE 120,22;
STYLE WS_TABSTOP;
TOOLTIP "Informe o Telefone de Fax"

@ 440,220 GET Ocel   VAR Wcel               PICTURE "@R (99)9999-9999"        SIZE 120,22;
STYLE WS_TABSTOP;
TOOLTIP "Informe o Telefone Celular"

@ 80,250  GET Oemail VAR Wemail                                    SIZE 560,22;
MAXLENGTH 50;
STYLE WS_TABSTOP + ES_AUTOHSCROLL;
TOOLTIP "Informe o Email"

@ 150,280 GET Ovalor VAR Wvalor             PICTURE "@E 999,999,999.99"       SIZE 100,22;
STYLE WS_TABSTOP;
TOOLTIP "Informe o Valor da Mensalidade"

@ 390,280 GET DATEPICKER Ovenc  VAR Wvenc  SIZE 100,22;
STYLE WS_TABSTOP;
TOOLTIP "Informe a Data de Vencimento"
****FIM DOS GTES***

*******Buttons****
@ 320,350  BUTTON btnOk CAPTION "&Salvar" SIZE 100, 28 ;
TOOLTIP "Salvar Registro";
ON CLICK {|| Grava_Assoc() };
STYLE WS_TABSTOP

@ 430,350  BUTTON "&Limpar" SIZE 100, 28 ;
TOOLTIP "Limpar Campos";
ON CLICK {|| limpa_Var2() };
STYLE WS_TABSTOP  

@ 540,350  BUTTON "&Fechar" SIZE 100, 28 ;
TOOLTIP "Sair do Modulo de Cadastro";
ON CLICK {|| oCadAss:Close() };
STYLE WS_TABSTOP

hwg_WriteStatus( oTelaPrincipal,3,"Cadastro de Assiados" )//BARRA DE STATUS
ACTIVATE DIALOG oCadAss
hwg_WriteStatus( oTelaPrincipal,3,"Area de Trabalho" )
     
RETURN nil

****************************************************
Function Muda_texto(oObj1, cTexto1, oObj2, cTexto2 )
****************************************************
LCNPJ_CPF:settext(hb_oemtoansi(cTexto1))
LRG_IE   :settext(hb_oemtoansi(cTexto2))

if cTexto1 = "CNPJ :"
   cPicture ="@R 99.999.999/9999-99"
else
   cPicture ="@R 999.999.999-99"
endif
oObj1:ParsePict(oObj1,cPicture,oObj1:title)
oobj1:refresh()
Return .T.

Se puderem me ajudar agradeço.

Anderson Camilo

Como alterar o PICTURE dinamicamente?

Enviado: 22 Mai 2015 23:26
por Wanderlei
Oi Anderson,
Atualmente estou usando 2.17 e faço assim:

@ 26,100 GET COMBOBOX oGet[2] VAR aGet[2] ;
ITEMS {"COO","Data"} ;
SIZE 187,24 ;
ON CHANGE {|| if( aGet[2]==2,;
( oGet[3]:ParsePict('@E 99/99/9999',oGet[3]:setGet(date())), oGet[3]:Refresh(), oGet[4]:ParsePict('@E 99/99/9999',oGet[4]:setGet(date())), oGet[4]:Refresh() ),;
( oGet[3]:setGet(space(6)), oGet[3]:Refresh(), oGet[3]:ParsePict('999999',aGet[3]), oGet[3]:setText(space(6)), oGet[3]:Refresh(), oGet[4]:setGet(space(6)), oGet[4]:Refresh(), oGet[4]:ParsePict('999999',aGet[4]), oGet[4]:setText(space(6)), oGet[4]:Refresh() ) ) } ;
TOOLTIP 'Selecione o tipo de intervalo'

com isso mudo a mascara do get em tempo de execução.

o oGet[3] e oGet[4] são os objetos dos get.

Como alterar o PICTURE dinamicamente?

Enviado: 23 Mai 2015 09:57
por Itamar M. Lins Jr.
Neste caso, só não entendo para quê isso.
É uma forma de programar bem diferente.

Ao, Anderson Camilo.
Se quer reportar um problema, favor criar um exemplo auto executável, bem simples o mais compacto possível,só com o essencial, para que todos possam testar.
Da forma que reportou não tem como testar aqui, tem muita coisa que não tem nada a ver com o problema.

Saudações,
Itamar M. Lins Jr.

Como alterar o PICTURE dinamicamente?

Enviado: 23 Mai 2015 10:13
por Wanderlei
Oi Itamar,
Como vc faz para mudar a mascara do get quando o combobox for carregado?