Página 1 de 1

Modo Gráfico - Tela de Cadastro

Enviado: 29 Jun 2015 23:42
por microvolution
Pessoal, já havia migrado de clipper (16 bit) p/ harbour (32 bits) usando a HMG 3.0.XX em MODO CONSOLE.
Então, minhas janelas e telas ainda estão em MODO CONSOLE.

Agora estou precisando entender melhor esse novo jeito de programar. Então olhei e testei a maioria dos exemplos da pasta SAMPLES mas não vi nenhum um exemplo que mostra uma tela de CADASTROS que abre um TBROWSE e que grava os registros no banco de dados principal e nos outros bancos de dados relacionais. Eu uso DBFNTX, alguém sabe como fazer?
Abaixo posto parte do meu código onde as telas são feitas e os @SAY @GET são apresentados.
Se alguém tiver opinião gostaria que me ajudasse:

Código: Selecionar todos

TELA_ENTRADA(01)
TRATA_CHAVE()
TRATA_DADOS(01)

Código: Selecionar todos

static function TELA_ENTRADA (N_TELA)
     @ 01,00 clear to 22,maxcol ()
     do case
     case N_TELA = 01
          @ 01,00 say 'ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿'
          @ 02,00 say '³N£mero da Venda           C¢digo                                              ³'
          @ 03,00 say '³                                                                              ³'
          @ 04,00 say '³C¢digo do Vendedor                            Operador                        ³'
          @ 05,00 say 'ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ'
          @ 06,00 say 'ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿'
          @ 07,00 say '³                                                                              ³'
          @ 08,00 say '³C¢digo Dados Ve¡culo                                                          ³'
          @ 09,00 say '³                                                                              ³'
          @ 10,00 say '³                                                                              ³'
          @ 11,00 say '³Data Entrada              Hora Entrada                      KM Entrada         '
          @ 12,00 say '³                                                                              ³'
          @ 13,00 say '³Observa‡Æo                                                                    ³'
          @ 14,00 say '³                                                                              ³'
          @ 15,00 say '³                                                            (%) Desconto       '
          @ 16,00 say '³                                                                              ³'
          @ 17,00 say '³                                                                              ³'
          @ 18,00 say '³                                                                              ³'
          @ 19,00 say '³                                                                              ³'
          @ 20,00 say 'ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ'
          @ 21,00 say '                                                                                '
     case N_TELA = 02
          @ 01,00 say 'ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿'
          @ 02,00 say '³                                                                         02/02³'
          @ 03,00 say '³                                                                     Status    '
          @ 04,00 say '³Data de Sa¡da               Hora de Sa¡da                     KM Sa¡da         '
          @ 05,00 say 'ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙ'
          @ 06,00 say 'ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿'
          @ 07,00 say '³                                                                              ³'
          @ 08,00 say '³                                                                              ³'
          @ 09,00 say '³                                                                              ³'
          @ 10,00 say '³                                                                              ³'
          @ 11,00 say '³                                                                              ³'
          @ 12,00 say '³                                                                              ³'
          @ 13,00 say '³                                                                              ³'
          @ 14,00 say '³                                                                              ³'
          @ 15,00 say '³                                                                              ³'
          @ 16,00 say '³                                                                              ³'
          @ 17,00 say '³                                                                              ³'
          @ 18,00 say '³                                                                              ³'
          @ 19,00 say '³                                                                              ³'
          @ 20,00 say 'ÀVlr. das Mercadorias            ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄDesconto            '
          @ 21,00 say ' Vlr. dos Servi‡os                              Valor Total da Venda            '
     endcase
return

Código: Selecionar todos

static function TRATA_CHAVE ()
     @ lNU_VENDA,cNU_VENDA   get mNU_VENDA  picture pNU_VENDA  valid fNU_VENDA  ()
return

Código: Selecionar todos

static function TRATA_DADOS (N_TELA)
     local ARQUIVO := select ()
	     do case
	     case N_TELA = 01
	          @ lNU_VENDA,cNU_VENDA   + 1 say mNU_VENDA  picture pNU_VENDA
         	 @ lCDCLIENTE,cCDCLIENTE get mCDCLIENTE picture pCDCLIENTE valid fCDCLIENTE ();
               when .not. EXISTE_REG
             select ('DCI10000')
	          if EXISTE (str (mCDCLIENTE,04))
        	       @ lNMCLIENTE,cNMCLIENTE say transform (DCI10000->NMCLIENTE,pNMCLIENTE)
	          endif
             select ('DCI10000')
	          if EXISTE (str (mCDCLIENTE,04))
        	       @ lEDLOGRADO,cEDLOGRADO say transform (DCI10000->EDLOGRADO,pEDLOGRADO)
	          endif
        	    select ('DCI10000')
	          if EXISTE (str (mCDCLIENTE,04))
        	       @ lNUCASA,cNUCASA       say transform (DCI10000->NUCASA,pNUCASA)
	          endif
        	    select ('DCI10000')
	          if EXISTE (str (mCDCLIENTE,04))
        	       @ lEDBAIRRO,cEDBAIRRO   say padr (DCI10000->EDBAIRRO,15) picture pEDBAIRRO
	          endif
        	    select ('DCI10000')
	          if EXISTE (str (mCDCLIENTE,04))
        	       @ lNUFONE,cNUFONE       say transform (DCI10000->NUFONE,pNUFONE)
	          endif
        	    select (ARQUIVO)
	          @ lCD_VENDED,cCD_VENDED get mCD_VENDED picture pCD_VENDED valid fCD_VENDED ();
	            when .not. EXISTE_REG .and. mDS_STATUS>01
	          select ('DCI10018')
	          if EXISTE (str (mCD_VENDED,02))
	               @ lNM_VENDED,cNM_VENDED say transform (DCI10018->NM_VENDED,pNM_VENDED)
        	    endif
	          select (ARQUIVO)
	          @ lCD_PREPAR,cCD_PREPAR get mCD_PREPAR picture pCD_PREPAR valid fCD_PREPAR ();
	            when .not. EXISTE_REG .and. mDS_STATUS>01
	          select ('DCI10038')
	          if EXISTE (str (mCD_PREPAR,02))
	               @ lNM_PREPAR,cNM_PREPAR say transform (DCI10038->NM_PREPAR,pNM_PREPAR)
        	    endif
	          select (ARQUIVO)
	          @ lCD_PINTOR,cCD_PINTOR get mCD_PINTOR picture pCD_PINTOR valid fCD_PINTOR ();
	            when .not. EXISTE_REG .and. mDS_STATUS>01
	          select ('DCI10039')
	          if EXISTE (str (mCD_PINTOR,02))
	               @ lNM_PINTOR,cNM_PINTOR say transform (DCI10039->NM_PINTOR,pNM_PINTOR)
        	    endif
	          select (ARQUIVO)
	          @ lCD_MONTAD,cCD_MONTAD get mCD_MONTAD picture pCD_MONTAD valid fCD_MONTAD ();
	            when .not. EXISTE_REG .and. mDS_STATUS>01
	          select ('DCI10040')
	          if EXISTE (str (mCD_MONTAD,02))
	               @ lNM_MONTAD,cNM_MONTAD say transform (DCI10040->NM_MONTAD,pNM_MONTAD)
        	    endif
	          select (ARQUIVO)
	          @ lCD_POLIDO,cCD_POLIDO get mCD_POLIDO picture pCD_POLIDO valid fCD_POLIDO ();
	            when .not. EXISTE_REG .and. mDS_STATUS>01
	          select ('DCI10041')
	          if EXISTE (str (mCD_POLIDO,02))
	               @ lNM_POLIDO,cNM_POLIDO say transform (DCI10041->NM_POLIDO,pNM_POLIDO)
        	    endif
	          select (ARQUIVO)
        	    select ('DCI10023')
	          if EXISTE (str (mCDOPERADO,02))
        	       @ lNMOPERADO,cNMOPERADO say transform (DCI10023->NMOPERADO,pNMOPERADO)
	          endif
        	    select (ARQUIVO)
	          @ lCD_DADOSV,cCD_DADOSV get mCD_DADOSV picture pCD_DADOSV valid fCD_DADOSV ();
               when .not. EXISTE_REG
	          select ('DCI10030')
        	    if EXISTE (str (mCD_DADOSV,04))
	               @ lDS_MARCA,cDS_MARCA   say transform (DCI10030->DS_MARCA,pDS_MARCA)
        	  endif
	          select ('DCI10030')
        	  if EXISTE (str (mCD_DADOSV,04))
	               @ lDS_MODELO,cDS_MODELO say transform (DCI10030->DS_MODELO,pDS_MODELO)
        	  endif
	          select ('DCI10031')
        	  if EXISTE (str (mCDCLIENTE,04) + str (mCD_DADOSV,04))
	               @ lDS_PLACA,cDS_PLACA   say transform (DCI10031->DS_PLACA,pDS_PLACA)
        	  endif
	          select ('DCI10031')
        	  if EXISTE (str (mCDCLIENTE,04) + str (mCD_DADOSV,04))
	               @ lDS_COMBUS,cDS_COMBUS say transform (DCI10031->DS_COMBUS,pDS_COMBUS)
        	  endif
	          select ('DCI10031')
        	  if EXISTE (str (mCDCLIENTE,04) + str (mCD_DADOSV,04))
	               @ lDS_EXTINT,cDS_EXTINT say transform (DCI10031->DS_EXTINT,pDS_EXTINT)
	          endif
	          select ('DCI10031')
	          if EXISTE (str (mCDCLIENTE,04) + str (mCD_DADOSV,04))
	               @ lDS_ANOFAB,cDS_ANOFAB say transform (DCI10031->DS_ANOFAB,pDS_ANOFAB)
	          endif
        	  select ('DCI10031')
	          if EXISTE (str (mCDCLIENTE,04) + str (mCD_DADOSV,04))
        	       @ lDS_ANOMOD,cDS_ANOMOD say transform (DCI10031->DS_ANOMOD,pDS_ANOMOD)
	          endif
        	  select ('DCI10031')
	          if EXISTE (str (mCDCLIENTE,04) + str (mCD_DADOSV,04))
        	       @ lDSCOMPVEI,cDSCOMPVEI say padr (DCI10031->DSCOMPVEI,57) picture pDSCOMPVEI
	          endif
        	  select (ARQUIVO)
	          @ lDT_ENTV,cDT_ENTV     get mDT_ENTV   picture pDT_ENTV   valid fDT_ENTV   ();
	       when .not. EXISTE_REG
        	  @ lHR_ENTV,cHR_ENTV     get mHR_ENTV   picture pHR_ENTV   valid fHR_ENTV   ();
	       when .not. EXISTE_REG
        	  @ lNU_KM_ENT,cNU_KM_ENT get mNU_KM_ENT picture pNU_KM_ENT valid fNU_KM_ENT ();
	       when .not. EXISTE_REG
        	  @ lDS_OBSERV,cDS_OBSERV get mDS_OBSERV picture '@KXS57'   valid fDS_OBSERV ()
	          @ lVR_PERDES,cVR_PERDES get mVR_PERDES picture pVR_PERDES when mDS_STATUS=04 .or. mDS_STATUS=06 .or. mDS_STATUS=07 valid fVR_PERDES ()
	     case N_TELA = 02
        	  @ lDS_STATUS,cDS_STATUS get mDS_STATUS picture pDS_STATUS valid fDS_STATUS ()
	          @ lDT_SAIV,cDT_SAIV     get mDT_SAIV   picture pDT_SAIV   when mDS_STATUS=09 .or. mDS_STATUS=10 valid fDT_SAIV   ()
        	  @ lHR_SAIV,cHR_SAIV     get mHR_SAIV   picture pHR_SAIV   when mDS_STATUS=09 .or. mDS_STATUS=10 valid fHR_SAIV   ()
	          @ lNU_KM_SAI,cNU_KM_SAI get mNU_KM_SAI picture pNU_KM_SAI when mDS_STATUS=09 .or. mDS_STATUS=10 valid fNU_KM_SAI ()
	     endcase

	     	if N_TELA = 02
			@ lVT_VENDA,cVT_VENDA say mVT_VENDA picture pVT_VENDA
		endif

		if mDS_STATUS = 06
				if (EXISTE_REG .or. lastkey () <> K_UP)
		        	  select ('DCI10002')
			          mREG_ANT := recno ()
		        	  set order to 4
			          set softseek on
	        		  seek 'A' + str (mCDCLIENTE,04)
			          set softseek off
		        	  mVR_TOTDEB := mVT_VENDA
			          do while CD_SITTIT = 'A' .and. CDCLIENTE = mCDCLIENTE .and. .not. eof ()
	        		       mVR_TOTDEB += VRTITUTLO
			               skip
		        	  enddo
			          set order to 1
	        		  go mREG_ANT
			          select (ARQUIVO)
		        	  mCREDITO := ltrim (transform (DCI10000->VR_LIMCRE,pVR_LIMCRE))
			          mDEBITO  := ltrim (transform (mVR_TOTDEB,pVR_LIMCRE))
	
			               MENSAGEM ('Limite de cr‚dito foi ultrapassado. Cr‚dito &mCREDITO / D‚bito &mDEBITO')
			               return (.f.)
	        		  endif
			          set key K_F6 to 
			          mQT_PARC := 0
			          	if mVT_VENDA > 0 .and. mCD_FORPAG <> 'A' .and. (lastkey () = K_ENTER .or. lastkey () = 24)
			               	SALVA_CP := savescreen (0,0,maxrow (),maxcol ())
				               CAD_CONTAS_RECEBER () 
				       	endif
			     	endif
     		endif
