Iniciando com HWGUI

Projeto HwGui - Biblioteca visual para Harbour/xHarbour

Moderador: Moderadores

Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Iniciando com HWGUI

Mensagem 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
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Iniciando com HWGUI

Mensagem 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.
Saudações,
Itamar M. Lins Jr.
Fernando queiroz
Usuário Nível 4
Usuário Nível 4
Mensagens: 779
Registrado em: 13 Nov 2014 00:41
Localização: Porto Alegre/RS

Iniciando com HWGUI

Mensagem 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
HARBOUR 3.2, HWGUI 2.23 B3, SEFAZCLASS, PDFClass, ADO + MariaDB/MySQL, RMChart
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Iniciando com HWGUI

Mensagem 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.
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Iniciando com HWGUI

Mensagem por Itamar M. Lins Jr. »

Ola!
isso é GAMBIARRRA, na 2.17 não tem isso.
Sabe corrigir isso ?

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Iniciando com HWGUI

Mensagem 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
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Iniciando com HWGUI

Mensagem 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.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Iniciando com HWGUI

Mensagem 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.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Iniciando com HWGUI

Mensagem 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.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Iniciando com HWGUI

Mensagem por JoséQuintas »

o exemplo tab tem dialog em resource, mas mingw não compila o resource.
qual a alternativa?
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Iniciando com HWGUI

Mensagem 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.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Iniciando com HWGUI

Mensagem 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.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Iniciando com HWGUI

Mensagem 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.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Iniciando com HWGUI

Mensagem 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.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Iniciando com HWGUI

Mensagem 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
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Responder