Clipper On Line • Ver Tópico - LIB console imitando gráfico

LIB console imitando gráfico

Projeto Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

 

LIB console imitando gráfico

Mensagempor Ruben Dario » 25 Abr 2016 12:24

Saludos

Puedes mostrar el .hbp como se construye el ejecutable.
Ruben Dario
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 115
Data de registro: 14 Jun 2015 23:19
Cidade/Estado: Colombia
Curtiu: 3 vezes
Mens.Curtidas: 0 vez

LIB console imitando gráfico

Mensagempor asimoes » 25 Abr 2016 12:40

Quintas,

Isso tá evoluindo para uma lib by Quintas

Antes que eu me esqueça.

Parabéns pela sua contribuição na Minigui Extended (versão 16.04)

* New: 'Simple PDF Class' sample. Based upon a contribution of Jose Quintas.
Adapted for Minigui Extended by Grigory Filatov <gfilatov@inbox.ru>
(see in folder \samples\Advanced\HaruPDF_2)
â–º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 de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

LIB console imitando gráfico

Mensagempor JoséQuintas » 25 Abr 2016 15:02

Nem sabia disso, do PDF, legal lembrarem meu nome.

Sobre o hbp dos controles Windows:
É só pra demonstração.
Alguns controles já existem prontos na gtwvg.
Alguns controles precisam mais código fonte pra funcionar perfeitamente.
Por exemplo o calendário, não pode ser feito resize, e por isso o resultado é imprevisível ao redimensionar tela.

A intenção não é uma nova LIB, apesar que gostaria de fazer mudanças pesadas na GTWVG, por exemplo remover os controles WVT* que andam causando problemas por aí.

Vou anexar o ZIP inteiro que postei no harbour-users. tstpushbutton.prg não deveria estar nele.

Algumas referências que usei e ainda ando olhando (além da própria gtwvg, gtwvw e oohg):

http://winapi.foosyerdoos.org.uk/info/common_cntrls.php

https://msdn.microsoft.com/en-us/library/windows/desktop/bb773169(v=vs.85).aspx

https://code.msdn.microsoft.com/CppWindowsCommonControls-9ea0de64

Neste último link, vários links adicionais, incluindo o primeiro.
Anexos
tstjpa.zip
(11.43 KiB) Baixado 100 vezes
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18013
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

LIB console imitando gráfico

Mensagempor JoséQuintas » 26 Abr 2016 11:22

Fui usar dois controles existentes na GTWVG e me perdi.
Seria o equivalente ao "get" (ou textbox), um pra linha simples e outro pra multilinha.

Tentem entender esses dois controles, como é que atribui ou recupera conteúdo do controle.
Eu ainda não entendi.
São WvgSLE() e WvgMLE()

Fazer novo e funcionando consegui, mas entender esses dois que estão prontos ainda não.
Acho que complicaram demais.

Neste projeto tem tstEdit() e tstEditMultiline().
O que estou comentando no post é sobre WvgSLE() e WvgMLE(), que já existem na GTWVG, e seriam os equivalentes.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18013
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

LIB console imitando gráfico

Mensagempor JoséQuintas » 26 Abr 2016 16:03

Agora apliquei um pouco de multithread, sempre usando janela default da gtwvg.
Poderia ser janela de diálogo, que é o mais comum.

gtwvg.png


Foi só a multithread básica, executando o módulo 3 vezes.

PROCEDURE Main

   hb_ThreadStart( { || module() } )
   hb_ThreadStart( { || module() } )
   hb_ThreadStart( { || module() } )
   hb_ThreadWaitForAll()

   RETURN

PROCEDURE Module

   LOCAL oControl, nKey := 0, oTime

   hb_gtReLoad( "WVG" )
   SetMode( 25, 90 )
   SetColor("N/W")
   CLS
...
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18013
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

LIB console imitando gráfico

Mensagempor JoséQuintas » 26 Abr 2016 16:44

E quem quiser sintaxe igual minigui é só fazer igual minigui:
- Criar uma função Define de cada controle com todos os parâmetros possíveis
- Criar os #define ou #command pra converter
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18013
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

LIB console imitando gráfico

Mensagempor JoséQuintas » 27 Abr 2016 01:00

Baixei o MSDN pra VS2008, e encontrei referência mais completa, que não tinha encontrado pela internet, por exemplo aquele botão com flecha.

msdn.png


Acho que vai dar pra brincar mais.... rs
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18013
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

LIB console imitando gráfico

Mensagempor JoséQuintas » 27 Abr 2016 11:10

A coisa fica mais interessante ainda pesquisando na internet.

msdatagrid.jpg


Costuma ser relacionado com VB, mas pode ser usado no C++.

http://www.codeproject.com/Articles/1339/Using-MS-DataGrid-control-with-ADO

http://www.codeguru.com/cpp/controls/controls/gridcontrol/article.php/c5225/Using-the-Microsoft-Flexgrid-in-Visual-C.htm

Seria algo equivalente ao TBrowse, mas pra uso com ADO.
Não sei se vale a pena investir nisso, mas achei interessante saber que a possibilidade existe.

The Microsoft DataGrid is usually seen associated with VB when you start searching for information on how to implement the MS DataGrid in Visual C++. There is not a lot of information out there and therefore many Visual C++ programmers tend not to use this excellent and easy to use database control.


When I had to use the flexgrid for the first time, I was frustrated to find out that no proper documentation existed on the Net. The ones available were too complicated for me to understand. And the ones that were easy were in VB. This article is to help persons who are going to use the flexgrid in their applications using VC++


Depois desses dois veio o hierarquical flexgrid, que não precisa vincular a nenhum banco de dados.
Só pra complementar a informação.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18013
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

LIB console imitando gráfico

Mensagempor JoséQuintas » 27 Abr 2016 15:55

Mais alguns.

gtwvg.png


É tudo na base do "whatsapp"... rs.... por mensagens.

   oControl := TstTrackbar():New()
   oControl:Create( , , { -20, -61 }, { -3, -15 } )
   oControl:SendMessage( TBM_SETRANGE, 1, WIN_MAKELONG( 1, 10 ) )
   oControl:SendMessage( TBM_SETSEL, 0, WIN_MAKELONG( 1, 10 ) )
   oControl:SendMessage( TBM_SETPOS, 1, 1 )


Só lembrando: estou usando controles vazios, sem fonte próprio, por isso o uso de API no fonte que usa os controles.
Depois é separar cada controle num fonte próprio, e ir recheando com funções que fazem a chamada da API.
Nesse fonte próprio pode até existir valor default pra Mínimo e Máximo.
E "funções" pra facilitar, como SetRange(), SetValue(), OnClickUp(), OnClickDown(), etc.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18013
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

LIB console imitando gráfico

Mensagempor JoséQuintas » 28 Abr 2016 11:55

Mais dois, parecem iguais mas não são.
Um pra ícone e outro pra bitmap.
Tem diferença para o Windows.

gtwvg.png


Inventário do teste:

tstbitmap - pra mostrar imagem formato bitmap (é o ícone JPA da direita)
tstbutton - button (é o ok)
tstcheckbox - pra marcar ou não (é o satisfied?)
tstcombobox - pra escolher numa lista (é aonde está o first)
tstcommandlink - um tipo de button igual paciência spider (é onde está o cmd link)
tstedit - tipo um "get" mas sem recursos de picture, etc. (é onde estão o "this is a text field" e o número)
tsteditmultiline - tipo um memoedit (é o maior com texto)
tstframe - apenas um retângulo pra contornar alguma coisa (é o que seriam as linhas horizontais e verticais)
tstgroupbox - um contorno com ou sem legenda (é o que agrupa a seleção Harbour, Clipper, etc)
tsticon - pra mostrar imagem formato ícone (é o JPA da esquerda)
tstmonthcalendar - calendário (o próprio)
tstprogressbar - barra de progresso (no teste, o estilo marquee, que apenas movimenta)
tstradiobutton - pra escolher entre opções (é onde escolhe entre Harbour, Clipper, etc)
tststatusbar - barra de status (é o do rodapé)
tsttext - texto simples (os textos que não pertencem aos anteriores)
tsttrackbar - botão deslizante (abaixo e direita, parece um "controle de volume")
tstupdown - setas pra cima/baixo ou esquerda/direita (o último à direita, duas setas)

total 17

Se juntar WvgListbox, WvgTreeview, WvgScrollbar, WvgMenu chega a 21 controles

As linhas horizontal/vertical, dependem só de verificar como "pular" a conversão, pra largura não ficar igual a uma linha.
É uma alteração relativamente simples, mas em C...
A rotina de conversão só aceita linha/coluna em inteiros, basta que aceite em decimais e pronto. Largura de 0.2 por exemplo.

Apesar de eu ter criado alguns controles que não existiam na gtwvg, o trabalho maior foi do Pritpal Bedi mesmo (e da Microsoft).
Se não fossem as rotinas existentes pra usar via PRG, eu não teria conseguido nada.

Comprovado: a gtwvg tem futuro.

Pra quem acha que nasci sabendo.... lembrando meus primeiros contatos com gtwvg.

2011, não sabendo nem como eliminar a janela console
http://www.pctoledo.com.br/forum/viewtopic.php?f=4&t=12380&hilit=gtwvg

2012, brigando com funcionamento
http://www.pctoledo.com.br/forum/viewtopic.php?f=47&t=13394&hilit=gtwvg

2013, um preview com button
http://www.pctoledo.com.br/forum/viewtopic.php?f=4&t=14081&hilit=gtwvg

2014, uma calculadora
http://www.pctoledo.com.br/forum/viewtopic.php?f=43&t=14562&hilit=gtwvg

2015, comentando sobre o usuário criar seus próprios controles
http://www.pctoledo.com.br/forum/viewtopic.php?f=47&t=16207&hilit=gtwvg

2016, este post.

Foi como eu comentei no fórum:
Deixei LIB gráfica de lado, investi em melhorar os fontes, e até adotei -w3 -es2.
Até hoje só usei um único controle: o pushbutton.
Demorei pra perceber, mas acabei melhorando a principal ferramenta que usamos: nós mesmos.
Foi melhor do que ficar quebrando a cabeça com LIBs gráficas.... rs

Por isso recomendo a todos investir nos fontes.
Melhoram sem perceber.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18013
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

LIB console imitando gráfico

Mensagempor JoséQuintas » 30 Abr 2016 10:19

Controle tstBitmap

CREATE CLASS TstBitmap INHERIT TstAny
   VAR ClassName  INIT "STATIC"
   VAR ObjType    INIT objTypeStatic
   VAR Style      INIT WIN_WS_CHILD + WIN_WS_GROUP + SS_BITMAP + SS_CENTERIMAGE + BS_NOTIFY
   VAR nIconBimap INIT WIN_IMAGE_BITMAP
   ENDCLASS


uso (imagem em resource)

   oControl := TstBitmap():New()
   oControl:cImage := "tstbmp"
   oControl:Create( , , { -19, -41 }, { -3, -8 } )
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18013
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

LIB console imitando gráfico

Mensagempor JoséQuintas » 30 Abr 2016 10:23

controle tstButton

CREATE CLASS TstButton INHERIT TstAny
   VAR className INIT "BUTTON"
   VAR objType   INIT objTypePushButton
   VAR style     INIT WIN_WS_CHILD + BS_PUSHBUTTON + BS_NOTIFY + BS_FLAT
   ENDCLASS


uso:

   oControl := TstButton():New()
   oControl:cText := "OK"
   oControl:Create( , , { -20, -50 }, { -1, -8 } )
   wvgSetAppWindow():Refresh()
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18013
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

LIB console imitando gráfico

Mensagempor JoséQuintas » 30 Abr 2016 10:24

tstcheckbox

CREATE CLASS TstCheckBox INHERIT TstAny
   VAR ClassName INIT "BUTTON"
   VAR objType   INIT objTypeCheckBox
   VAR Style     INIT WIN_WS_CHILD + WIN_WS_TABSTOP + BS_AUTOCHECKBOX
   ENDCLASS


uso

   oControl := Tstcheckbox():New()
   oControl:cText := "Satisfied?"
   oControl:Create( , , { -19, -15 }, { -1, -10 } )

   oControl := TstCheckBox():New()
   oControl:cText := "Not Satisfied?"
   oControl:Style += BS_LEFTTEXT
   oControl:Create( , , { -21, -15 }, { -1, -10 } )
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18013
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

LIB console imitando gráfico

Mensagempor JoséQuintas » 30 Abr 2016 10:25

tstCombobox

CREATE CLASS TstCombobox INHERIT TstAny
   VAR ClassName INIT "COMBOBOX"
   VAR ObjType   INIT objTypeComboBox
   VAR Style     INIT WIN_WS_CHILD + WIN_WS_BORDER + WIN_WS_TABSTOP + WIN_WS_GROUP + CBS_DROPDOWNLIST
   ENDCLASS


uso

   oControl := TstComboBox():New()
   oControl:Create( , , { -5, -43 }, { -6, -17 } )
   oControl:SendMessage( CB_ADDSTRING, 0, "First" )
   oControl:SendMessage( CB_ADDSTRING, 0, "Second" )
   oControl:SendMessage( CB_ADDSTRING, 0, "Third" )
   oControl:SendMessage( CB_ADDSTRING, 0, "Fourth" )
   oControl:SendMessage( CB_ADDSTRING, 0, "Fifth" )
   oControl:SendMessage( CB_SETCURSEL, 0 /* first */, 0 )
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18013
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

LIB console imitando gráfico

Mensagempor JoséQuintas » 30 Abr 2016 10:27

tstCommandLink

CREATE CLASS TstCommandLink INHERIT TstAny
   VAR ClassName INIT "BUTTON"
   VAR objType   INIT objTypePushButton
   VAR Style     INIT WIN_WS_CHILD + WIN_WS_BORDER + WIN_WS_TABSTOP + WIN_WS_GROUP + BS_COMMANDLINK
   ENDCLASS


uso

   oControl := TstCommandLink():New()
   oControl:cText := "Cmd Link"
   oControl:Create( , , { -13, -63 }, { -5, -15 } )
   oControl:SendMessage( BCM_SETNOTE, 0, "Vista and Above" )
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18013
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Anterior Próximo



Retornar para Harbour

Quem está online

Usuários vendo este fórum: Google [Bot] e 6 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