return
Bom, esse exemplo acima é apenas parte do meu iceberg se alguém souber como melhor fazer os novos @ LABEL/TEXTBOX ficaremos gratos pelas informações.

vlw!
Jesus está voltando!

MODO GRÁFICO - TELA DE CADASTRO

Enviado: 30 Jun 2015 08:20
por Pablo César
Veja com mais atenção os SAMPLES.

Tem vários em: C:\hmg.3.4.0\SAMPLES\Miscellaneous\EDIT\..

MODO GRÁFICO - TELA DE CADASTRO

Enviado: 30 Jun 2015 10:13
por microvolution
ah! sim!
não havia olhado na versão 3.4.0, pois em outro tópico específico sobre ela, postei que não consigo compilar com essa versão ainda pois, o meu aplicativo aparentemente compila (demora mais ou menos o mesmo da versão 3.0.46 para se compilar) mas ao final apenas exclui o arquivo compilado anteriormente e não se gera nada e não apresenta aquele arquivo error.txt.

Então, como consigo compilar apenas nas versões 3.0.35 e 3.0.46 olhei apenas nessas pastas e também na pasta samples de minigui\samples.

Bom, mesmo assim obrigado mais uma vez. Mesmo que a 3.4.0. não consegui dar uma compila, vou agora mesmo, dar uma olhada nessa pasta que V.Sa. me sugeriu e tentar compilar algum desses exemplos.

Ah! ontem mesmo tentei alguma coisa com os @LABEL, mas, uma coisa não pude deixar de observar:
- no @say, era muito claro pois a gente lidava com uma quantidade específica de 25 linhas x 80 colunas; e agora nesse novo formato a gente trabalha o tipo de fonte, tamanho e é em pixels as localizações. Então, achei muito complexo, pois a gente tem que fazer um modelo no "chutômetro" levar 3 minutos para compilar e ver que o resultado não ficou o esperado e ir fazendo as alterações "lentamente", é isso mesmo, percebi que é um processo muito lento.

V.Sa. ou alguns dos demais colegas nobres professores tem algum modelo que a gente consiga um formulário que se adeque às seguintes condições:
- tamanho do formulário automático (não importa de o usuário esteja em 800x600, 1024x780, 1980x1024, etc, ou até mesmo num tamanho antigo de 640x400) que caibam todos os LABELs e EDITBOXes;
- posicionamento dos EDITBOXes e LABELs e distância em pixels entre um e outro. Explico melhor no exemplo abaixo (inclusive do teste que estou fazendo a respeito do meu exemplo em CONSOLE que postei àcima):

Código: Selecionar todos

 DEFINE WINDOW TELA_ENTRADA ;
         AT 100,100 ;
         WIDTH 800 HEIGHT 600 ;
         TITLE 'SiCCoSV - PCI10048 - ORDENS DE SERVIÇO VEICULAR - LANTERNAGEM' ;
         FONT 'Arial' SIZE 12 ;
         CHILD // já tenho um formulário MAIN
      
            @ 30,50 LABEL NumOSV VALUE 'Número da OSV' FONT 'Arial' SIZE 12  CENTERALIGN
            @ 50,50 LABEL Codigo VALUE 'Código Cliente' FONT 'Arial' SIZE 12  CENTERALIGN
            @ 70,50 LABEL Lanterneiro VALUE 'Lanterneiro' FONT 'Arial' SIZE 12  CENTERALIGN
            @ 70,300 LABEL Operador VALUE 'Operador :' FONT 'Arial' SIZE 12  CENTERALIGN
            @ 90,50 LABEL Preparador VALUE 'Preparador' FONT 'Arial' SIZE 12  CENTERALIGN
            @ 90,300 LABEL Montador VALUE 'Montador' FONT 'Arial' SIZE 12  CENTERALIGN
            @ 110,50 LABEL Polidor VALUE 'Polidor' FONT 'Arial' SIZE 12  CENTERALIGN

            @ 110,50 LABEL Veiculo VALUE 'Código Dados do Veículo' FONT 'Arial' SIZE 12  CENTERALIGN

            @ 170,50 LABEL DataEnt VALUE 'Data Entrada' FONT 'Arial' SIZE 12  CENTERALIGN
            @ 170,300 LABEL HoraEnt VALUE 'Hora Entrada' FONT 'Arial' SIZE 12  CENTERALIGN
            @ 170,500 LABEL KMEnt VALUE 'KM Entrada' FONT 'Arial' SIZE 12  CENTERALIGN
            @ 190,50 LABEL Problemas VALUE 'Defeitos a Consertar' FONT 'Arial' SIZE 12  CENTERALIGN
            @ 210,50 LABEL DataSai VALUE 'Data Saída' FONT 'Arial' SIZE 12  CENTERALIGN
            @ 210,300 LABEL HoraSai VALUE 'Hora Saída' FONT 'Arial' SIZE 12  CENTERALIGN
            @ 210,500 LABEL KMSai VALUE 'KM Saída' FONT 'Arial' SIZE 12  CENTERALIGN
            @ 230,50 LABEL CodigoP VALUE 'Código' FONT 'Arial' SIZE 12  CENTERALIGN
            @ 230,100 LABEL DescricaoP VALUE 'Descrição do Produto' FONT 'Arial' SIZE 12  CENTERALIGN
            @ 230,500 LABEL QteP VALUE 'Qte' FONT 'Arial' SIZE 12  CENTERALIGN
            @ 230,600 LABEL VrUnitP VALUE 'Vr.Unit.' FONT 'Arial' SIZE 12  CENTERALIGN
            @ 230,700 LABEL VrTotP VALUE 'Vr.Tot.' FONT 'Arial' SIZE 12  CENTERALIGN

            @ 350,50 LABEL CodigoS VALUE 'Código' FONT 'Arial' SIZE 12  CENTERALIGN
            @ 350,100 LABEL DescricaoS VALUE 'Descrição do Serviço' FONT 'Arial' SIZE 12  CENTERALIGN
            @ 350,500 LABEL QteS VALUE 'Qte' FONT 'Arial' SIZE 12  CENTERALIGN
            @ 350,600 LABEL VrUnitS VALUE 'Vr.Unit.' FONT 'Arial' SIZE 12  CENTERALIGN
            @ 350,700 LABEL VrTotS VALUE 'Vr.Tot.' FONT 'Arial' SIZE 12  CENTERALIGN
            @ 490,50 LABEL Desconto VALUE '(%) Desconto' FONT 'Arial' SIZE 12  CENTERALIGN
            @ 490,100 LABEL VrTotPr VALUE 'Vr.Mercadorias' FONT 'Arial' SIZE 12  CENTERALIGN
            @ 490,200 LABEL VrTotSr VALUE 'Vr.Serviços' FONT 'Arial' SIZE 12  CENTERALIGN
            @ 510,50 LABEL VrDesc VALUE 'Vr.Desconto' FONT 'Arial' SIZE 12  CENTERALIGN
            @ 510,200 LABEL VrTotB VALUE 'Vr.Total Bruto' FONT 'Arial' SIZE 12  CENTERALIGN
            @ 510,400 LABEL VrTotL VALUE 'Vr.Total Líquido' FONT 'Arial' SIZE 12  CENTERALIGN

            @ 550, 500 BUTTON ButtonOk CAPTION "&Salvar" ACTION ThisWindow.Release WIDTH 78 HEIGHT 26
            @ 550, 600 BUTTON ButtonCancel CAPTION "&Cancelar" ACTION ThisWindow.Release WIDTH 78 HEIGHT 26
      END WINDOW
      CENTER WINDOW TELA_ENTRADA
      ACTIVATE WINDOW TELA_ENTRADA
RETURN
Bom o resultado não ficou do jeito esperado e mesmo em tamanho 12 ficou muito grande. :))
Espero mais uma vez pela ajuda dos companheiros deste tão conceituado fórum.
Vlw! Jesus em breve virá. Leiam Atos 17:30-31.

Modo Gráfico - Tela de Cadastro

Enviado: 30 Jun 2015 17:18
por Pablo César
microvolution escreveu:Então, como consigo compilar apenas nas versões 3.0.35 e 3.0.46 olhei apenas nessas pastas
Verifique outra vez.

C:\hmg.3.0.35\SAMPLES\EDIT.1
C:\hmg.3.0.35\SAMPLES\EDIT.2
C:\hmg.3.0.35\SAMPLES\EDIT.EXTENDED

e

C:\hmg.3.0.46\SAMPLES\EDIT.1
C:\hmg.3.0.46\SAMPLES\EDIT.2
C:\hmg.3.0.46\SAMPLES\EDIT.EXTENDED

Modo Gráfico - Tela de Cadastro Avançada com Banco de Dados.

Enviado: 01 Jul 2015 11:13
por microvolution
ah! sim prezado PC, obrigado por me responder tão prontamente novamente!

