Clipper On Line • Ver Tópico - Hwgui 2.22 build 2

Hwgui 2.22 build 2

Projeto HwGui - Biblioteca visual para Harbour/xHarbour

Moderador: Moderadores

 

Hwgui 2.22 build 2

Mensagempor Itamar M. Lins Jr. » 23 Dez 2018 11:07

Ola!
Usar XML ou PRG ?

HWGUI 2.22 build 2 ( 23.12.2018 )
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[*] Designer: splitter, top panel, status panel, static link controls added.
Grid implemented.
[*] GTK3 support mostly implemented.
[!] Fixes, corrections.

2018-12-23 13:48 UTC+0300 Alexander Kresin <alex@belacy.ru>
  * include/guilib.ch
    * Build number is changed to 2
  * whatsnew.txt
    * Updated for v2.22 build 2

2018-12-22 17:58 UTC+0300 Alexander Kresin <alex@belacy.ru>
  * source/gtk/hfrmtmpl.prg
  * source/winapi/hfrmtmpl.prg
  * utils/designer/resource/widgets.xml
    * Static link control support added to the Designer.


Saudações,
Itamar M. Lins Jr.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6927
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 309 vezes
Mens.Curtidas: 503 vezes

Hwgui 2.22 build 2

Mensagempor Fernando queiroz » 23 Dez 2018 21:51

quando fui compilar o novo Build deu essa warning
compila.jpg
HARBOUR 3.2, HWGUI 2.23 B3, SEFAZCLASS, PDFClass, ADO + MariaDB/MySQL, RMChart
Fernando queiroz
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 737
Data de registro: 12 Nov 2014 23:41
Cidade/Estado: Porto Alegre/RS
Curtiu: 12 vezes
Mens.Curtidas: 58 vezes

Hwgui 2.22 build 2

Mensagempor gilbertosilverio » 24 Dez 2018 07:09

Ola Itamar,

Tentei achar o local para enviar possíveis erros, mais infelizmente não consegui. Por favor, veja se e um erro meu o da HWGUI.

Baseado no exemplo da pasta samples, COLRBLOCK.PRG, se voce alterar esta linhas veja como o browse fica deformado.


       hwg_CREATEARLIST( oBrwArr, aArrayTst )

        oBrwArr:bcolorSel := x_BLUE

        oBrwArr:freeze     := 1     // inclui para mostrar o erro
        oBrwArr:lAdjRight := .F.   // incluir para mostrar o erro

        oBrwArr:aColumns[1]:length := 10
        oBrwArr:aColumns[2]:length := 11
        oBrwArr:aColumns[3]:length := 10
       
        oBrwArr:aColumns[4]:length := 10   // diminui para 10
       
        oBrwArr:aColumns[5]:length := 05

Anexos
Capturar.JPG
Observe a coluna 5, quando chega nela o restante do browse não e limpo
gilbertosilverio
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 332
Data de registro: 18 Jan 2009 09:39
Cidade/Estado: Ribeirao Pires - SP
Curtiu: 1 vez
Mens.Curtidas: 23 vezes

Hwgui 2.22 build 2

Mensagempor Fernando queiroz » 24 Dez 2018 09:31

outra coisa que notei foi que no Designer ele so abre se for .XML , minhas telas em .PRG nao abrem mais

e para salvar quando pede para salvar em .PRG nao vai com os recursos que tem para o formato .XML

formato .PRG

#include "hwgui.ch"
#include "common.ch"
#ifdef __XHARBOUR__
   #include "ttable.ch"
#endif

FUNCTION _teste

LOCAL oToolbar1

  INIT DIALOG oDlg TITLE "Form1" ;
    AT 658,165 SIZE 516,465 ;
     STYLE WS_SYSMENU+WS_SIZEBOX+WS_VISIBLE

   @ 1,8 TOOLBAR oToolbar1  SIZE 494,50    ID 700

   ACTIVATE DIALOG oDlg
RETURN oDlg:lresult


formato .XML

<?xml version="1.0" encoding="UTF-8"?>

-<part class="form">

-<style>

<property name="Geometry">{658,165,500,400}</property>

<property name="Caption">[Form1]</property>

<property name="FormType">[dlgModal]</property>

<property name="lClipper">.F.</property>

<property name="lExitOnEnter">.F.</property>

<property name="lDebug">.F.</property>

<property name="FromStyle">[Popup]</property>

<property name="Icon">[]</property>

<property name="BackColor">-1</property>

<property name="NoModal">.F.</property>

<property name="SystemMenu">.T.</property>

<property name="Minimizebox">.F.</property>

<property name="Maximizebox">.F.</property>

<property name="AbsAlignent">.T.</property>

<property name="SizeBox">.T.</property>

<property name="Visible">.T.</property>

<property name="3DLook">.F.</property>

<property name="Clipsiblings">.F.</property>

<property name="Clipchildren">.F.</property>

</style>

-<part class="toolbar">

-<style>

<property name="Geometry">{1,8,494,50}</property>

<property name="Name">[oToolbar1]</property>

<property name="Anchor">11</property>

-<property name="hstyle">

<hstyle orient="1" colors="{1,12632256}"/>

</property>

</style>

</part>

</part>


