Página 4 de 6

Iniciando com HWGUI

Enviado: 21 Set 2020 04:33
por JoséQuintas
Ou aproveitando o espaço....
hwgui.png

Código: Selecionar todos

#include "hbclass.ch"
#include "hwgui.ch"
#include "hwg_extctrl.ch"
#include "dbstruct.ch"

MEMVAR m_Prog

FUNCTION DoHWGui( cModule, cTitulo )

   LOCAL oFrm

   oFrm := FrmClass():New( cTitulo, cModule, "CIAEPU+-" )
   use \jpa\cordeiro\jpcontabil
   oFrm:Execute()
   use

   RETURN Nil

FUNCTION pTeshwgui( oFrm )

   LOCAL aStru, aValues := {}, oElement, xValue, nRow, nCol

   aStru := dbStruct()
   FOR EACH oElement IN aStru
      AAdd( aValues, FieldGet( oElement:__EnumIndex ) )
   NEXT
   nRow := 80
   nCol := 5
   FOR EACH xValue IN aValues
      IF nCol + 100 + aStru[ xValue:__EnumIndex, DBS_LEN ] * 12 + 50> 790
         nCol := 5
         nRow += 26
      ENDIF
      @ nCol, nRow SAY aStru[ xValue:__EnumIndex, DBS_NAME ] SIZE 100, 25
      @ nCol + 110, nRow GET xValue SIZE aStru[ xvalue:__EnumIndex, DBS_LEN ] * 12, 25
      nCol += 100 + aStru[ xValue:__EnumIndex, DBS_LEN ] * 12 + 50
   NEXT

   ACTIVATE DIALOG oFrm:oFrm

   RETURN Nil

Iniciando com HWGUI

Enviado: 21 Set 2020 15:45
por Itamar M. Lins Jr.
Ola!
Falta os ajustes. STYLES!

Código: Selecionar todos

@ x,y GET oGet VAR xVar size nComp,nLarg STYLE ES_RIGHT //Para números
@ x,y GET oGet VAR xVar size nComp,nLarg STYLE ES_LEFT //Para caracteres
E os possíveis blocos com

Código: Selecionar todos

VALID {||fFuncaoXYZ()}
E os possíveis LIMITES nos tamanhos dos GETs.

Código: Selecionar todos

MAXLENGTH 60
Saudações,
Itamar M. Lins Jr.

Iniciando com HWGUI

Enviado: 21 Set 2020 18:17
por Fernando queiroz
e não esquece um campo fantasma depois do ultimo GET para poder validar ele, pois o ultimo GET não sofre validação ai o fantasma passa a ser o ultimo

@ 18,680 GET oPhantom VAR cPHANTOM SIZE 0,0

Iniciando com HWGUI

Enviado: 21 Set 2020 21:01
por asimoes
Fernando queiroz escreveu:e não esquece um campo fantasma depois do ultimo GET para poder validar ele, pois o ultimo GET não sofre validação ai o fantasma passa a ser o ultimo
isso é GAMBIARRRA, na 2.17 não tem isso.

Iniciando com HWGUI

Enviado: 21 Set 2020 21:41
por Itamar M. Lins Jr.
Ola!
isso é GAMBIARRRA, na 2.17 não tem isso.
Sabe corrigir isso ?

Saudações,
Itamar M. Lins Jr.

Iniciando com HWGUI

Enviado: 21 Set 2020 22:00
por JoséQuintas
E não é que achei um uso pro FOR/EACH composto.

Código: Selecionar todos

FUNCTION pTeshwgui( oFrm )

   LOCAL aStru, aValues := {}, oElement, xValue, nRow, nCol, oField

   aStru := dbStruct()
   FOR EACH oElement IN aStru
      AAdd( aValues, FieldGet( oElement:__EnumIndex ) )
   NEXT
   nRow := 80
   nCol := 5
   FOR EACH xValue, oField IN aValues, aStru
      IF nCol + 100 + oField[ DBS_LEN ] * 12 + 50> 790
         nCol := 5
         nRow += 26
      ENDIF
      @ nCol, nRow SAY oField[ DBS_NAME ] SIZE 100, 25
      @ nCol + 110, nRow GET xValue SIZE oField[ DBS_LEN ] * 12, 25 ;
         STYLE iif( oField[ DBS_TYPE ] == "N", ES_RIGHT, ES_LEFT ) ;
         MAXLENGTH oField[ DBS_LEN ]
      nCol += 100 + oField[ DBS_LEN ] * 12 + 50
   NEXT

   ACTIVATE DIALOG oFrm:oFrm

   RETURN Nil

Iniciando com HWGUI

Enviado: 21 Set 2020 22:20
por JoséQuintas
Por costume, tem aquilo também de deixar a digitação ativa em destaque.

Pra menu, por enquanto só imagino usar browse, seria o mais próximo de prático, ao contrário do menu do Windows.

Iniciando com HWGUI

Enviado: 21 Set 2020 23:29
por Itamar M. Lins Jr.
Ola!
Por costume, tem aquilo também de deixar a digitação ativa em destaque.
Mudar a cor do FOCO.

Código: Selecionar todos

hwg_SetColorinFocus(.T.) //,0,11193702) 
hwg_SetToolTipBalloon(.T.)

Código: Selecionar todos