Bom, mas, infelizmente eu já havia olhado em todas as pastas da HMG 3.0.35 e 46 e não havia gostado desses exemplos, que por coincidência o Roberto Lopez os manteve na 3.4.0.
Achei-os assim - com todo o respeito, "meia boca". V.Sa. há de concordar comigo que precisamos de algo melhor e isso é possível.
Alguém provavelmente já tenha construído um exemplo mais atrativo e intuitivo para que a gente não fique tanto para trás nesse mercado globalizado, competitivo e, principalmente super lotado de profissionais já bem mais capacitados que eu e tantos outros que ficaram atrasados com o velho e bom e fiel clipper 16 bits.

Enfim, não só eu, mas, todos queremos algo melhor... Se ninguém puder explanar um exemplo ou exemplos melhores, com certeza, se eu encontrar (pois estou pesquisando em outros fóruns) postarei aqui para enriquecer ainda mais este tão conceituado fórum PCTOLEDO.
Abraços!
Deus (SENHOR, JESUS, JEOVÁ, TODO-PODEROSO, PRÍNCIPE DA PAZ, PAI DA ETERNIDADE, FILHO DO HOMEM, O PRIMEIRO, O ÚLTIMO, O PRINCÍPIO, O FIM) é o Único Criador de tudo, de todas as coisas, do Universo e tudo que nele há, visíveis e invisíveis!

Modo Gráfico - Tela de Cadastro

Enviado: 01 Jul 2015 14:24
por Pablo César
microvolution escreveu:Achei-os assim - com todo o respeito, "meia boca".
Você poderia ser específico, argumentar o que não gostou ?
Os exemplos não funcionam ?
São muito simples ?
É pobre o resultado ?
Falta explicação nos exemplos ?
microvolution escreveu:Bom, mas, infelizmente eu já havia olhado em todas as pastas da HMG 3.0.35 e 46 e não havia gostado desses exemplos, que por coincidência o Roberto Lopez os manteve na 3.4.0.
HMG é open source. Você sabe o que isso significa ?

Roberto Lopez foi o criador e uns dos primeiros a reconciliar o mundo Clipper com o mundo gráfico que é modo totalmente diferente de programar. Mas pensar que ele é o único responsável por as todas atualizações, eu acho que você se engana, claro que o trabalho dele não parou. Sim evolui de acordo com a capacidade, boa vontade de cada um da comunidade sobre tudo desprendimento para disponibilizar seu tempo e códigos dos contribuidores. Nada vem de graça, só o ar que respiramos e olha lá... tudo é construído sem cobrar nada em troca.
microvolution escreveu: V.Sa. há de concordar comigo que precisamos de algo melhor e isso é possível.
Não gosto do tratamento que você utiliza comigo e nem com outros. Desculpe mas pensei que tudo fosse passageiro, mas vejo que talvez você queira utilizar esses axiônimos para ser um tanto formal.
No Brasil antigamente utilizava-se muito essa forma de tratamento: Vossa Senhoria, mas era a época colonial, nós temos que ser ágeis, diretos e como sempre foi e deve ser: cordiais e respeitosos.

E respondendo a sua pergunta: NÃO. Eu não concordo contigo no contexto que você citou. Só apenas e unicamente concordo é que "devemos" (inclui você, eu e todos) elaborar algo melhor, mas isso: SEMPRE !

É muito fácil ficar criticando mas é mais difícil aceitar sem argumentação.

Lamento ouvir que não tenha gostado dos exemplos, pois na minha opinião, são simples e variados. Foi através dos SAMPLES que eu pude abrir a minha mente e aprender a programar em GUI. E não levei muito tempo, apenas compilei, observei, alterei compilei e voltei a observar, tudo sem muita dificuldade, pelo contrário.

Você já leu o hmgdoc ? Procurou em ler o DOC da nova versão ?

Eu quando busco algo, procuro a ultima versão de primeira e tento seguir sempre a versão mais atualizada. pesar de que eu tenho recomendado a versão 3.0.35 mas isso por questão de migração Clipper para Harbour. Agora, convenhamos que sempre a ultima versão é mais completa. Erros, todas as versão podem conter, o importante é participar e ser útil nas contribuições e para comunidade em si. Assim iremos conseguir uma ferramenta mais adequada e completa.

Falando de ser útil (desculpe mas vou dizer). As mensagens de religião, quando são utilizado em excesso, incomodam-me. Porque eu vejo que este deveria ser uma comunidade para debatimento técnico e não de religião alguma. Seria mas saudável não ficar lendo tanta baboseiras... não acha ?

Modo Gráfico - Tela de Cadastro

Enviado: 01 Jul 2015 18:49
por bjbernal
microvolution escreveu:Alguém provavelmente já tenha construído um exemplo mais atrativo e intuitivo para que a gente não fique tanto para trás nesse mercado globalizado, competitivo e, principalmente super lotado de profissionais já bem mais capacitados que eu e tantos outros que ficaram atrasados com o velho e bom e fiel clipper 16 bits.
Amigo, o Pablo Cesar tem razão... Olha, vc precisa reconhecer humildemente que enquanto vc não aprender a programar no modo gráfico, É VOCÊ, e não a ferramenta, que é incapaz de fazer algo ATRATIVO, considere que vc terá que aprender a trabalhar com gerenciadores de banco de dados, SQL, pois, me estranha observar que vc ainda use DBF já que quer COMPETIR ! E quanto ao ATRATIVO, cuidado, pois telas muito elaboradas acaba tendo problemas de performance, melhor do que ser ATRATIVO é ser FUNCIONAL apresentando os resultados que se esperam !
Porque vc não usa a IDE para desenhar suas janelas ou forms ? Se vc insistir em usar o velho método @ y,x say... no modo gráfico vai sofrer muito mesmo !
E lembrando, a solução DESKTOP já está retrô, agora estamos nos esforçando para desenvolver soluções ONLINE, seje humilde, não é o MINIGUI o problema e vc ainda terá que aprender a desenvolver soluções ONLINE e não vai de cara querer uma ferramenta milagrosa que faça aquilo que só vc com esforço terá que fazer !

