textbox date

Projeto MiniGui - 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

textbox date

Mensagem por JoséQuintas »

exemplo.png
Eu tento não reclamar, mas é difícil...
É só olhar exemplo...
Coloquei DATE igual no exemplo, e não aceita.
Vamos olhar na IDE.
hmge.png
Legal, resolvido.
d:\github\dlgauto\source>HBMK2 hmge.hbc -w3 -es2 -m -n *.hbp -strip -compr -workdir=c:\temp -q -Id:\fontes\build\
hbmk2: Processing environment options: -comp=mingw
hbmk2: Processing configuration: d:\harbour\bin\hbmk.hbc
Harbour 3.2.0dev (r2307062207)
Copyright (c) 1999-2021, https://harbour.github.io/
dlg_createedit.prg(126) Error E0030 Syntax error "syntax error at '@'"
dlg_createedit.prg(137) Error E0030 Syntax error "syntax error at '@'"
dlg_createedit.prg(149) Error E0030 Syntax error "syntax error at '@'"
3 errors
E agora ? olho aonde ?

É fácil dizer pra olhar exemplo, dizer que tem muito exemplo, que tem IDE, mas e quando nenhum deles ajuda ?

Talvez olhar no fonte da LIB, a InputWindow() ?

Pois é... não é tão simples assim começar do zero.
Quem não sabe, acaba sabendo menos ainda.
O que criei, estilo gerador, é justamente pra coisas desse tipo não fazerem desanimar.

É porque estou usando automático?
ÓTIMO
Isso já resolve pipinos que poderia ter depois.

Mas vamos em frente, de um jeito ou de outro, deve ter alguma saída, e ela vai acabar aparecendo.
Dá pra ir vendo outras coisas.

Alguma idéia ?

Nota: só acrescentei o DATE ou NUMERIC ou CHARACTER, já tentei com mudança de ordem. PARENT ou OF são equivalentes
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

textbox date

Mensagem por JoséQuintas »

Código: Selecionar todos

         DO CASE
         CASE aItem[ CFG_FTYPE ] == "N"
            aItem[ CFG_TOBJ ] := "Text" + Ltrim( Str( aItem:__EnumIndex ) )
            @ nRow2, nCol2 TEXTBOX ( aItem[ CFG_TOBJ ] ) ;
               PARENT    ( ::oDlg ) ;
               HEIGHT    20 ;
               WIDTH     aItem[ CFG_FLEN ] * 12 ;
               NUMERIC ;
               VALUE     aItem[ CFG_VALUE ] ;
               MAXLENGTH aItem[ CFG_FLEN ] ;
               FONT      "verdana" SIZE 12 ;
               ON CHANGE Nil
         CASE aItem[ CFG_FTYPE ] == "D"
            aItem[ CFG_TOBJ ] := "Text" + Ltrim( Str( aItem:__EnumIndex ) )
            @ nRow2, nCol2 TEXTBOX ( aItem[ CFG_TOBJ ] ) ;
               PARENT    ( ::oDlg ) ;
               HEIGHT    20 ;
               WIDTH     aItem[ CFG_FLEN ] * 12 ;
               ; // DATE .T. ;
               VALUE     aItem[ CFG_VALUE ] ;
               MAXLENGTH aItem[ CFG_FLEN ] ;
               FONT      "verdana" SIZE 12 ;
               ON CHANGE Nil
         OTHERWISE
            aItem[ CFG_TOBJ ] := "Text" + Ltrim( Str( aItem:__EnumIndex ) )
            @ nRow2, nCol2 TEXTBOX ( aItem[ CFG_TOBJ ] ) ;
               PARENT    ( ::oDlg ) ;
               HEIGHT    20 ;
               WIDTH     aItem[ CFG_FLEN ] * 12 ;
               ; // CHARACTER ;
               VALUE     aItem[ CFG_VALUE ] ;
               MAXLENGTH aItem[ CFG_FLEN ] ;
               FONT      "verdana" SIZE 12 ;
               UPPERCASE ;
               ON CHANGE Nil
         ENDCASE
NUMERIC aceitou antes do VALUE.
Os outros ainda não.
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/
ivanil
Usuário Nível 3
Usuário Nível 3
Mensagens: 166
Registrado em: 11 Set 2004 15:13
Localização: Florianópolis/SC

textbox date

Mensagem por ivanil »

Olá Quintas,

No ide tem o wizard, use uma tabela com todos os tipos de dados depois use o código gerado para seu protótipo.
Tudo é mais simples que parece.
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

textbox date

Mensagem por JoséQuintas »

Praticamente foi o que eu fiz.
Mas não aceitou.
O que não testei foi compilar o fonte da IDE pra ver se a IDE tá falando a verdade.
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/
ivanil
Usuário Nível 3
Usuário Nível 3
Mensagens: 166
Registrado em: 11 Set 2004 15:13
Localização: Florianópolis/SC

textbox date

Mensagem por ivanil »

Use a minha IDE, a que você está usando não tem o wizard.
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

textbox date

Mensagem por JoséQuintas »

edit.png
É complicado, parece que a minigui faz de tudo pro programador desistir.
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

textbox date

Mensagem por JoséQuintas »

Resolvido, deixei pra entender depois.
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/
ivanil
Usuário Nível 3
Usuário Nível 3
Mensagens: 166
Registrado em: 11 Set 2004 15:13
Localização: Florianópolis/SC

textbox date

Mensagem por ivanil »

É complicado, parece que a minigui faz de tudo pro programador desistir.
Como você já viu, ha duas sintaxes para minigui, você esta usando a alternativa e minha preferida, pois você consegue deixar o código enxuto e com uma aparência muito melhor segundo meu ponto de vista.
Seu código está com erros de sintaxe bem aparente, teoricamente misturou as 2 formas ja que não forneceu o valor as propriedades;
Para entender mais a fundo é bom visitar os includes.

na escrita convencional:
@ ... NUMERIC, o include entende que o controle é NUMERIC, então não tem valor ;

Na escrita alternativa, todas as propriedades devem ter um valor, você deixou algumas em branco.

Mencionei acima a possibilidade de enxugar código, veja abaixo uma forma mais curta de seu código

Define TEXTBOX (aItem[CFG_...])
Parent ...
...
NUMERIC aItem[CFG_FTYPE]=="N"
DATE aItem[CFG_FTYPE]=="D"
End TEXTOX

Perceba também que maxlength é para os textbox do tipo carácter, para os numéricos você deveria usar Mascara INPUTMASK, para os campos tipo Date tem um controle mais elegante e cheio de recursos,

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

textbox date

Mensagem por JoséQuintas »

ivanil escreveu:Mencionei acima a possibilidade de enxugar código, veja abaixo uma forma mais curta de seu código

Define TEXTBOX (aItem[CFG_...])
Parent ...
...
NUMERIC aItem[CFG_FTYPE]=="N"
DATE aItem[CFG_FTYPE]=="D"
End TEXTOX
Pra harbour seria normal, mas quem disse que a LIB aceita isso?
Harbour 3.2.0dev (r2307062207)
Copyright (c) 1999-2021, https://harbour.github.io/
frm_CreateEdit.prg(128) Error E0030 Syntax error "syntax error at 'AITEM'"
Harbour 3.2.0dev (r2307062207)
Copyright (c) 1999-2021, https://harbour.github.io/
frm_CreateEdit.prg(128) Error E0021 Incorrect number of arguments in DATE
Passed: 1, expected: 0
1 error
Pois é, você, programador experiente em minigui, caiu nas "pegadinhas" dela, coisa que deveria funcionar mas não funciona.
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

textbox date

Mensagem por JoséQuintas »

Pronto.
Postei minha rotina nos grupos OOHG e MINIGUI.
Incluindo os #ifdef pra chamar a atenção do troço que inventei, que serve pra testar tudo de uma vez.
No momento o fonte é válido pras duas LIBs, então, tem tudo a ver.
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/
ivanil
Usuário Nível 3
Usuário Nível 3
Mensagens: 166
Registrado em: 11 Set 2004 15:13
Localização: Florianópolis/SC

textbox date

Mensagem por ivanil »

Olá Quintas,

Funciona normalmente, não ha pegadinha.

Apenas corrija o código conforme indicado...

Se for usar a sintaxe convencional, tire o valor da propriedade, não existe NUMERIC .T., o proprio NUMERIC é o indicador que o TEXTBOX é NUMERIC

se for usar a forma alternativa, toda a propriedade deve ter um valor, pois o criador do objeto é o "END TEXTBOX"

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

textbox date

Mensagem por JoséQuintas »

O código está sendo compilado normalmente.

Código: Selecionar todos

         DO CASE
         CASE aItem[ CFG_FTYPE ] == "N"
            aItem[ CFG_TOBJ ] := "Text" + Ltrim( Str( aItem:__EnumIndex ) )
            DEFINE TEXTBOX ( aItem[ CFG_TOBJ ] )
               PARENT ( ::oDlg )
               ROW nRow2
               COL nCol2
               HEIGHT    20
               WIDTH     aItem[ CFG_FLEN ] * 12
               FONTNAME "verdana"
               NUMERIC .T.
               VALUE     aItem[ CFG_VALUE ]
               MAXLENGTH aItem[ CFG_FLEN ]
               ON CHANGE Nil
            END TEXTBOX
         CASE aItem[ CFG_FTYPE ] == "D"
            aItem[ CFG_TOBJ ] := "Text" + Ltrim( Str( aItem:__EnumIndex ) )
            DEFINE TEXTBOX ( aItem[ CFG_TOBJ ] )
               PARENT ( ::oDlg )
               ROW nRow2
               COL nCol2
               HEIGHT    20
               WIDTH     aItem[ CFG_FLEN ] * 12
               DATE .T.
               VALUE     aItem[ CFG_VALUE ]
            END TEXTBOX
         OTHERWISE
            aItem[ CFG_TOBJ ] := "Text" + Ltrim( Str( aItem:__EnumIndex ) )
            DEFINE TEXTBOX ( aItem[ CFG_TOBJ ] )
               PARENT ( ::oDlg )
               ROW nRow2
               COL nCol2
               HEIGHT    20
               WIDTH     aItem[ CFG_FLEN ] * 12
               FONTNAME "verdana"
               VALUE     aItem[ CFG_VALUE ]
               MAXLENGTH aItem[ CFG_FLEN ]
            END TEXTBOX
         ENDCASE
Mas se colocar NUMERIC e DATE juntos dá erro.
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/
ivanil
Usuário Nível 3
Usuário Nível 3
Mensagens: 166
Registrado em: 11 Set 2004 15:13
Localização: Florianópolis/SC

textbox date

Mensagem por ivanil »

Código: Selecionar todos


#include <hmg.ch>
Function Main( )
    Local aStr,a,nRow:=10,cLabel,cContr,cField,cMasc
    DbCreate("Test",{{"Codigo","N",5,0},{"Data","D",8,0},{"dataHora","T",8,0},{"Descricao","C",30,0},{"ativo","L",1,0},{"valor","N",12,4}})
    use Test alias t shared new
    
    T->(DbAppend())
    T->Codigo  := 1
    T->Data    := ctod("01/07/2023")
    T->dataHora:= hb_DateTime()
    T->Descricao:="Test1"
    T->ativo    := TRUE
    
    aStr:=T->(DbStruct())

    
    DEFINE WINDOW MAIN AT 265.5000,660.0000 WIDTH 600 HEIGHT 549  TITLE "" MAIN 
      For each a in aStr
      
        cLabel:="lbl"+a[1]
        cContr:="ctr"+a[1]
        cField:="T->"+a[1]
        
        @ nRow,10 Label &cLabel width 100 height 20 value a[1]+"-"+a[2] Rightalign
        Do case
            case a[2] $"D,@"
                DEFINE DATEPICKER &cContr
                    COL 120
                    ROW nRow
                    FIELD &cField
                    WIDTH 120 
                    TOOLTIP "Field "+a[1]
                    RANGEMIN Date()-30
                    RANGEMAX Date()+90
                    SHOWNONE  .T. 
                    UPDOWN .T.
                    if a[2]="D"
                        DATEFORMAT 'dd/MMM/yyyy'
                    else
                        DATEFORMAT 'dd/MMM/yyyy hh:mm:ss'
                        WIDTH 160
                    endif
                END DATEPICKER 

                           
            case a[2] $"N,C"
                DEFINE TEXTBOX &cContr
                    COL 120
                    ROW nRow
                    FIELD &cField
                    WIDTH 120 
                    TOOLTIP "Field "+a[1]
                    if a[2]="N"
                        NUMERIC TRUE
                        
                        cMasc:=Replicate("9",a[3])
                        if a[4]>0
                           cMasc := StrTran(Transform(val(cMasc),"@e 999,999,999,999"),".",",")+"."+replicate("9",a[4])
                           FORMAT "E"
                        endif
                        INPUTMASK cMasc
                    else
                        MAXLENGTH a[3]
                    endif
                END TEXTBOX 
            case a[2]="L"
                DEFINE CHECKBOX  &cContr
                    COL 120
                    ROW nRow
                    FIELD &cField
                    TOOLTIP "Field "+a[1]
                    TRANSPARENT TRUE
                END CHECKBOX 
        Endcase
        nRow += 30
      Next
    END WINDOW
    Main.Center

    Main.activate()

    REturn .T.

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

textbox date

Mensagem por JoséQuintas »

Código: Selecionar todos

             DEFINE DATEPICKER &cContr
                    COL 120
                    ROW nRow
                    FIELD &cField
                    WIDTH 120 
                    TOOLTIP "Field "+a[1]
                    RANGEMIN Date()-30
                    RANGEMAX Date()+90
                    SHOWNONE  .T. 
                    UPDOWN .T.
                    if a[2]="D"
                        DATEFORMAT 'dd/MMM/yyyy'
                    else
                        DATEFORMAT 'dd/MMM/yyyy hh:mm:ss'
                        WIDTH 160
                    endif
                END DATEPICKER 
Isso é outra coisa que eu não sabia, sobre poder usar um IF no meio do comando.
Nem sei se existe exemplo disso, mas se existir, dificilmente iria encontrar.
Mas falta o teste prático, só acredito vendo kkkk
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/
ivanil
Usuário Nível 3
Usuário Nível 3
Mensagens: 166
Registrado em: 11 Set 2004 15:13
Localização: Florianópolis/SC

textbox date

Mensagem por ivanil »

o fonte esta completo... so compilar...
Responder