FUNCTION hwg_SetColorinFocus( lDef, tColor, bColor )
Saudações,
Itamar M. Lins Jr.

Iniciando com HWGUI

Enviado: 22 Set 2020 06:34
por JoséQuintas
Esqueci do principal:
habilitar/desabilitar digitação, botões, etc.

Deveria ter um exemplo de um uso desses, um cadastro por exemplo.

Iniciando com HWGUI

Enviado: 22 Set 2020 06:46
por JoséQuintas
o exemplo tab tem dialog em resource, mas mingw não compila o resource.
qual a alternativa?

Iniciando com HWGUI

Enviado: 22 Set 2020 06:52
por Itamar M. Lins Jr.
Ola!
habilitar/desabilitar digitação, botões, etc.
Essa é a mais simples, fácil de fazer.
Objeto:Disable()
Depois dele está apresentado na DIALOG/Window.

O pessoal está querendo ESCREVER os controles já com os EVENTOS aplicados, isso está errado.
Primeiro desenhamos eles nas JANELAS(Dialogs/window) bunitinho... Depois é que vamos DESLIGAR/LIGAR eles.

Código: Selecionar todos

Function Off_Controls
oGet1:Disable()
oGet2:Disable()
IF XYZ 
oBotao_01:Disable()
...
Saudações,
Itamar M. Lins Jr.

Iniciando com HWGUI

Enviado: 22 Set 2020 06:56
por Itamar M. Lins Jr.
Ola!
o exemplo tab tem dialog em resource, mas mingw não compila o resource.
qual a alternativa?
Compila .RC Esse RC que vc está se referindo é um antigão da BORLAND.

Use como todo mundo usa, escreve ele na DIALOG/WINDOW.

Saudações,
Itamar M. Lins Jr.

Iniciando com HWGUI

Enviado: 22 Set 2020 07:02
por Itamar M. Lins Jr.
Ola!

Código: Selecionar todos

   @ 010,080 TAB oTab ITEMS {} SIZE 750,450 OF oDlg
   BEGIN PAGE "TAB 1" OF oTAB
   END PAGE OF oTAB
   BEGIN PAGE "TAB 2" OF oTAB
   END PAGE OF oTAB
É um OBJETO(controle) como qualquer outro! Tem como saber até em qual TAB o usuário está.
Quando tem muita coisa(gets) o recurso é usar TAB. Até para organizar melhor o CADASTRO.
TAB Endereços, TAB DOCUMENTOS... do cliente.

Saudações,
Itamar M. Lins Jr.

Iniciando com HWGUI

Enviado: 22 Set 2020 07:27
por Itamar M. Lins Jr.
Ola!
Exemplo com TAB e DESLIGANDO os controles:

Código: Selecionar todos

#include "hwgui.ch"

Function Main
Local oDlg, oSay, oBtn1, oBtn2, oOwBtn
Local oBtn3, oPreco, nPreco:=123456789.1234, oBtn4

   INIT DIALOG oDlg TITLE "EVENTOS NO DIALOG" AT 0,0 SIZE 800,600 ;
     On INIT {||hwg_msginfo("Bloco do Inicio")} ;
     On EXIT {||oDlg:Hide(),hwg_msginfo("Bloco do EXIT")} 

   @ 010,010 TAB oTab ITEMS {} SIZE 750,450 OF oDlg
   BEGIN PAGE "TAB 1" OF oTAB

      @ 300,040 SAY oSay CAPTION "Click no X para fechar" size 300,30
 
      @ 300,100 button oBtn1 Caption "SAIR Close" size 200,50 ON CLICK {||oDlg:Close()}
      @ 300,200 button oBtn2 Caption "SAIR EndDialog" size 200,50 ON CLICK {||hwg_EndDialog()}

      @ 300,300 OWNERBUTTON oOwBtn SIZE 200,50 TEXT "OwnerButton SAIR" 
   END PAGE OF oTAB

   BEGIN PAGE "TAB 2" OF oTAB
 
      @ 300,100 button oBtn3 Caption "Ligar BUTTON e GET" size 200,50 ON CLICK {||oPreco:Enable(),oBtn4:Enable()}

      @ 300,200 GET oPreco VAR nPreco PICTURE "@e 999,999,999.9999"  size 150,30

      @ 300,300 BUTTON oBtn4 CAPTION "Desligar BOTAO e GET" size 200,50 ON CLICK {||oPreco:Disable(),oBtn4:Disable()}

   END PAGE OF oTAB

    oDlg : bActivate:={||oDlg:Show(), oOwBtn:Disable(), hwg_msginfo("Bloco do Activate")}

   ACTIVATE DIALOG oDlg CENTER
Return Nil
É só compilar e testar.

Saudações,
Itamar M. Lins Jr.

Iniciando com HWGUI

Enviado: 22 Set 2020 09:36
por asimoes
Itamar M. Lins Jr. escreveu:Sabe corrigir isso ?
É comparando HEdit da 2.17 com a atual, mas o ideal é o Alexander mexer nisso, se não acaba fazendo mer**, porque antes não precisa colocar esse "fantasma" e agora tem que colocar, dá a impressão que parte do código ficou perdido, enfim, se eu tivesse todo o conhecimento dessa lib me atreveria fazer funcionar e sairia da 2.17