sera que estamos indo para telas externas em formato xml ??? :'( :'( :'( :'(
HARBOUR 3.2, HWGUI 2.23 B3, SEFAZCLASS, PDFClass, ADO + MariaDB/MySQL, RMChart
Fernando queiroz
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 737
Data de registro: 12 Nov 2014 23:41
Cidade/Estado: Porto Alegre/RS
Curtiu: 12 vezes
Mens.Curtidas: 58 vezes

Hwgui 2.22 build 2

Mensagempor Itamar M. Lins Jr. » 24 Dez 2018 10:23

Ola!
Tentei achar o local para enviar possíveis erros, mais infelizmente não consegui.

Tem que se cadastrar no SOURCEFORGE primeiro, depois se cadastrar no developer da Hwgui.
https://sourceforge.net/auth/
Depois que vc for autorizado, pode postar usando qualquer clientes de email.
https://sourceforge.net/p/hwgui/mailman/hwgui-developers/
Mesmo que não tenha acesso a escrita no SVN, pode postar no forum dos DEVELOPERS.

Saudações,
Itamar M. Lins Jr.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6927
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 309 vezes
Mens.Curtidas: 503 vezes

Hwgui 2.22 build 2

Mensagempor gilbertosilverio » 24 Dez 2018 10:24

Ola Amigos,

Nos teste que estou fazendo, infelizmente existem muitas diferenças entres as versões 2.17 para a 2.22 e fica impossível usar a 2.22

Nesta rotina de Browse compartilhados, na versão 2.22 existe a classe hbrwflt, para filtar os arquivos da segunda base de dados, mais quando voce faz uma alteração no meu caso no kardex, ele retorna dados de um item que não e o mesmo que filtrei.

FUNCTION PRODUTOS()
  LOCAL o, nKEY, nRec:=1, oGET1, oGET2, nLast := 0, oLINE1
  PRIVATE oLabel1, oEdit1, oLabel2, oEdit2, oButtonex2, oBrw1, zREC:=0, vgDESCRICAO:=[], vgMARCA:=[]
  PRIVATE oButtonex1, oButtonex2, oButtonex3, oButtonex4, oBrw2, aPCHA:=0, oButtonex5, oButtonex6, oButtonex7
  PRIVATE nPES, gPes, vPes:="", keyAnt:=0, aVERDE, aAMARELO, oTECLA:="", nORDEM:=1, cRAZ
  PRIVATE CM1:=1, aCOMBO, nPosicao:=0, cProgressKey:="", fVLR01:=0, oBRW3

  KSETCAPS(.T.)

  aCOMBO:= {[1 - Descricao   ],;
            [2 - Sal Base    ],;
            [3 - Fornecedor  ] }

  CLOSE DATA

  DBUSEAREA(.T., "DBFNTX", "xMITI", "xMITI", .T.)
  SET INDEX TO xMITEMIS, xMITNOTA, xMITCOEM, xMITVEND, xMITVECT, xMIEMI, xMINNF

  DBUSEAREA(.T., "DBFNTX", "xENDAS", "xENDAS", .T.)
  SET INDEX TO xENDACOD

  DBUSEAREA(.T., "DBFNTX", "xESTOQUE", "xESTOQUE", .T.)
  SET INDEX TO xESTDES, xESTPCH, xESTFOR, xESTCOD, xESTPRI, xESTEAN, ESTSEC, xESTFRA

  DBUSEAREA(.T., "DBFNTX", "xARDEX", "xARDEX", .T.)
  SET INDEX TO xADES, xACOD

  DBSELECTAREA("xESTOQUE")
  xESTOQUE->(DBSETORDER(nORDEM))
  xESTOQUE->(DBSEEK(xARDEX->DESCRICAO, .F.))

  INIT DIALOG oDlg TITLE "Pesquisar Produto " AT 0,0 SIZE 980,600                ;
       FONT HFont():Add( 'tahoma',0,-13,400,,,) CLIPPER                         ;
       STYLE WS_POPUP+WS_CAPTION+WS_SYSMENU+WS_MAXIMIZEBOX+WS_SIZEBOX+DS_CENTER

       ThisBUSCA := oDlg

       @  13, 10 SAY       [Pesquisando :]    SIZE 100,19
       @ 100, 10 SAY gPes CAPTION vPes        SIZE 300,22 COLOR 255

       @  13, 35 SAY       [Localizado  :]    SIZE 100,19
       @ 100, 35 SAY cRAZ CAPTION SPAC(50)    SIZE 400,22

       @ 0, 62 LINE oLine1 LENGTH 980

       @ 13,070 BROWSE oBrw1 DATABASE SIZE 960,270 STYLE WS_TABSTOP                            ;
                ON POSCHANGE {|| EVAL(oBrw2:bFirst), ESTOQUE_onPosChange(), oBrw2:Refresh() }  ;
                ON CLICK {||zREC:=xESTOQUE->(RECNO()), ThisBUSCA:CLOSE(), PRODUTO_INCLUIR(zREC), oBU4:SetFocus() }

       oBrw1:alias       := 'xESTOQUE'
       oBrw1:nColumns    := 10
       oBrw1:freeze      := 1
    // oBrw1:lAdjRight   := .F.

       SELECT (oBrw1:alias)

       oBrw1:AddColumn( HColumn():New('EAN'        , FieldBlock( 'EAN' )       ,'C',16, 0 ,.F.,0,0,,,,,,,,,))
       oBrw1:AddColumn( HColumn():New('Descrição'  , FieldBlock( 'DESCRICAO' ) ,'C',45, 0 ,.F.,0,0,,,,,,,,,)) // DIREITA
       oBrw1:AddColumn( HColumn():New('Fornecedor' , FieldBlock( 'FORNECEDOR' ),'C',15, 0 ,.F.,0,0,,,,,,,,,))
       oBrw1:AddColumn( HColumn():New('Estoque'    , FieldBlock( 'QTDEESTOQU') ,'N',08, 0 ,.F.,2,2,,,,,,,,,))
       oBrw1:AddColumn( HColumn():New('Reservado'  , FieldBlock( 'QTDEVENDA' ) ,'N',08, 0 ,.F.,2,2,,,,,,,,,))
       oBrw1:AddColumn( HColumn():New('Sal Base'   , FieldBlock( 'SALBASE' )   ,'C',70, 0 ,.F.,0,0,,,,,,,,,))
       oBrw1:AddColumn( HColumn():New('Promoção'   , FieldBlock( 'MINIMO' )    ,'N',05, 0 ,.F.,1,1,,,,,,,,,)) // ESQUERDA
       oBrw1:AddColumn( HColumn():New('Codigo'     , FieldBlock( 'CODIGO' )    ,'N',06, 0 ,.F.,0,0,,,,,,,,,))
       oBrw1:AddColumn( HColumn():New('P.M.C.'     , FieldBlock( 'PRECOMC' )   ,'N',10, 2 ,.F.,2,2,,,,,,,,,))
       oBrw1:AddColumn( HColumn():New('Preço Fabr.', FieldBlock( 'TABELA01' )  ,'N',10, 2 ,.F.,2,2,,,,,,,,,))

       oBrw1:bKeyDown := { |o,key|HB_SYMBOL_UNUSED(o),IIF(key==27,(hwg_EndDialog(oDlg:handle),.F.),a_BrwKeyfun(o,key))}

       oBrw1:aColumns[02]:bHeadClick := {|| oBrw1_2_onHeadClick( ) }  // 1 - Descricao
       oBrw1:aColumns[03]:bHeadClick := {|| oBrw1_3_onHeadClick( ) }  // 3 - Fornecedor
       oBrw1:aColumns[06]:bHeadClick := {|| oBrw1_6_onHeadClick( ) }  // 2 - sAL

       oBrw1:nFootRows := 1                                 // numero de colunas para mostrar os totais no final do browse
       oBrw1:acolumns[01]:footing    := [ ]
       oBrw1:acolumns[02]:footing    := [<F5>Descricao    <F6>SalBase    <F7>Fornecedor]

       FOR nI := 1 TO 10
           oBrw1:aColumns[nI]:bColorBlock := ;     // LETRA   CAIXA    LET_CX  BARRA
                 {|nI| IF(xESTOQUE->QTDEESTOQU  > 0, {x_RED, x_WHITE, x_BLACK, CINZA}, {x_BLACK, x_WHITE, x_BLACK, CINZA} )}
       NEXT
       oBrw1:aColumns[7]:bColorBlock := ;
             {|n| IF( (xESTOQUE->MINIMO > 0 .AND. xESTOQUE->MINIMO < 10 .AND. xESTOQUE->(QTDEESTOQU-QTDEVENDA) > 0), ;
                       {x_BLUE, x_WHITE, x_WHITE, CINZA}, {CINZA, CINZA, CINZA, CINZA} )}
       oBrw1:Anchor   := 15
       oBrw1:Refresh()

       @ 13,350 BROWSE oBrw2 FILTER SIZE 960,170 STYLE WS_TABSTOP AUTOEDIT                    ;
            FIRST {|| XARDEX->( DBSEEK(xESTOQUE->(SUBSTR(DESCRICAO,1,49)), .F.) ) }           ;
            WHILE {|| XARDEX->(SUBSTR(DESCRICAO,1,49)) == xESTOQUE->(SUBSTR(DESCRICAO,1,49))} ;
            ON UPDATE {|| kardex_onPosChange() }

       //oBrw2:nHeadHeight := 24
       oBrw2:alias       := 'xARDEX'
       oBrw2:nColumns    := 4
     //Obrw2:freeze      := 1

       SELECT (oBrw2:alias)

       // ( cHeading,   block,                    type, length, dec, lEditable, nJusHead, nJusLin, cPict, bValid, bWhen, aItem, bColorBlock, bHeadClick ) CLASS HColumn
       // ('Descrição', FieldBlock( 'DESCRICAO' ),'C' , 50,     0 ,  .F.       ,0       , 0      ,      ,       ,      ,      ,            ,           ,,,))
       oBrw2:AddColumn( HColumn():New('Descrição', FieldBlock( 'DESCRICAO' ) ,'C',50, 0 ,.F.,0,0,,,,,,,,,))          // ESQUERDA
       oBrw2:AddColumn( HColumn():New('N Lote'   , FieldBlock( 'Nlote' )     ,'C',20, 0 ,.T.,0,0,,,,,,,,,))
       oBrw2:AddColumn( HColumn():New('Validade' , FieldBlock( 'Validade')   ,'C',10, 0 ,.T.,0,0,'99/9999',,,,,,,,)) // CENTRO
       oBrw2:AddColumn( HColumn():New('Qtde'     , FieldBlock( 'Qtde' )      ,'N',06, 0 ,.T.,DT_CENTER,DT_RIGHT,'9999999',,,,,,,,))

       oBrw2:acolumns[03]:footing   := [Qtde Total: ]
       oBrw2:acolumns[04]:footing   := TRANSF( fVLR01, [@E 999,999] )

       oBrw2:aColumns[04]:lResizable:= .F.

       oBrw2:Anchor := ANCHOR_LEFTABS  + ANCHOR_BOTTOMABS //12+ ANCHOR_RIGHTABS
       oBrw2:Refresh()

       @ 203,550 BUTTON oButtonex1 CAPTION "&Vendas" SIZE 98,32 STYLE WS_TABSTOP ;
             ON CLICK {|| zREC:=xESTOQUE->(RECNO()), aPCHA:=xESTOQUE->CODIGO, VENDAS_PRO(), xESTOQUE->(DBGOTO(zREC)), oBrw1:REFRESH(), oBrw1:setfocus() }
             oButtonex1:Anchor := 12

       @ 311,550 BUTTON oButtonex2 CAPTION "C&have" SIZE 98,32 STYLE WS_TABSTOP ;
             ON CLICK {|| zREC:=xESTOQUE->(RECNO()), PESQUISA_CHAVE(), xESTOQUE->(DBGOTO(zREC)), oBrw1:REFRESH(), oBrw1:setfocus() }
             oButtonex2:Anchor := 12

       @ 419,550 BUTTON oButtonex3 CAPTION "&Reservas" SIZE 98,32 STYLE WS_TABSTOP ;
             ON CLICK {|| zREC:=xESTOQUE->(RECNO()), aPCHA:=xESTOQUE->CODIGO, HWG_PEUMSO(aPCHA), xESTOQUE->(DBGOTO(zREC)), oBrw1:REFRESH(), oBrw1:setfocus() }
             oButtonex3:Anchor := 12

       @ 527,550 BUTTON oButtonex4 CAPTION "Excluir" SIZE 98,32 STYLE WS_TABSTOP //;
             //ON CLICK {|| zREC:=xARDEX->(RECNO()), Excluir_Kardex(zRec), oBrw1:REFRESH(), oBrw1:setfocus() }
             oButtonex4:Anchor := 12

       @ 635,550 BUTTON oButtonex5 CAPTION "&Importar" SIZE 98,32 STYLE WS_TABSTOP ;
             ON CLICK {||zREC:=xESTOQUE->(RECNO()), ThisBUSCA:CLOSE(), PRODUTO_INCLUIR(zREC), oBU4:SetFocus() }
             oButtonex5:Anchor := 12

       @ 740,550 BUTTON oButtonex6 CAPTION "&Ordem"   SIZE 98,32 STYLE WS_TABSTOP ;
             ON CLICK {|| MsgGetORDEM( @nORDEM, @aCOMBO ), xESTOQUE->(DBSETORDER(nORDEM)), oBrw1:Refresh(), oBrw1:Setfocus() }
             oButtonex6:Anchor := 12

       @ 848,550 BUTTON oButtonex7 CAPTION "Sai&r"   SIZE 98,32 STYLE WS_TABSTOP ;
             ON CLICK {|| DBCLOSEALL(), ThisBUSCA:CLOSE() }
             oButtonex7:Anchor := 12

  ACTIVATE DIALOG oDlg

RETURN(NIL)



Olhem a primeira imagem feito na 2.17 como é, e como fica com a versão 2.22 nas outras duas imagens

Infelizmente, a versão 2.22 e muito pobre em exemplos, e mesmo no tutorial feito pelo Kresin, não existem exemplos, nem mesmo os mais básicos para voce ter noção de como usa-la.

Creio que existe muito potencial, na GUI, mais infelizmente, para usuários leigos, como eu, fica difícil ...
Anexos
Capturar.JPG
Como e a tela de produtos e kardex na versão 2.17, funciona perfeitamente.
Capturar1.JPG
Olhem a posiçao para alterar o campo
Capturar3.JPG
Observem que ele traz um item que não pertence ao filtro
gilbertosilverio
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 332
Data de registro: 18 Jan 2009 09:39
Cidade/Estado: Ribeirao Pires - SP
Curtiu: 1 vez
Mens.Curtidas: 23 vezes

Hwgui 2.22 build 2

Mensagempor Itamar M. Lins Jr. » 24 Dez 2018 10:28

Ola!
sera que estamos indo para telas externas em formato xm

Acredito que irá depender da quantidade de pessoas que estão usando estes recursos do Designer.
Quem sabe um baixo assinado rsrsrs ou algo mais interessante informando a quantidade de pessoas que querem usar a Hwgui 2.22 junto com o Designer e com estes recursos que ainda estão precisando de uma maior atenção do Kresin.
Se todo mundo se cadastrar lá no forum da Hwgui developers do SVN e postar lá os problemas, todos os desenvolvedores irão ver.

Saudações,
Itamar M. Lins Jr.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6927
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 309 vezes
Mens.Curtidas: 503 vezes

Hwgui 2.22 build 2

Mensagempor Itamar M. Lins Jr. » 24 Dez 2018 10:39

Ola!
Nesta rotina de Browse compartilhados, na versão 2.22 existe a classe hbrwflt, para filtar os arquivos da segunda base de dados, mais quando voce faz uma alteração no meu caso no kardex, ele retorna dados de um item que não e o mesmo que filtrei.


Isso ele resolve rapidinho, é só informar o BUG para ele.
Quanto aos exemplos, também é só perguntar lá no forum. Ninguém gosta de trabalhar sozinho. Vamos participar no forum de desenvolvedores.

Saudações,
Itamar M. Lins Jr.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6927
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 309 vezes
Mens.Curtidas: 503 vezes

Hwgui 2.22 build 2

Mensagempor Itamar M. Lins Jr. » 24 Dez 2018 11:10

Ola!
Creio que existe muito potencial, na GUI, mais infelizmente, para usuários leigos, como eu, fica difícil ...

Temos que caminhar para frente, devagar e sempre. Encontrar soluções, mostrar os problemas, apontar os defeitos e participar da solução, se houver jeito.
Mandei esses 2 problemas, para ele.
No caso se vc tem dificuldade com alguma coisa, explica qual é a dificuldade apontando alguma solução se souber. Pelo menos informar para o Kresin o problema. Senão como ele vai saber ?
Meu problema e que não sei fazer tal coisa. Que tal coisa é essa ? Tem algum exemplo de como fazer tal coisa ? Falar que não tem exemplo não ajuda. Tem que perguntar lá para ele sobre essas "tais coisas".

Saudações,
Itamar M. Lins Jr.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6927
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 309 vezes
Mens.Curtidas: 503 vezes

Hwgui 2.22 build 2

Mensagempor gilbertosilverio » 24 Dez 2018 12:11

Itamar,

Creio que o ideal seria incluir vários exemplos básicos, para as mais diversas funcionalidades, como existia na 2.17, pois assim a cada nova atualização, fica mais fácil testar e descobrir possíveis erros e informar.

Vou testando, e baseado nas minhas limitações, vou postando para ver se conseguimos deixa-la 100%.

Novamente, grato pela sua atenção.
gilbertosilverio
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 332
Data de registro: 18 Jan 2009 09:39
Cidade/Estado: Ribeirao Pires - SP
Curtiu: 1 vez
Mens.Curtidas: 23 vezes

Hwgui 2.22 build 2

Mensagempor Fernando queiroz » 24 Dez 2018 17:03

também tentei fazer um relatório usando o designer mas ele não faz nada
sera que tem algum macete pois não consigo colocar os componentes :% :% :% :%
HARBOUR 3.2, HWGUI 2.23 B3, SEFAZCLASS, PDFClass, ADO + MariaDB/MySQL, RMChart
Fernando queiroz
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 737
Data de registro: 12 Nov 2014 23:41
Cidade/Estado: Porto Alegre/RS
Curtiu: 12 vezes
Mens.Curtidas: 58 vezes

Hwgui 2.22 build 2

Mensagempor Itamar M. Lins Jr. » 25 Dez 2018 08:26

Ola!
Sobre o problema do Designer não trabalhar com PRG.

Resposta do Kresin:
Yes, it is. I didn't updated export to prg for a long time and don't know now, when will be able to do this. So, I recommend to use xml format only. If there are real reasons to use prg, we may consider them and try to find a suitable decision with xml.


Sim. Eu não atualizei a exportação para prg por um longo tempo e não sei agora, quando será capaz de fazer isso. Por isso, recomendo usar somente o formato xml. Se houver razões reais para usar o prg, podemos considerá-las e tentar encontrar uma decisão adequada com xml.


Saudações,
Itamar M. Lins Jr.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6927
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 309 vezes
Mens.Curtidas: 503 vezes

Hwgui 2.22 build 2

Mensagempor Itamar M. Lins Jr. » 25 Dez 2018 08:29

Ola!
Resposta do Colrblock.prg.
Hm...
I couldn't reproduce this, all looks normally here.
Maybe, he had changed something else?

Regards, Alexander.


Hm ...
Eu não consegui reproduzir isso, tudo parece normalmente aqui.
Talvez ele tivesse mudado alguma outra coisa?

Atenciosamente, Alexander.



Saudações,
Itamar M. Lins Jr.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6927
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 309 vezes
Mens.Curtidas: 503 vezes

Hwgui 2.22 build 2

Mensagempor gilbertosilverio » 25 Dez 2018 08:38

Ola Itamar,

Por favor compila ai no seu e testa e ve se da o mesmo erro.

Alterei o menu: BROWSE - ARRAY

/*
* Demo by HwGUI Alexander Kresin
*  http://kresin.belgorod.su/
*
*
* Paulo Flecha <pfflecha@yahoo.com>
* 07/07/2005
* Demo for Browse using bColorBlock
*
*       oBrowse:aColumns[1]:bColorBlock := {|| IF (nNumber < 0, ;
*       {textColor, backColor, textColorSel, backColorSel} ,;
*       {textColor, backColor, textColorSel, backColorSel} ) }
*
*       bColorBlock must return an array containing four colors values
*
*/

#define x_BLUE       16711680
#define x_DARKBLUE   10027008
#define x_WHITE      16777215
#define x_CYAN       16776960
#define x_BLACK             0
#define x_RED             255
#define x_GREEN         32768
#define x_GRAY        8421504
#define x_YELLOW        65535

#include "windows.ch"
#include "guilib.ch"

***********************
FUNCTION Main()
***********************
LOCAL oWinMain

SET(_SET_DATEFORMAT, "dd/mm/yyyy")
SET(_SET_EPOCH, 1950)

REQUEST DBFCDX                      // Causes DBFCDX RDD to be linked in
rddSetDefault( "DBFCDX" )           // Set up DBFCDX as default driver

*FERASE("TSTBRW.DBF")

IF !FILE("TSTBRW.DBF")
   CriaDbf()
ELSE
   DBUSEAREA(.T., "DBFCDX", "TSTBRW", "TSTB")
END

INIT WINDOW oWinMain MAIN  ;
     TITLE "Teste" AT 0, 0 SIZE 600,400;
    FONT HFont():Add( 'Arial',0,-13,400,,,) ;
    STYLE WS_DLGFRAME + WS_SYSMENU + DS_CENTER

   MENU OF oWinMain
      MENU TITLE "&Arquivo"
          MENUITEM "&Sair"              ACTION hwg_EndWindow()
      ENDMENU
      MENU TITLE "&Browse"
         MENUITEM "&Database"           ACTION BrwDbs(.f.)
         MENUITEM "Database &EDITABLE"  ACTION BrwDbs(.t.)
         MENUITEM "Database &Zebra"     ACTION BrwDbs(.f., .T.)
         SEPARATOR
         MENUITEM "&Array"              ACTION BrwArr(.f.)
         MENUITEM "Array E&DITABLE"     ACTION BrwArr(.t.)
         MENUITEM "Array Ze&bra"        ACTION BrwArr(.f., .T.)
      ENDMENU
   ENDMENU

   oWinMain:Activate()

RETURN(NIL)

*****************************
STATIC FUNCTION BrwDbs( lEdit, lZebra )
*****************************
LOCAL oEdGoto
LOCAL oBrwDb
LOCAL o_Obtn1, o_Obtn2, o_Obtn3, o_Obtn4
LOCAL oTbar
LOCAL nRec := 1
LOCAL nLast := 0

  lZebra := IF(lZebra == NIL, .F., lZebra)
  DBSELECTAR("TSTB")
  nLast := LASTREC()
  dbGoTop()

  INIT DIALOG oDlg TITLE "Browse DataBase" ;
        AT 0,0 SIZE 600, 500 NOEXIT ;
        FONT HFont():Add( 'Arial',0,-13,400,,,) ;
        STYLE WS_DLGFRAME + WS_SYSMENU + DS_CENTER

  IF lEdit
   @ 10 ,10 BROWSE oBrwDb DATABASE SIZE 580, 385  ;
        STYLE  WS_VSCROLL + WS_HSCROLL ;
        AUTOEDIT ;
        APPEND ;
        ON UPDATE {|| oBrwDb:REFRESH() } ;
        ON KEYDOWN {|oBrwDb, nKey| BrowseDbKey(oBrwDb, nKey, @nLast, oLbl2, "") } ;
        ON POSCHANGE {|| BrowseMove(oBrwDb, "NIL", oEdGoto, "Dbs" ) }
  ELSE
   @ 10 ,10 BROWSE oBrwDb DATABASE SIZE 580, 385  ;
        STYLE  WS_VSCROLL + WS_HSCROLL ;
        ON UPDATE {|| oBrwDb:REFRESH() } ;
        ON KEYDOWN {|oBrwDb, nKey| BrowseDbKey(oBrwDb, nKey, @nLast, oLbl2, "") } ;
        ON POSCHANGE {|| BrowseMove(oBrwDb, "NIL", oEdGoto, "Dbs" ) }
  END

   @ 260,410 BUTTON oBtn1 CAPTION "&OK " SIZE 80,26 ;
         ON CLICK {|| hwg_EndDialog()}

   @ 0, 445 PANEL oTbar1 SIZE 600, 26

   @ 17,10 SAY oLbl1 CAPTION "Records :" OF oTbar1 SIZE 70,22

   @ 85,5 OWNERBUTTON o_Obtn1 OF oTbar1 SIZE 20,20     ;
        BITMAP "Home.bmp";// TRANSPARENT COORDINATES 0,2,0,0 ;
        ON CLICK {|| BrowseMove(oBrwDb, "Home", oEdGoto, "Dbs" ) };
        TOOLTIP "First Record"

   @ 105,5 OWNERBUTTON o_Obtn2 OF oTbar1 SIZE 20,20    ;
        BITMAP "Up.bmp";// TRANSPARENT COORDINATES 0,2,0,0 ;
        ON CLICK {|| BrowseMove(oBrwDb, "Up", oEdGoto, "Dbs" ) } ;
        TOOLTIP "Prior"

   @ 130,4 GET oEdGoto VAR nRec OF oTbar1 SIZE 80,22 ;
        MAXLENGTH 09 PICTURE "999999999" ;
        STYLE WS_BORDER + ES_LEFT ;
        VALID {||GoToRec(oBrwDb, @nRec, nLast, "Dbs")}

   @ 270,7 SAY oLbl2 CAPTION " of  " + ALLTRIM(STR(nLast)) OF oTbar1 SIZE 70,22

   @ 215,5 OWNERBUTTON o_Obtn3 OF oTbar1 SIZE 20,20   ;
        BITMAP "Down.bmp";// TRANSPARENT COORDINATES 0,2,0,0 ;
        ON CLICK {|| BrowseMove(oBrwDb, "Down", oEdGoto, "Dbs" ) } ;
        TOOLTIP "Next"

   @ 235,5 OWNERBUTTON o_Obtn4 OF oTbar1 SIZE 20,20   ;
        BITMAP "End.bmp";// TRANSPARENT COORDINATES 0,2,0,0 ;
        ON CLICK {|| BrowseMove(oBrwDb, "End", oEdGoto, "Dbs" ) } ;
        TOOLTIP "Last Record"

        oBrwDb:bcolorSel := x_DARKBLUE
        oBrwDb:alias := 'TSTB'
        oBrwDb:AddColumn( HColumn():New( "Field1" , FieldBlock(Fieldname(1)),"N", 10,02) )
        oBrwDb:AddColumn( HColumn():New( "Field2" , FieldBlock(Fieldname(2)),"C", 11,00) )
        oBrwDb:AddColumn( HColumn():New( "Field3" , FieldBlock(Fieldname(3)),"D", 10,00) )
        oBrwDb:AddColumn( HColumn():New( "Field4" , FieldBlock(Fieldname(4)),"C", 31,00) )
        oBrwDb:AddColumn( HColumn():New( "Field5" , FieldBlock(Fieldname(5)),"C", 05,00) )

        oBrwDb:aColumns[1]:nJusHead := DT_CENTER
        oBrwDb:aColumns[2]:nJusHead := DT_CENTER
        oBrwDb:aColumns[3]:nJusHead := DT_CENTER
        oBrwDb:aColumns[4]:nJusHead := DT_CENTER
        oBrwDb:aColumns[5]:nJusHead := DT_CENTER

        IF lEdit
        oBrwDb:aColumns[1]:lEditable := .T.
        oBrwDb:aColumns[2]:lEditable := .T.
        oBrwDb:aColumns[3]:lEditable := .T.
        oBrwDb:aColumns[4]:lEditable := .T.
        oBrwDb:aColumns[5]:lEditable := .T.
        END

//      {|| IF (nNumber < 0, ;
//       {tColor, bColor, tColorSel, bColorSel} ,;
//       {tColor, bColor, tColorSel, bColorSel}) }

        IF lEdit
          oBrwDb:aColumns[1]:bColorBlock := {|| IF(TSTB->FIELD1 < 0 , ;
           {x_RED, x_WHITE, x_CYAN, x_GRAY} , ;
           {x_BLUE, x_WHITE , x_BLACK, x_YELLOW })}
        ELSE
          oBrwDb:aColumns[1]:bColorBlock := {|| IF(TSTB->FIELD1 < 0 , ;
           {x_RED, x_WHITE, x_CYAN, x_DARKBLUE} , ;
           {x_BLACK, x_WHITE , x_WHITE, x_DARKBLUE })}
          IF lZebra
             FOR nI := 2 TO 5
                oBrwDB:aColumns[nI]:bColorBlock := {|| IF(MOD(oBrwDB:nPaintRow, 2) = 0,;
                      {x_BLACK, x_GRAY, x_CYAN, x_DARKBLUE} , ;
                      {x_BLACK, x_WHITE , x_WHITE, x_DARKBLUE })}
             NEXT
          ENDIF
        END
   oDlg:Activate()

RETURN(NIL)

*******************************************************
STATIC FUNCTION BrowseMove(oBrw, cPar, oEdGoto, cType )
*******************************************************
IF cPar == "Home"
  oBrw:TOP()
ELSEIF cPar == "Up"
  oBrw:LineUp()
ELSEIF cPar == "Down"
  oBrw:LineDown()
ELSEIF cPar == "End"
  oBrw:BOTTOM()
END

IF cType == "Dbs"
  oEdGoto:SetText(oBrw:recCurr)
ELSEIF cType == "Array"
  oEdGoto:SetText(oBrw:nCurrent)
END
Return Nil

*************************************************
STATIC FUNCTION GoToRec(oBrw, nRec, nLast, cType)
*************************************************
IF nRec == 0
   nRec := 1
END

IF nRec > nLast
  nRec := nlast
END

oBrw:TOP()
IF cType == "Dbs"
  dbGoto(nRec)
ELSEIF cType == "Array"
  oBrw:nCurrent := nRec
END
oBrw:Refresh()

hwg_Setfocus(oBrw:handle)

RETURN(.T.)

*************************************************************
STATIC FUNCTION BrowseDbKey(oBrwDb, nKey, nLast, oLbl2, cPar)
*************************************************************
IF nKey == 46   // DEL

ELSEIF nKey == VK_RETURN

END

Return .T.

*************************
STATIC FUNCTION CriaDbf()
*************************
LOCAL Estrutura := {}
LOCAL i := 1
LOCAL nIncrement := 10

  IF ! FILE("TSTBRW.DBF")
     AADD(Estrutura, {"FIELD1", "N", 10, 02})
     AADD(Estrutura, {"FIELD2", "C", 11, 00})
     AADD(Estrutura, {"FIELD3", "D", 08, 00})
     AADD(Estrutura, {"FIELD4", "C", 30, 00})
     AADD(Estrutura, {"FIELD5", "C", 05, 00})

     DBCREATE("TSTBRW.DBF", Estrutura)
     DBCLOSEAREA()
  ENDIF

  DBUSEAREA(.T., "DBFCDX", "TSTBRW", "TSTB")

  For i := 1 to 200
        APPEND BLANK
        IF i == nIncrement
          nIncrement += 10
          FIELD->FIELD1 := -i
        ELSE
          IF i == 1
             FIELD->FIELD1 := -i
          else
             FIELD->FIELD1 := i
          end
        END
        FIELD->FIELD2 := "Field2 " + STRZERO(i,4)
        FIELD->FIELD3 := DATE() + i
        FIELD->FIELD4 := "jgçpqy " + STRZERO(i, 23)
        FIELD->FIELD5 := STRZERO(i, 5)
  Next

RETURN(.T.)

*****************************
STATIC FUNCTION BrwArr(lEdit, lZebra)
****************************
LOCAL oEdGoto
LOCAL oBrwArr
LOCAL o_Obtn1, o_Obtn2, o_Obtn3, o_Obtn4
LOCAL oTbar
LOCAL nRec := 1
LOCAL aArrayTst := Create_Array()
LOCAL nLast := LEN(aArrayTst)
LOCAL nI

  lZebra := IF(lZebra == NIL, .F., lZebra)
  INIT DIALOG oDlg TITLE "Browse Array" ;
        AT 0,0 SIZE 600, 500 NOEXIT ;
        FONT HFont():Add( 'Arial',0,-13,400,,,) ;
        STYLE WS_DLGFRAME + WS_SYSMENU + DS_CENTER

  IF lEdit
   @ 10 ,10 BROWSE oBrwArr ARRAY SIZE 580, 385  ;
        STYLE  WS_VSCROLL + WS_HSCROLL ;
        AUTOEDIT ;
        APPEND ;
        ON UPDATE {|| oBrwArr:REFRESH() } ;
        ON KEYDOWN {|oBrwArr, nKey| BrowseDbKey(oBrwArr, nKey, @nLast, oLbl2, "") } ;
        ON POSCHANGE {|| BrowseMove(oBrwArr, "NIL", oEdGoto, "Array" ) }
  ELSE
   @ 10 ,10 BROWSE oBrwArr ARRAY SIZE 280, 385  ;
        STYLE  WS_VSCROLL + WS_HSCROLL ;
        ON UPDATE {|| oBrwArr:REFRESH() } ;
        ON KEYDOWN {|oBrwArr, nKey| BrowseDbKey(oBrwArr, nKey, @nLast, oLbl2, "") } ;
        ON POSCHANGE {|| BrowseMove(oBrwArr, "NIL", oEdGoto, "Array" ) }
  END

   @ 260,410 BUTTON oBtn1 CAPTION "&OK " SIZE 80,26 ;
         ON CLICK {|| hwg_EndDialog()}

   @ 0, 445 PANEL oTbar1 SIZE 600, 26

   @ 17,10 SAY oLbl1 CAPTION "Elements :" OF oTbar1 SIZE 70,22

   @ 85,5 OWNERBUTTON o_Obtn1 OF oTbar1 SIZE 20,20     ;
        BITMAP "Home.bmp";// TRANSPARENT COORDINATES 0,2,0,0 ;
        ON CLICK {|| BrowseMove(oBrwArr, "Home", oEdGoto, "Array" ) };
        TOOLTIP "First Record"

   @ 105,5 OWNERBUTTON o_Obtn2 OF oTbar1 SIZE 20,20    ;
        BITMAP "Up.bmp";// TRANSPARENT COORDINATES 0,2,0,0 ;
        ON CLICK {|| BrowseMove(oBrwArr, "Up", oEdGoto, "Array" ) } ;
        TOOLTIP "Prior"

   @ 130,4 GET oEdGoto VAR nRec OF oTbar1 SIZE 80,22 ;
        MAXLENGTH 09 PICTURE "999999999" ;
        STYLE WS_BORDER + ES_LEFT ;
        VALID {||GoToRec(oBrwArr, @nRec, nLast, "Array")}

   @ 270,7 SAY oLbl2 CAPTION " of  " + ALLTRIM(STR(nLast)) OF oTbar1 SIZE 70,22

   @ 215,5 OWNERBUTTON o_Obtn3 OF oTbar1 SIZE 20,20   ;
        BITMAP "Down.bmp";// TRANSPARENT COORDINATES 0,2,0,0 ;
        ON CLICK {|| BrowseMove(oBrwArr, "Down", oEdGoto, "Array" ) } ;
        TOOLTIP "Next"

   @ 235,5 OWNERBUTTON o_Obtn4 OF oTbar1 SIZE 20,20   ;
        BITMAP "End.bmp";// TRANSPARENT COORDINATES 0,2,0,0 ;
        ON CLICK {|| BrowseMove(oBrwArr, "End", oEdGoto, "Array" ) } ;
        TOOLTIP "Last Record"

       hwg_CREATEARLIST( oBrwArr, aArrayTst )

        oBrwArr:bcolorSel := x_BLUE
        oBrwArr:freeze    := 1
        oBrwArr:lAdjRight := .F.

        oBrwArr:aColumns[1]:length := 10
        oBrwArr:aColumns[2]:length := 11
        oBrwArr:aColumns[3]:length := 10
        oBrwArr:aColumns[4]:length := 10
        oBrwArr:aColumns[5]:length := 05

        oBrwArr:aColumns[1]:heading := "Column[1]"
        oBrwArr:aColumns[2]:heading := "Column[2]"
        oBrwArr:aColumns[3]:heading := "Column[3]"
        oBrwArr:aColumns[4]:heading := "Column[4]"
        oBrwArr:aColumns[5]:heading := "Column[5]"

        oBrwArr:aColumns[1]:nJusHead := DT_CENTER
        oBrwArr:aColumns[2]:nJusHead := DT_CENTER
        oBrwArr:aColumns[3]:nJusHead := DT_CENTER
        oBrwArr:aColumns[4]:nJusHead := DT_CENTER
        oBrwArr:aColumns[5]:nJusHead := DT_CENTER

        IF lEdit
           oBrwArr:aColumns[1]:lEditable := .T.
           oBrwArr:aColumns[2]:lEditable := .T.
           oBrwArr:aColumns[3]:lEditable := .T.
           oBrwArr:aColumns[4]:lEditable := .T.
           oBrwArr:aColumns[5]:lEditable := .T.
        END

//      {|| IF (nNumber < 0, ;
//       {tColor, bColor, tColorSel, bColorSel} ,;
//       {tColor, bColor, tColorSel, bColorSel}) }
       IF lEdit
       oBrwArr:aColumns[1]:bColorBlock := {|n| IF(aArrayTst[oBrwArr:nCurrent][1] < 0 , ;
           {x_RED, x_WHITE, x_CYAN, x_BLUE} , ;
           {x_BLUE, x_WHITE , x_WHITE, x_BLUE })}
       ELSE
       oBrwArr:aColumns[1]:bColorBlock := {|n| IF(aArrayTst[oBrwArr:nCurrent][1] < 0 , ;
           {x_RED, x_WHITE, x_CYAN, x_DARKBLUE} , ;
           {x_BLUE, x_WHITE , x_WHITE, x_BLUE })}
          IF lZebra
             FOR nI := 2 TO 5
                oBrwArr:aColumns[nI]:bColorBlock := {|| IF(MOD(oBrwArr:nCurrent, 2) = 0,;
                       {x_BLACK, x_GRAY, x_CYAN, x_DARKBLUE} , ;
                       {x_BLACK, x_WHITE , x_WHITE, x_DARKBLUE })}
             NEXT
          ENDIF
       END

/*
        oBrwDb:aColumns[1]:bColorBlock := {|| IF(TSTB->FIELD1 < 0 , ;
         {x_VERMELHO, x_BRANCO, x_CYAN, x_CINZA50} , ;
         {x_AZUL, x_BRANCO , x_LARANJA, x_AMARELO })}
*/
   oDlg:Activate()

RETURN(.T.)

******************************
STATIC FUNCTION Create_Array()
******************************
LOCAL i := 1
LOCAL n := 1
LOCAL nIncrement := 10
LOCAL aArray := {}

  For i := 1 to 200
    n := i
    IF i == nIncrement
       nIncrement += 10
       n := -i
    ELSE
       IF i == 1
          n := -i
       ELSE
             n := i
       END
    END
    AADD(aArray, { n, STRZERO(i,4), DATE() + i, "jgçpqy " + STRZERO(i, 23), STRZERO(i, 5)})
  Next

RETURN(aArray)

/* -------------------------------------------------------------------------- */

#Ifdef __XHARBOUR__
#XTRANSLATE HB_PVALUE(<var>)  => PVALUE(<var>)
#endif

FUNCTION MsgD( cV1, cV2, cV3, cV4, cV5, cV6, cV7, cV8, cV9, cV10 )
   LOCAL nI, nLen := PCOUNT(), cVar := ""
   FOR nI := 1 TO nLen
       IF HB_PVALUE(nI) == NIL
         cVar += "NIL"
       ELSEIF VALTYPE(HB_PVALUE(nI)) == "B"
         cVar += "CODEBLOCK"
       ELSEIF VALTYPE(HB_PVALUE(nI)) == "N"
         cVar += STR(HB_PVALUE(nI))
       ELSEIF VALTYPE(HB_PVALUE(nI)) == "D"
         cVar += DTOS(HB_PVALUE(nI))
       ELSEIF VALTYPE(HB_PVALUE(nI)) == "L"
         cVar += IF(HB_PVALUE(nI), ".T.", ".F.")
       ELSEIF VALTYPE(HB_PVALUE(nI)) == "C"
         cVar += HB_PVALUE(nI)
       ENDIF
       cVar += "/"
   NEXT
   hwg_Msginfo(LEFT(cVar, LEN(cVar) - 1))
RETURN NIL

gilbertosilverio
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 332
Data de registro: 18 Jan 2009 09:39
Cidade/Estado: Ribeirao Pires - SP
Curtiu: 1 vez
Mens.Curtidas: 23 vezes

Hwgui 2.22 build 2

Mensagempor alxsts » 25 Dez 2018 09:00

Olá!

Só um palpite: não teria que colocar "#include hwgui.ch" no código acima?
[]´s
Alexandre Santos (AlxSts)
alxsts
Colaborador

Colaborador
 
Mensagens: 2943
Data de registro: 12 Ago 2008 15:50
Cidade/Estado: São Paulo-SP-Brasil
Curtiu: 21 vezes
Mens.Curtidas: 248 vezes

Próximo



Retornar para HwGui

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 5 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro