DLGAUTO Dialogs automáticas (não geração de fontes)

Aqui você poderá oferecer suas Contribuições, Dicas e Tutoriais (Texto ou Vídeo) que sejam de interesse de todos.

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

DLGAUTO Dialogs automáticas (não geração de fontes)

Mensagem por JoséQuintas »

Sem nome definido.
Pra quem não entendeu....

O gerador é uma forma de tirar a tristeza e a demora de desenvolver alguma coisa em GUI.
É uma tristeza dizer que ainda não fiz uma tela funcionando em hwgui, depois de muito tempo, e isso é desanimador.
Por outro lado, com o gerador, dá a sensação de que tá tudo quase pronto, que faltam só alguns detalhes, e isso empolga.

Como resultado da empolgação..... tudo criado a partir de DBFs, sem tela de configuração, só se fizer pelo fonte, pra fazer relacionamento entre DBFs e mostrar na tela.

execução em hwgui, é onde fiz mais coisas, atualiza tudo durante a navegação, e a maioria dos botões funciona, não todos.
hwgui.png

Execução em HMG Extended, só fiz o básico de criar as telas
hmge.png

Execução em OOHG, só criei o menu, quando lembrei que é minigui mas é OOP
oohg.png
oohg.png (11.61 KiB) Exibido 35218 vezes

Está tudo feio, está tudo incompleto, mas tem alguma coisa.

EFEITO COLATERAL DO GERADOR

Talvez muitos pensaram que eu estou querendo mostrar que sei mais.
Pensem bem... nada funciona... agora vai ter mais coisa ainda que não funciona.
De onde tiraram isso de que sei mais ?
Pois esse é o efeito colateral do gerador.
Parece tudo pronto, quando na prática falta tudo.

Diferente das outras vezes, quero usar sem olhar fonte da lib, sem tentar modificar como a lib funciona, só quero ver como fica o uso prático, como ficam os fontes, etc.
Me surpreendi com HMG. O fonte que fiz agora não funcionava antes, parece que aquilo de variável pública sumiu.

O gerador vai ajudar nisso, usar várias LIBs também (fontes separados).
Vai parecer tudo indo em frente, mesmo não saindo do lugar.

Era isso que eu estava precisando, do gerador, e da sensação que ele dá.
Devia ter feito isso há mais tempo.
O resto, vai ser pesquisando, perguntando, sempre com a sensação de que tá pronto.

Tá tudo totalmente automático: menu, telas, relatórios, configurar pra pesquisar um código ou mais códigos no cadastro, mostrar a descrição
O trabalho vai ser só usar um controle de cada lib do jeito que a lib pedir, e as ações de botões, e fazer funcionar.
Se demorar 1 semana ou um mês cada um, sem problemas, vai parecer que tá tudo pronto mesmo.
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
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Gerador/criação de telas/executor

Mensagem por sygecom »

Parabéns mestre pela evolução nesse gerador, tenho certeza que isso vai ser um divisor de aguas para você.
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
paiva
Usuário Nível 3
Usuário Nível 3
Mensagens: 300
Registrado em: 04 Ago 2005 10:28

Gerador/criação de telas/executor

Mensagem por paiva »

Parabens MESMO

esta precisando de uma coisa assim a muito tempo

é um dos arrependimentos que tenho de não ter mudado de linguagem.

Poderiam ajudar para finalizar...

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

Gerador/criação de telas/executor

Mensagem por JoséQuintas »

Lembre-se que apesar de mostrar como cria cada controle, o fonte vai ser mais complicado por causa de tratar todos os campos de uma vez.

E se em console dá pra fazer telas de várias maneiras, em GUI isso se multiplica muito mais.

Esse executor, melhor chamar assim pra não confundir com gerador de fontes, vai ser só uma referência básica de alguma coisa funcionando.
Só que ao contrário dos exemplos das LIBs, vai mostrar um uso prático de um aplicativo, e não os recursos das LIBs.
Pode ser um ponto de partida de todo mundo que vai começar.

Mas de novo: fonte de "executor" não é um fonte normal, talvez possa ser mais complexo de entender, e ao invés de ajudar acabar atrapalhando.
Fico na dúvida sobre isso, porque a parte complexa se resume à criação da tela, que só faz cálculos de posição das coisas.

Vai servir pra mim, e pra todos.

Endereço do github:
https://github.com/JoseQuintas/dlgauto
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

Gerador/criação de telas/executor

Mensagem por JoséQuintas »

A parte importante referente ao gerador é o array e cada elemento

Exemplo:

Código: Selecionar todos

@ 1, 0 SAY "Cod.Cliente" GET nCodCli 
@ 1, 30 SAY cliente->Nome
Isso acima é o que usaríamos num cadastro.
"Cod.Cliente" o equivalente a isso fica em CFG_FCAPTION
nCodCli o equivalente a isso fica em CFG_FVALUE
cliente->Nome o equivalente a isso seria a tabela CFG_VTABLE e o campo CFG_VSHOW
Na tabela aonde lê e grava seria o CFG_VNAME
Em GUI, vai usar um objeto pra esse primeiro texto, e não importa o nome
Em GUI, o objeto do get é CFG_FCONTROL
Em GUI, aonde vai o segundo texto precisa atualização, então precisa saber o nome, vai em CFG_VCONTROL
Além desses, tem lá tipo, tamanho e decimais de cada campo, e tamanho desse texto que vai ser mostrado quando pesquisa.

No final, o array só contém as variáveis comuns de qualquer aplicativo, a única diferença é que estão num array.

A lógica do "gerador" serve pra qualquer LIB, e as variáveis do gerador servem pra qualquer LIB.

Exemplo:
Para o gerador, o gerador sabe que clicando incluir/alterar precisa habilitar/desabilitar os "GETs".
Cada LIB é que vai dizer como habilita/desabilita um "GET", o que precisa ser feito é colocar o fonte pra isso.

E o mesmo para os demais eventos.

Está ficando organizado, na medida do possível:

test.prg - entrada geral
frm_createdbf.prg - criar dbfs e configuração simples
frm_mainmenu.prg - menu principal dos dbfs

frm_main.prg - entrada
frm_class.prg - classe geral
frm_createfrm.prg - criar janela de dialog
frm_createbutton.prg - criar buttons
frm_createedit.prg - criar textbox/label
frm_updateedit.prg - atualização dos textbox

frm_print.prg - relatórios
frm_preview.prg - preview de relatórios

Algumas funções equivalem a métodos, foi só uma forma de deixar em fonte separado.
Isso eliminou a herança múltipla.

Compilação:

hbmk2 test.hbp hwgui.hbc
hbmk2 test.hbp hmge.hbc
hbmk2 test.hbp oohg.hbc

Se a LIB não tiver hbc, crie vazio.
Se a LIB exige compilar de outro jeito... veja como é, e se precisar, crie por exemplo -DHBMK_HAS_HWGUI, ou no BAT ou no PRG_FLAGS, ou onde a sua LIB deixar.
Ou se souber criar HBC, crie um.
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

Gerador/criação de telas/executor

Mensagem por JoséQuintas »

hwgui.png

Código: Selecionar todos

         @ nCol2, nRow2 GET aItem[ CFG_TOBJ ] ;
            VAR aItem[ CFG_VALUE ] OF iif( ::lWithTab, oTab, ::oDlg ) ;
            SIZE aItem[ CFG_FLEN ] * 12, 20 ;
            STYLE WS_DISABLED + iif( aItem[ CFG_FTYPE ] == "N", ES_RIGHT, ES_LEFT ) ;
            MAXLENGTH aItem[ CFG_FLEN ] ;
            PICTURE PictureFromValue( aItem ) ;
            VALID { || OkCurrent( aItem, Self ) }
Agora com VALID.

Sabem o que isso significa ?

Tá igual um aplicativo.
Está validando o código chave do arquivo atual.
Também está validando aquele outro, que pesquisa em outra tabela.

Sabém o que isso significa ?

Já simula cadastro de clientes, fornecedores, produtos, financeiro, estoque, contabilidade, etc.
É quase o aplicativo inteiro.

É um ótimo ambiente de teste, é quase o mesmo que testar o aplicativo pronto.
E exige muito pouco de cada LIB GUI.

Código: Selecionar todos

STATIC FUNCTION OkCurrent( aItem, Self )

   LOCAL nSelect, lEof

   IF aItem[ CFG_ISKEY ]
      SEEK aItem[ CFG_TOBJ ]:Value
      IF ::cSelected == "INSERT"
         IF ! Eof()
            hwg_MsgInfo( "Código já cadastrado" )
            RETURN .F.
         ENDIF
      ELSE
         IF Eof()
            hwg_MsgInfo( "Código não cadastrado" )
            RETURN .F.
         ENDIF
      ENDIF
   ENDIF
   IF ! Empty( aItem[ CFG_VTABLE ] )
      nSelect := Select()
      SELECT ( Select( aItem[ CFG_VTABLE ] ) )
      SEEK aItem[ CFG_TOBJ ]:Value
      lEof := Eof()
      aItem[ CFG_VOBJ ]:SetText( FieldGet( FieldNum( aItem[ CFG_VSHOW ] ) ) )
      SELECT ( nSelect )
      IF lEof
         hwg_MsgInfo( "Código não cadastrado" )
         RETURN .F.
      ENDIF
   ENDIF

   RETURN .T.
Nem precisou muita coisa.

Se o campo é chave ( ISKEY ) pesquisa na tabela atual. SEEK uai, não tem o que inventar, ou encontra ou não encontra.

Se é campo de outra tabela: na configuração temos a tabela onde pesquisar e o que mostrar.
É SEEK e pegar o campo uai, não tem o que inventar.

Acrescentei também a variável :cSelected, pra identificar se está ocorrendo inclusão ou alteração.
Ela é preenchida com 'INSERT" ou "EDIT" quando clica em inclui/altera e é alterada pra "NONE" quando clica em save/cancel

Tudo coisa simples, mas que causa um grande impacto ver funcionando.
É só ir fazendo mexidas simples, que vai avançando o gerador e o uso das LIBs.
Pra testar isso com certeza precisei mexer em alguma lib, usei a hwgui pra testar o funcionamento disso.
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

Gerador/criação de telas/executor

Mensagem por JoséQuintas »

Tudo isso é interessante.

Cheguei a dividir a classe, pro fonte ficar menos poluído.

Teve fonte que não deu pra dividir.
#ifdef no fonte estava deixando tudo poluido demais, tinha hora que eu ia mexer numa lib, e mexia na lib errada, estragava ao invés de melhorar.
Se isso tava dando trabalho, era encontrar outra forma de fazer, então criei essas funções.

Lembram aquilo que comento aqui:

deixar fontes fáceis

Então, é isso que estou fazendo, conforme o que vai acontecendo, vou procurando deixar os fontes mais fáceis de mexer.

Olhando a situação atual:
Parece uma LIB universal, sintaxe universal, pra trabalhar com qualquer LIB, tanto faz a LIB.
Decido qual LIB vai ser usada durante a compilação.

Sei lá o que vai acontecer, continuo apenas trabalhando no gerador e aprendendo a usar as LIBs.
Apenas o que já está acontecendo está muito louco.
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

Gerador/criação de telas/executor

Mensagem por JoséQuintas »

Porque desse jeito e porque várias LIBs de uma vez:

Exemplo deste instante:

Os buttons deveriam ser desativados mas não desativa.
Será fonte do aplicativo ? será a LIB ? aonde procurar ?

Compilando com minigui não funciona.
Compilando com hwgui funciona.

Então o fonte do aplicativo está certo.

Falta alguma coisa na minigui.....
button.png
Olhem lá.... ainda não criei a rotina pra minigui de ativar/desativar button.
O que poderia ser um problemão, uma pesquisa complicada em fonte, trata-se apenas de algumas linhas no fonte de ativar/desativar.
Testando todas as LIBs de uma vez, uma ajuda a outra pra resolver problemas.

É como eu disse:
Esse modo de aprender LIB gráfica é o que eu precisava, e acabou ficando melhor do que a encomenda.
Era um saco aprender uma LIB.
Agora está empolgante aprender várias de uma vez, e até usar uma pra empurrar a outra.

Nota: além de não ter, ainda tá com nome errado, devo ter copiado o esqueleto e esquecido de alterar o nome kkkkk
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

Gerador/criação de telas/executor

Mensagem por JoséQuintas »

Código: Selecionar todos

FUNCTION hmge_EnableButton( xDlg, xControl, lEnable )

   SetProperty( xDlg, xControl, "ENABLED", lEnable )

   RETURN Nil
Pronto.
Uma linha e resolvido o problema de infinitas telas.
Pra OOHG é a mesma solução, duas LIBs resolvidas de uma vez.

Agora tem outro: está iniciando com tudo habilitado e não deveria.
Acontece com todas as LIBs.
Então só pode ser o fonte do aplicativo.
Provavelmente falta colocar lá no INIT da Dialog.

Código: Selecionar todos

   CreateDialog( @::oDlg, 0, 0, ::nDlgWidth, ::nDlgHeight, ::cTitle, { || ::EditOff(), ::UpdateEdit() } )
Faltava a chamada de ::EditOff(), resolvidas todas as telas, de todas as LIBs de uma vez.

Estão entendendo como está interessante trabalhar assim ?
Estou trabalhando no "meu aplicativo", apenas corrigindo pequenos bugs, o aplicativo está cada vez mais legal.
E as LIBs GUI ? uma coisinha daqui, uma coisinha dali, estão indo em frente também... TODAS.

Agora é só questão de tempo.

Todo mundo deveria criar um gerador assim, é um ambiente de testes sensacional.
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

Gerador/criação de telas/executor

Mensagem por JoséQuintas »

Pra dar uma idéia de fazer um executor:

Vai partir do DBF ? dbStruct()

Um primeiro esqueleto: get no próprio DBF

Código: Selecionar todos

USE arquivo
aStruList := dbStruct()
CLS
@ 1, 1 SAY ""
FOR EACH aField IN aStruList
   @ Row() + 1, 0 SAY aField[ F_NAME ]
   @ Row(), Col() + 2 GET &( aField[ F_NAME ] )
NEXT
READ
É um ponto de partida.

Pode ser um hobby, pra treinar programação usando coisas não tão comuns.
Pra ficar craque em array, por exemplo.

com uma lógica parecida com a que usei no gerador:

Código: Selecionar todos

USE arquivo
aStruList := dbStruct()
CLS
@ 1, 1 SAY ""
FOR EACH aField IN aStruList
   CriaGet( aField[ F_NAME ] )
NEXT
READ

FUNCTION CriaGet( cNome )
   @ Row() + 1, 0 SAY cNome
   @ Row(), Col() + 2 GET &( cNome )
   RETURN Nil
Uma única função de SAY/GET fazendo tudo.

Basicamente seria isso.
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

Gerador/criação de telas/executor

Mensagem por JoséQuintas »

Olhem que coisa feia mais linda:

Fonte de validação genérica

Código: Selecionar todos

STATIC FUNCTION OkCurrent( aItem, Self )

   LOCAL nSelect, lFound := .T., xValue

   xValue := GetTextboxValue( ::oDlg, aItem[ CFG_FCONTROL ] )
   IF aItem[ CFG_ISKEY ]
      SEEK xValue
      IF ::cSelected == "INSERT"
         IF ! Eof()
            MsgGeneric( "Código já cadastrado" )
            SetFocusAny( ::oDlg, aItem[ CFG_FCONTROL ] ) // hwgui do not need this
            RETURN .F.
         ENDIF
      ELSE
         IF Eof()
            MsgGeneric( "Código não cadastrado" )
            RETURN .F.
         ENDIF
      ENDIF
   ENDIF
   IF ! Empty( aItem[ CFG_VTABLE ] )
      nSelect := Select()
      SELECT ( Select( aItem[ CFG_VTABLE ] ) )
      SEEK xValue
      lFound := ! Eof()
      xValue := FieldGet( FieldNum( aItem[ CFG_VSHOW ] ) )
      SELECT ( nSelect )
      IF ! lFound
         MsgGeneric( "Código não cadastrado" )
         SetFocusAny( ::oDlg, aItem[ CFG_FCONTROL ] ) // hwgui do not need this
      ENDIF
      SetLabelValue( ::oDlg, aItem[ CFG_VCONTROL ], xValue )
   ENDIF

   RETURN lFound
Na compilação com hwgui
hwgui.png
Na compilação com HMG Extended
hmge.png
Na compilação com OOHG
oohg.png
num cadastro de produtos
produto.png
Num cadastro de financeiro
financ.png
Num cadastro de estoque
estoque.png
Nota: pesquisando porque não mostrou produto no estoque

Não é uma coisa feia ?
Mas não é lindo parecer que é um aplicativo pronto ?
E com opção de 3 LIBs diferentes !!!
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

Gerador/criação de telas/executor

Mensagem por JoséQuintas »

Por incrível que pareça, não consigo resolver esse problema da tela de estoque.

As configurações de pesquisa seguem o mesmo esquema.
Isso descarta rotina errada.
Também segui pelo debug e dá certo.

Código: Selecionar todos

   aSeekList := { ;
      { "JPCADASTRO", "CDVENDEDOR", "JPVENDEDOR", "IDVENDEDOR", "VENDNOME" }, ;
      { "JPCADASTRO", "CDPORTADOR", "JPPORTADOR", "IDPORTADOR", "PORTNOME" }, ;
      { "JPCADASTRO", "CDUF",       "JPUF",       "UFUF",       "UFNOME" }, ;
      { "JPPRODUTO",  "IEUNIDADE",  "JPUNIDADE",  "IDUNIDADE",  "UNIDNOME" }, ;
      { "JPPRODUTO",  "IEGRUPO",    "JPGRUPO",    "IDGRUPO",    "GRUPONOME" }, ;
      { "JPESTOQUE",  "ESCADASTRO", "JPCADASTRO", "IDCADASTRO", "CDNOME" }, ;
      { "JPESTOQUE",  "ESPRODUTO",  "JPPRODUTO",  "IDPRODUTO",  "ESNOME" }, ;
      { "JPESTOQUE",  "ESPORTADOR", "JPPORTADOR", "IDPORTADOR", "PORTNOME" }, ;
      { "JPESTOQUE",  "ESGRUPO",    "JPGRUPO",    "IDGRUPO",    "GRUPONOME" }, ;
      { "JPFINANC",   "FICADASTRO", "JPCADASTRO", "IDCADASTRO", "CDNOME" }, ;
      { "JPFINANC",   "FIPORTADOR", "JPPORTADOR", "IDPORTADOR", "PORTNOME" } }
A criação das telas seguem o mesmo esquema.
Mesma coisa, se funciona pra um, deveria funcionar pra todos.
É só no estoque que não está funcionando, e mesmo assim, ESCADASTRO funciona, os outros 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/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Gerador/criação de telas/executor

Mensagem por JoséQuintas »

ACHEI

Como pude esquecer ....
Estava compilando com HWGUI, foi só compilar com minigui.
O problema só aconteceu com HWGUI.

Código: Selecionar todos

         STYLE   WS_BORDER // TRANSPARENT
Não sei porque, tinha colocado de volta esse TRANSPARENT.
Com isso HWGUI não funciona direito.

Se não fosse o uso de várias LIBs, não acharia isso nunca.
Já estava começando a pensar em reescrever tudo....
hwguis.png
Vou ter que deixar esse jeito feio de 3D até ajustarem borda na hwgui, senão, daqui uns tempos vou esquecer e pensar que é problema de novo.
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

Gerador/criação de telas/executor

Mensagem por Itamar M. Lins Jr. »

Olá!
Na Hwgui use STYLES onde quiser ai é no @ say ?

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

Gerador/criação de telas/executor

Mensagem por Itamar M. Lins Jr. »

Olá!
STYLE WS_BORDER COLOR 10485760 BACKCOLOR 12507070
Tem cores...

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Responder