Modo Gráfico - Tela de Cadastro

Enviado: 02 Jul 2015 10:44
por microvolution
Pablo César escreveu: São muito simples ?
É pobre o resultado ?
Falta explicação nos exemplos ?
Bom dia!
Vi recentemente um programa numa certa loja e lá é feito em harbour HMG. O visual da tela de cadastro em geral é nada simples. É muito interativa. O que eu quis dizer que os exemplos não possuem algo avançado, parecem um DBU mais avançado editando diretamente nos arquivos. No caso dos LABEL/EDITBOX/GRID.


Pablo César escreveu:Nada vem de graça, só o ar que respiramos e olha lá... tudo é construído sem cobrar nada em troca.
Concordo em parte... pois aqui nesse fórum não paguei e não tem pagado nada e tenho sido muito enriquecido com as informações valiosíssimas para mim e para todos do fórum e até mesmo alguém que não faça parte dele tem sido muito abençoado sem nada a pagar!
Aliás, V.Sa., ou melhor, vc e os demais mantenedores tem sido quem bancam a hospedagem e as devidas manutenções desse local e na minha opinião são os primeiros (na maioria das vezes) a responderem às indagações de quem quer que seja.
Pablo César escreveu:No Brasil antigamente utilizava-se muito essa forma de tratamento: Vossa Senhoria, mas era a época colonial, nós temos que ser ágeis, diretos e como sempre foi e deve ser: cordiais e respeitosos.
Desculpa-me, acho que está confundindo as coisas. Pela educação que recebi de meus pais que ainda estão vivos (78 anos) aprendi e estou repassando a meu unigênito de 4 anos a respeitar não só os mais velhos, mas, também àqueles mesmo sendo de igual idade ou mais novos a chamá-los pelo pronome de tratamento Sr(a). A exemplo várias vezes ao dia peço a famosa "bênção" a meus pais. Se saio , se volto, ao amanhecer ao dormir, etc... Percebo que hoje em dia (século XXI) as pessoas se acham tão bem que vivem em depressão, pois perderam esses "simplesses valores". Hoje a família não é mais pai, mãe, filho, filha e, sim outra coisa totalmente diferente da natureza. Quanto ao "V.Sa.", acho que está enganado também, pois, será que só os juízes, políticos, advogados, delegados é quem merecem respeito? pois até hoje se usam "V.Sa./Exmo. Exa. Vossa" nos documentos, processos, petições, memorandos, etc... e por que não podemos nos dirigir com o devido respeito à você, o qual considero superior à mim e, desde que me cadastrei nesse fórum acho que não tenho faltado com o devido respeito, educação, etc...
Bom, já que não quer, "é livre a manifestação do pensamento... art.5º CFB/1988". Você será vc, apesar de não concordar, mas, respeito o devido pronome que vc quer, ou, já que lembrou do período colonial, lá não se usava V.Sa. e sim, V.Mercê, Vós Uncê, etc...
Pablo César escreveu:Lamento ouvir que não tenha gostado dos exemplos, pois na minha opinião, são simples e variados. Foi através dos SAMPLES que eu pude abrir a minha mente e aprender a programar em GUI. E não levei muito tempo, apenas compilei, observei, alterei compilei e voltei a observar, tudo sem muita dificuldade, pelo contrário.
Não quis dizer isso tudo que vc entendeu, mas, me desculpe, não era essa a intenção. A intenção real era despertar o que vc escreveu "não levei muito tempo...". Então, não quero aqui ser um preguiçoso e querer tudo prontinho, não é isso, só que na minha mente como tem apenas 6 meses que consegui migrar de clipper p/harbour eu ainda luto contra o tempo e contra um espaço num mercado que já está mais de 80% lotado de profissionais de ponta que eu nem me acho digno de chegar aos pés deles, incluindo vc, Itamar, Eolo, Toledo e demais companheiros ou não desse fórum.
Pablo César escreveu:Você já leu o hmgdoc ? Procurou em ler o DOC da nova versão ?
Infelizmente vou ser mais uma vez honesto. NÃO. Nem sabia que existia, mas, vou procurar encontrá-lo onde quer que esteja para lê-lo. Obrigado!
Pablo César escreveu:As mensagens de religião, quando são utilizado em excesso, incomodam-me.(...) não acha ?
Bom, com todo o respeito à sua crença (ateísmo, catolicismo, cristianismo, umbandismo, adventismo, budismo, espiritismo, judaísmo, islã, clã, etc, etc, ou até mesmo atoísmo, etc) não discuto ou arrazoo nenhuma delas, a resposta para essa questão é bem simples: Tiago 1:27 "A religião pura e imaculada para com Deus, o Pai, é esta: Visitar os órfãos e as viúvas nas suas tribulações, e guardar-se da corrupção do mundo."

Há 8 dias atrás morreu um cantor famoso e seu pai disse "Deus não existe!". Sei que todos somos falhos, imperfeitos e com ele foi num momento de muita dor (a perda de um filho) soltou isso, talvez até sem pensar...
Mas, isso foi falado com a maior naturalidade e as grandes mídias de TV aberta (já apresentador em 2 delas que não vem o caso) e portais de internet fizeram isso ser bem claro a todos, como se Deus fosse culpado pela morte do rapaz, que na verdade tinha que acontecer.
Onde quero chegar?
Bom, desde que faço parte desse fórum, nunca postei (que me lembre, me perdoe se tiver esquecido) alguma mensagem "religiosa" somente após essa tal declaração do pai do falecido é que resolvi postar algo que acredito e está tão claro e evidente a existência de um Ser Único e Criador de tudo visível e invisível, mas, real. Veja: Salmos 19:1-2 "OS céus declaram a glória de Deus e o firmamento anuncia a obra das suas mãos.Um dia faz declaração a outro dia, e uma noite mostra sabedoria a outra noite."
Finalmente, não posso me calar e deixar de anunciar o que está tão claro pois "como escaparemos nós se não atentarmos para uma tão grandiosa salvação?" (procure na Bíblia, que é o livro mais antigo do mundo, mais vendido no mundo e no Brasil, e que foi escrito por 40 homens que na maioria não se conheceram).
Enfim, vc me perguntou: "não acha?". NÃO, não acho, pois não é religião e em algum momento falei de alguma delas, a não ser na minha citação acima para exemplificar o que penso sobre religião.
Esse assunto encerro assim com II Timóteo 4 (Bíblia):
"1 CONJURO-TE, pois, diante de Deus, e do Senhor Jesus Cristo, que há de julgar os vivos e os mortos, na sua vinda e no seu reino,
2 Que pregues a palavra, instes a tempo e fora de tempo, redarguas, repreendas, exortes, com toda a longanimidade e doutrina.
3 Porque virá tempo em que não suportarão a sã doutrina; mas, tendo comichão nos ouvidos, amontoarão para si doutores conforme as suas próprias concupiscências;".
Então, pra mim, se está no tempo certo ou fora dele, se está num local certo ou não, na hora certa ou não, se é lícito ou não, não posso deixar de anunciar esse Ser Único e inigualável. Aliás se vc pesquisar no Google Earth, até eles já reconheceram o local onde está a Arca de Noé petrificada há mais de 4000 anos no país de Uratu (montes de Ararat) uma das provas reais que a Bíblia é a única verdade absoluta.

Resumindo:
1 - vou tentar parar de usar os pronomes que vc não quer (se eu esquecer me perdoe);
2 - vou procurar mais na rede sobre essa ferramenta maravilhosa harbour, apesar de programar em Delphi XE3 que possui uma IDE que agora que foi adquirida pela Embarcadero e chama-se RAD STUDIO que é tão poderosa e muito mais atrativa que qualquer outra no mercado e alías, ela programa em OBJECT PASCAL e agora também em C, C++, mas, mesmo assim, como sou clippeiro apaixonado, quero aprender mais sobre nossa nova lingugem híbrida;
3 - Só falei da Bíblia durante 8 dias; nunca antes havia anunciado, e, não prometo que não falarei, pois se eu sentir a necessidade de assim falar/escrever/teclar o farei;
4 - Tentarei ser mais objetivo e menos dissertativo nas minhas solicitações, mas, como sabem, eis a minha personalidade aqui expressa, e, isso nos faz diferentes e úteis a cada um. Acho que isso também é "humildade".

Bom, agora que acredito ter esclarecido suas indagações, vou tentar ser objetivo.

Alguém tem algum código de um cadastro usando LABEL/TEXTBOX/COMBOBOX bem funcionais, bonitos, detalhados de por exemplo um cadastro de ordem de serviço?

Modo Gráfico - Tela de Cadastro

Enviado: 02 Jul 2015 11:21
por Pablo César
W de Paula,

Volto a dizer: Não estou aqui para falar de religião. E eu agradeceria muito se você pudesse não misturar as coisas.
Do contrário, eu optarei por não mais ler as suas mensagens. E você sabe o que eu quis dizer na minha mensagem anterior.
Pablo César escreveu:Você já leu o hmgdoc ? Procurou em ler o DOC da nova versão ?
microvolution escreveu: Infelizmente vou ser mais uma vez honesto. NÃO. Nem sabia que existia, mas, vou procurar encontrá-lo onde quer que esteja para lê-lo. Obrigado!
Então tá. Tá explicado. Antes de lançar críticas, procure primeiramente informar-se a fundo e agradeço a sua sinceridade.

Você encontrará a documentação do HMG em: C:\hmg.3.4.0\DOC\hmgdoc.htm (observe: diretório de instalação do HMG).

Mas faça a instalação e aplique o PATCH 1, ok ?

Modo Gráfico - Tela de Cadastro

Enviado: 02 Jul 2015 14:23
por microvolution
bjbernal escreveu:Olha, vc precisa reconhecer humildemente que enquanto vc não aprender a programar no modo gráfico...
bjbernal, obrigado por me dar um toque, mas, se vc pesquisar minhas postagens aqui no fórum verá que acredito ser humilde (posso estar enganado no conceito de humildade) pois sempre mostro meus códigos (mesmo em 16 bits) que são úteis a todos e eram guardados a 7 chaves. Você tem razão, o conceito de programação GUI é muito difícil aqui no clipper/harbour, pois no ObjectPascal/Delphi faço pequenos programas com uma facilidade maior e de melhor compreensão. Não sei dizer se lá a coisa entrou mais fácil em minha mente e aqui no harbour/clipper tenho o conceito antigo de "linguagem procedural" então tá sendo difícil.
Por isso recorro aqui e tantos outros fóruns pra alguém me ajudar e consequentemente aos outros também e eu contribuir de certa forma com outros.
bjbernal escreveu:considere que vc terá que aprender a trabalhar com gerenciadores de banco de dados, SQL, pois, me estranha observar que vc ainda use DBF já que quer COMPETIR !
vc tem razão, só q repito se ver minhas postagens em outros tópicos, q até agora ninguém me convenceu pra qual banco de dados (sql, mysql, postgress, sqllite, dbf/cdx, etc, etc) migrar e de qual forma isso será nos meus códigos?

vc deve ter em mente que ainda sou uma criança engatinhando apesar da idade real e ter quase 30 anos de programação, mas, infelizmente fiquei por mais de 15 anos dormindo no ponto, enquanto essa tecnologia VISUAL/SERVER/SGDB cresceu e não percebi. Acho q isso é humildade em reconhecer q não sou e nem sei nada!
bjbernal escreveu:E quanto ao ATRATIVO, cuidado, pois telas muito elaboradas acaba tendo problemas de performance, melhor do que ser ATRATIVO é ser FUNCIONAL apresentando os resultados que se esperam !
Ah isso vc tem 100% de razão, pois testei um SAMPLES\LOGIN_2 que é uma tela de login muito elegante que vc pode testar aí mesmo está numa das versões da HMG/MINIGUI/OOHG (alguma delas,não me lembro mais) e essa tela se digitar usuário/senha errados a tela de login treme! Bem interessante, mas, não funciona de acordo com meu código. Tive que mudar muita coisa pra funcionar...
bjbernal escreveu:Porque vc não usa a IDE para desenhar suas janelas ou forms ? Se vc insistir em usar o velho método @ y,x say... no modo gráfico vai sofrer muito mesmo !
Não sei se é a facilidade da IDE/RAD do Delphi que agora chama-se RAD/STUDIO que trabalha com um arrastar e soltar tão fácil, não gostei da IDE/HMG das versões 3.0.xx. A versão 3.4.0 achei um pouco melhor, mas, não consegui compilar. Tento compilar e não apresenta nenhuma mensagem de erro e não cria o .EXE.
Baixei uma tal OOHG que parece ser mais interativa, mas, não consegui abrir nada lá ainda. E, se não puder usar a mesma facilidade da HMG mesmo sendo mais agradável não vou trocar a estabilidade/simplicidade da HMG por ela. Percebe meu conceito de humildade?
bjbernal escreveu:... a solução DESKTOP já está retrô, agora estamos nos esforçando para desenvolver soluções ONLINE, seja humilde, não é o MINIGUI o problema e vc ainda terá que aprender a desenvolver soluções ONLINE e não vai de cara querer uma ferramenta milagrosa que faça aquilo que só vc com esforço terá que fazer !
Então, como já disse aqui exaustivamente e noutros tópicos, acredito que humildade não é abaixar a cabeça, usar uma roupa rasgada, colocar as mãos pra trás e não olhar nos olhos ao conversar com as pessoas, e, sim, o conceito entendo (volto a repetir, aos 43 anos, posso estar completamente enganado) que é reconhecer minhas limitações, a superioridade das pessoas, meu frágil corpo e mente, e, sempre ser grato às pessoas, independente do convívio com elas.
Aliás, vcs aqui do fórum são os que mais me contribuem para que eu "acorde desse sono profundo que vivi".

Bom, se puder, me ajude com ideias, scripts, e um passo-a-passo de como fazer:
- modo gráfico melhor;
- escolha de um banco de dados que seja compatível com todos os computadores dos clientes e plataformas diversas do windows (xp em diante). Não adianta um banco poderoso, mas, que dependa do cliente comprar outra máquina;
- soluções touch-screen (exemplos);
- adaptação para registro do software na receita estadual (transformá-lo em PAF/ECF);
- impressão em USB sem descartar LPT sem mudança drástica no código clipper original.

Por enquanto, obrigado mais uma vez a todos, pois muito tem me ajudado e contribuído com meus conhecimentos.
Bom, se alguém quiser entrar nessa "discussão", estou pronto e preparado para responder e compartilhar com todos minhas opiniões!

Modo Gráfico - Tela de Cadastro

Enviado: 02 Jul 2015 18:37
por bjbernal
microvolution,
Do CLIPPER para HARBOUR em modo console, parou, chega ! Agora, no modo GUI, vc terá que refazer seus projetos do ZERO, claro que a maioria da LÓGICA aplicada nos antigos projetos podem serem reaproveitados ! Vc precisa esquecer a maneira antiga do modo console, exemplo, os @ y,x SAY/GET..., E VC PRECISA SIM GOSTAR DA IDE do MINIGUI, ele será seu AUXILIAR importantissimo, nunca vc será produtivo sem usar a IDE ! Pare de forçar a maneira antiga de pensamento do console no mundo GUI, não funciona !
Eu gostei mais do MINIGUI EXTENDEND, segue o link http://www.hmgextended.com/

Quanto ao banco de dados, o mais popular entre nós clippeiros é o MYSQL/MARIADB, e o HARBOUR tem uma classe que trabalha muito bem com Mysql de modo nativo ! O DBF melhorou muito com o HARBOUR mas em rede com duzias de usuarios não dá para confiar nele, o melhor cenário em que eu trabalhei com DBF foi quando meu sistema era 100% FOR LINUX e o acesso aos DBF's era com TELNET e vc pode imitar esta solução com TERMINAL SERVER no Windows, este foi o unico cenário em que o DBF me deixou sussa e mesmo assim para garantir eu reindexava uma vez por mês !

Quanto aos exemplos de telas de cadastro, BONITAS, ATRAENTES... bem, gosto é gosto, o que é uma tela bonita pra voce ? Será que coincidirá com o gosto de outrem ? O que vc precisa entender é o sequinte, uma vez sabendo programar de modo simplérrimo no mundo GUI vai buscando fazer igual aquelas das quais vc viu e gostou... seja mas especifico para procurar fazer UM BROWSE ASSIM.... BOTÃO ASSADO.... LABEL TAL... não queira um exemplo completo que derrepente coincida com o que vc quer ! VOCÊ PRECISA DOMINAR A FERRAMENTA ou A NOVA LÓGICA GUI, através daqueles exemplos simples da pasta SAMPLES e dai pergunte mais especificamente como melhorar cada detalhe ou objeto ! Esclareça como vc imagina fazer com browse, botões, labels, textedit, etc... e ai sim vc terá dicas ou soluções aqui !

Mas, repito, NÃO PRIORIZE a aparencia, ocupe-se mais na LÓGICA !