13 Set 2020 00:40
13 Set 2020 11:40
Vi nos exemplos números bem maiores do que os usados no modo console, mas não entendi bem qual a lógica desses dados.
13 Set 2020 22:01
13 Set 2020 22:31
o Harbour trabalha com linhas/colunas, e a Hwgui trabalha com pontos, que são muito menores que uma linha/coluna. É isso?
Quem trabalha com linhas/colunas é o ambiente que vai ser executado nosso aplicativo. No caso a linha de comando do win10(CMD/prompt de comando). Que vai passar a ser igual ao LINUX ( terminal de comando ) em breve.trabalha com linhas/colunas,
Hwgui seja mais precisa e detalhada, além de se adaptar melhor aos diversos tamanhos de monitores, correto?
Mas o que eu ainda não entendi: como faço para desenhar a tela com textos comuns, do tipo @ say? Qual é o parâmetro? Quanto seria o maxrow() X maxcol()?
13 Set 2020 23:44
IF ADOconecta( nProvAcoes, 5 )
cProc=conexao:execute("select dtcotacao,cotacao,quemcad,compvenda,conta from acoes where codigo='"+cod+"' AND status='M' order by dtcotacao")
if cProc:recordcount()>0
@ 22,5 say "Ordens marcadas:" size 500,45
a=34
do while !cProc:Eof()
@ a,5 say cProc:Fields("dtcotacao"):Value size 500,45
@ a+10,5 say cProc:Fields("quemcad"):Value size 500,45
@ a+20,5 say cProc:Fields("compvenda"):Value size 500,45
@ a+30,5 say cProc:Fields("cotacao"):Value size 500,45
@ a+40,5 say cProc:Fields("conta"):Value size 500,45
a=a+50
cProc:MoveNext()
enddo
endif
endif
14 Set 2020 08:10
15 Set 2020 14:17
* -----------------------------------------------------------------
* Programa...: ASAPREV.PRG
* Finalidade.: Controlar o Menu de Op??es do Sistema da ASAPREV
* Autor......: Alexandre Sim?es
* Data.......: 09/2010 at? presente data
* -----------------------------------------------------------------
* Manuten??o atual por: Alexandre Sim?es (SET/2010 A PRESENTE DATA)
* C?digo migrado para Harbour 32Bit
* -----------------------------------------------------------------
* Harbour : 3.4 FORK
* Compilador : LLVM/CLANG 9.0 (32-bit)
* Lib Gr?fica: HwGui 2.17 (FORK)
* -----------------------------------------------------------------
THREAD STATIC ThisFormMain
#include "hwgui.ch"
#include "inkey.ch"
#include "dbinfo.ch"
#include "fileio.ch"
#include "hbclass.ch"
#include "hbver.ch"
#include "hbdyn.ch"
#include "hbthread.ch"
//#define WM_QUERYENDSESSION 0x0011
//#define WM_ENDSESSION 0x0016
//#define WM_ENDSESSION 22
#define NIIF_INFO 0x00000001
#define NIIF_WARNING 0x00000002
#define NIIF_ERROR 0x00000003
#define NIIF_USER 0x00000004
#define HB_SYMBOL_UNUSED( symbol ) ( symbol := ( symbol ) )
FUNCTION MAIN()
PUBLIC oDEMO
WITH OBJECT oDEMO := ClDEMO():New()
:DEMO()
END
ANNOUNCE Errors2
RETURN Nil
CREATE CLASS ClDEMO
PROTECTED :
EXPORTED :
VAR nWidth AS INTEGER INIT Nil PROPERTY
VAR nHeight AS INTEGER INIT Nil PROPERTY
VAR nOpcao AS INTEGER INIT 1 PROPERTY
VAR nTmpSistema AS INTEGER INIT 60 PROPERTY
VAR nLoop AS INTEGER INIT 1 PROPERTY
VAR nTimeOut AS INTEGER INIT -1 PROPERTY
VAR aOpcao AS ARRAY INIT {} PROPERTY
VAR aCompDateTime AS ARRAY INIT {} PROPERTY
VAR aEstacaoFoto AS ARRAY INIT {"PC2"} PROPERTY
VAR oIcon001 AS OBJECT INIT Nil PROPERTY
VAR oIcon002 AS OBJECT INIT Nil PROPERTY
VAR oIcon003 AS OBJECT INIT Nil PROPERTY
VAR oIcon004 AS OBJECT INIT Nil PROPERTY
VAR oIcon005 AS OBJECT INIT Nil PROPERTY
VAR oIcon006 AS OBJECT INIT Nil PROPERTY
VAR oIconCEP AS OBJECT INIT Nil PROPERTY
VAR oIconOpe AS OBJECT INIT Nil PROPERTY
VAR oOpcoes AS OBJECT INIT Nil PROPERTY
VAR ThisFormInit AS OBJECT INIT Nil PROPERTY
METHOD DEMO()
METHOD AppSetup()
METHOD SaidaSistema()
METHOD ChamaRotina( cRotina, lGui )
ENDCLASS
METHOD DEMO()
LOCAL oStatus1, oMenu1, oToolbar1, oToolbutton1, oToolbutton2, oToolbutton3, oToolbutton4 ;
, oToolbutton5
LOCAL oIcon, oFont1, oFont2, oFont3, oFont4
LOCAL nIconIndex
LOCAL nHandleFile, nWidthW, nHeightH, nWidth, nHeight, aListBox:={}, oElemento
PUBLIC oWin
PUBLIC cDirSis := Hb_DirBase() + [NETIO\SERVER5\DB\], ;
cDirTMP := Hb_GetEnv("TEMP") + Hb_Ps()
PUBLIC cVersao
PUBLIC Tecla
PUBLIC cUsuSis
PUBLIC cSenSis
PUBLIC cCor_0101
PUBLIC cCor_2424
PUBLIC iGiro := 1
PUBLIC cArqPrint
PUBLIC aTexto := {}, oEdit
PUBLIC nRed := Round(212 / 255, 2), ;
nGreen := Round(255 / 255, 2), ;
nBlue := Round(255 / 255, 2)
PUBLIC lPaint := .F.
PUBLIC aAzul := {0, 0, Round(255/255, 2)}
PUBLIC aVermelho := {Round(255/255, 2), 0, 0}
PUBLIC aVerde := {0, Round(255/255, 2), 0}
PUBLIC aPreto := {0, 0, 0}
PUBLIC AzulHTML := '<span style="color:#0000FF">'
PUBLIC VermelhoHTML := '<span style="color:#FF0000">'
PUBLIC QuebraHTML := "<br>"
PUBLIC cAlineL := '<td align="left">'
PUBLIC cAlineC := '<td align="center">'
PUBLIC cAlineR := '<td align="right">'
PUBLIC oThisForm
PUBLIC cEstacaoCobranca := Hb_GetEnv( "COMPUTERNAME" )
PUBLIC cMens_, ;
cCor__, ;
nLin__, ;
nCol__
PUBLIC xMedia
PUBLIC oAchoice, ;
oEditor, ;
oMemo, ;
oBrowse, ;
oGuiProc, ;
oClRede, ;
oClShow, ;
oClJustificaTexto
PUBLIC pWindowGTI
PUBLIC N_BLUE := 16711680
PUBLIC N_DARKBLUE := 10027008
PUBLIC N_WHITE := 16777215
PUBLIC N_CYAN := 16776960
PUBLIC N_BLACK := 0
PUBLIC N_RED := 255
PUBLIC N_GREEN := 32768
PUBLIC N_GRAY := 8421504
PUBLIC N_YELLOW := 65535
PUBLIC N_CLEANBLUE := 16771276
PUBLIC N_CLEANGRAY := 12632256
PUBLIC N_BLUE001 := 16777172
*
PRIVATE cUserName := Hb_GetEnv("USERNAME")
PRIVATE aPrn := Win_PrinterList()
PRIVATE oSayMsg0
PRIVATE oSayMsg1
PRIVATE oSayMsg2
PRIVATE oSayMsg3
PRIVATE oBar
PRIVATE nTempoInicio
::AppSetup()
nIconIndex := NIIF_USER
hwg_SetColorInFocus( .T., 16711680, 8388607 )
hwg_SetTooltipBalloon( .T. )
oFont1 := HFont():Add( "Georgia", 15, -30, , 0 )
oFont2 := HFont():Add( "Tahoma", 8, -20, , 0 )
oFont3 := HFont():Add( "Tahoma", 6, -20, , 0 )
oFont4 := HFont():Add( "Tahoma", 6 )
oIcon := HIcon():AddResource("ICON_A", 24, 24)
nWidth := hwg_GetDesktopWidth()
nHeight := hwg_GetDesktopHeight()
::nWidth := hwg_GetDesktopWidth()
::nHeight := hwg_GetDesktopHeight()
lErro := .F.
cCor_0101 := "B/W*"
cCor_0202 := "W+/B*"
cCor_0322 := "W+/B,B/GR*,,,N/W"
cCor_2424 := "W+/B*"
::aOpcao := {}
INIT WINDOW oWin ;
MAIN ;
TITLE "Agenda" ;
AT 0, 0 ;
SIZE hwg_GetDesktopWidth() , hwg_GetDesktopHeight() ;
FONT HFont():Add( 'Tahoma', 0 , -13, 400 ) ;
ICON oIcon ;
STYLE WS_CAPTION + WS_SYSMENU + WS_MAXIMIZEBOX ;
ON INIT {|this| hwg_Keyb_Event( VK_UP ), ;
_CONTROLPOS_C_SETSTYLE_( oWin:handle, WS_SIZEBOX, .T. ) ;
} ;
ON EXIT {|this| ::SaidaSistema() }
ThisFormMain := oWin
@ 0,0 BITMAP Bitmap1 ;
SHOW "\lixo\WALLPAPER.JPG" ;
OF ThisFormMain ;
STRETCH 0 ;
SIZE nWidth, nHeight - 65
public vers :="17/06/20"
sh="S"
snh=654
*#require "rddsql"
*#require "sddodbc"
*#include "dbinfo.ch"
*#include "hbcompat.ch"
*#include "inkey.ch"
*#include "hbgtinfo.ch"
* #define RDDI_CONNECT 1001
* #define RDDI_DISCONNECT 1002
* #define RDDI_EXECUTE 1003
REQUEST SQLMIX, SDDODBC, DBFNTX
* ANNOUNCE RDDSYS
pargerais()
save scre to tl0
MENU OF ThisFormMain
MENUITEM 'Sair do Sistema' ID 32129 ACTION {|| ::SaidaSistema() }
MENUITEM 'Agenda financeira' ID 32001 ACTION {|| ::ChamaRotina( "CONTAGEN34()", .F. ) }
* MENUITEM 'Contas bancrias' ID 32002 ACTION {|| ::ChamaRotina( "BANCOS34()", .F. ) }
MENUITEM 'Compromissos' ID 32003 ACTION {|| ::ChamaRotina( "AGCOM34()", .F. ) }
* MENUITEM '&Graph1' ID 32004 ACTION Graph1()
MENUITEM 'Cotacoes' ID 32005 ACTION Cotacoes34()
MENUITEM '&Graph2' ID 32006 ACTION Graph2()
ENDMENU
ACTIVATE WINDOW oWin MAXIMIZED CENTER ON ACTIVATE {|| .T. }
RETURN Nil
METHOD SaidaSistema()
LOCAL lSair := .F.
hwg_ExitProcess()
RETURN lSair
Static Function Graph1
Local oModDlg, oFont := HFont():Add( "MS Sans Serif",0,-13 ), oGraph
Local i, aGraph[1]
aGraph[1] := {}
* FOR i := -40 TO 40
* Aadd( aGraph[1], { i, hwg_cos(i/10) } )
Aadd( aGraph[1], { day(date()-6), 5 } )
Aadd( aGraph[1], { day(date()-5), 6 } )
Aadd( aGraph[1], { day(date()-4), 7 } )
Aadd( aGraph[1], { day(date()-3), 8 } )
Aadd( aGraph[1], { day(date()-2), 9 } )
Aadd( aGraph[1], { day(date()-1), 10 } )
Aadd( aGraph[1], { day(date()), 11 } )
* NEXT
INIT DIALOG oModDlg CLIPPER TITLE "Gr?fico" ;
AT 410,30 SIZE 300,300 ;
FONT oFont
@ 50,30 GRAPH oGraph DATA aGraph SIZE 200,100 COLOR 65280
// oGraph:oPen := HPen():Add( PS_SOLID,2,oGraph:tcolor )
@ 90,250 BUTTON "Close" ;
SIZE 120,30 ;
ON CLICK {||EndDialog()}
ACTIVATE DIALOG oModDlg
Return Nil
Function Graph2(cod)
Local oModDlg, oFont := HFont():Add( "MS Sans Serif",0,-13 ), oGraph
Local i, aGraph[1]
local cProc, nCotMax, dDtMax, nCotMin,dDtMin, nCotMax30d, dDtMax30d, nCotMin30d, dDtMin30d, nCotAgora, dDtAgora
private conexao
IF ADOconecta( nProvAcoes, 5 )
cProc=conexao:execute("select dtcotacao,cotacao from acoes where codigo='"+cod+"' AND cotacao<9999 AND compvenda=0 order by cotacao DESC limit 1")
nCotMax=cProc:Fields("cotacao"):Value
dDtMax=cProc:Fields("dtcotacao"):Value
cProc=conexao:execute("select dtcotacao,cotacao from acoes where codigo='"+cod+"' AND cotacao>0 AND compvenda=0 order by cotacao limit 1")
nCotMin=cProc:Fields("cotacao"):Value
dDtMin=cProc:Fields("dtcotacao"):Value
cProc=conexao:execute("select dtcotacao,cotacao from acoes where codigo='"+cod+"' AND cotacao<9999 AND dtcotacao>'"+dtsql(date()-30)+"' AND compvenda=0 order by cotacao DESC limit 1")
nCotMax30d=cProc:Fields("cotacao"):Value
dDtMax30d=cProc:Fields("dtcotacao"):Value
cProc=conexao:execute("select dtcotacao,cotacao from acoes where codigo='"+cod+"' AND dtcotacao>'"+dtsql(date()-30)+"' AND cotacao>0 AND compvenda=0 order by cotacao limit 1")
nCotMin30d=cProc:Fields("cotacao"):Value
dDtMin30d=cProc:Fields("dtcotacao"):Value
cProc=conexao:execute("select dtcotacao,cotacao from acoes where codigo='"+cod+"' AND dtcotacao>'"+dtsql(date()-30)+"' AND cotacao>0 AND cotacao<9999 AND compvenda=0 order by dtcotacao DESC limit 1")
nCotAgora=cProc:Fields("cotacao"):Value
dDtAgora=cProc:Fields("dtcotacao"):Value
cProc:Close()
conexao:close()
Endif
aGraph[1] := {}
Aadd( aGraph[1], { day(dDtMin), nCotMin } )
Aadd( aGraph[1], { day(dDtMax), nCotMax } )
Aadd( aGraph[1], { day(dDtMin30d), nCotMin30d } )
Aadd( aGraph[1], { day(dDtMax30d), nCotMax30d } )
Aadd( aGraph[1], { day(dDtAgora), nCotAgora } )
INIT DIALOG oModDlg CLIPPER TITLE "Graph" ;
AT 38,5 SIZE 1310,800 ;
FONT oFont
@ 9,15 say cod size 500,45
@ 1087,384 say alltrim(str(nCotMin)) size 100,45
@ 1127,384 say alltrim(str(nCotMax)) size 100,45
@ 1166,384 say alltrim(str(nCotMin30d)) size 100,45
@ 1207,384 say alltrim(str(nCotMax30d)) size 100,45
@ 1250,384 say alltrim(str(nCotAgora)) size 100,45
@ 1090,647 say substr(dtoc(dDtMin),1,2) size 100,45
@ 1090,666 say substr(dtoc(dDtMin),4,2) size 100,45
@ 1090,684 say substr(dtoc(dDtMin),9,2) size 100,45
@ 1130,647 say substr(dtoc(dDtMax),1,2) size 100,45
@ 1130,666 say substr(dtoc(dDtMax),4,2) size 100,45
@ 1130,684 say substr(dtoc(dDtMax),9,2) size 100,45
@ 1170,647 say substr(dtoc(dDtMin30d),1,2) size 100,45
@ 1170,666 say substr(dtoc(dDtMin30d),4,2) size 100,45
@ 1170,684 say substr(dtoc(dDtMin30d),9,2) size 100,45
@ 1212,647 say substr(dtoc(dDtMax30d),1,2) size 100,45
@ 1212,666 say substr(dtoc(dDtMax30d),4,2) size 100,45
@ 1212,684 say substr(dtoc(dDtMax30d),9,2) size 100,45
@ 1255,647 say substr(dtoc(dDtAgora),1,2) size 100,45
@ 1255,666 say substr(dtoc(dDtAgora),4,2) size 100,45
@ 1255,684 say substr(dtoc(dDtAgora),9,2) size 100,45
@ 1070,410 GRAPH oGraph DATA aGraph SIZE 230,230 COLOR 65280
oGraph:nType := 2
IF ADOconecta( nProvAcoes, 5 )
cProc=conexao:execute("select dtcotacao,cotacao,quemcad,compvenda,conta from acoes where codigo='"+cod+"' AND status='M' order by dtcotacao")
if cProc:recordcount()>0
@ 22,5 say "Ordens marcadas:" size 500,45
a=34
do while !cProc:Eof()
@ a,5 say cProc:Fields("dtcotacao"):Value size 500,45
@ a+10,5 say cProc:Fields("quemcad"):Value size 500,45
@ a+20,5 say cProc:Fields("compvenda"):Value size 500,45
@ a+30,5 say cProc:Fields("cotacao"):Value size 500,45
@ a+40,5 say cProc:Fields("conta"):Value size 500,45
a=a+50
cProc:MoveNext()
enddo
endif
endif
* @ 130,250 BUTTON "Close" ;
* SIZE 130,30 ;
* ON CLICK {||EndDialog()}
ACTIVATE DIALOG oModDlg
Return Nil
Function velhaCotacoes
local opcotvar
private oRs, conexao
private dti := date()
private dtf := date()
GetDt()
/*
if seconds()<30000
dt=date()-1
else
dt=date()
endif
dtf=date()
*/
opcotvar=2
*?procline(0)
*?"Conferir:"
*inkey(11)
* @ 11,29 say "Data inicial:"get dt
* @ 12,29 say "Data final:"get dtf
* read
*?procline(0)
*inkey(11)
IF ADOconecta( nProvAcoes, 5 )
oRs=conexao:execute("SELECT codigo,dtcotacao,hrcotacao,cotacao,quemcad,dtvisto,hrvisto,dtver from acoes WHERE dtcotacao>='"+dtsql(dt-3)+"' AND dtcotacao<'"+dtsql(dtf+1)+"' AND compvenda=0"+if(opcotvar=2," AND quemcad like 'var-%'","")+if(opcotvar=3," ORDER by dtvisto,hrvisto"," ORDER by dtcotacao,hrcotacao"))
browseado()
oRs:Close()
conexao:close()
Endif
Return .t.
function enddialog
return
METHOD ChamaRotina( cRotina, lGui )
THREAD STATIC lInicio := .F., lContinua := .T., oErro
Hb_Default(@lGui, .F.)
If ! lGui
If ! lInicio
lInicio := .T.
nThread := Hb_ThreadStart( Hb_BitOr( HB_THREAD_INHERIT_PUBLIC, HB_THREAD_INHERIT_PRIVATE, HB_THREAD_INHERIT_MEMVARS ), {|| &cRotina.} )
// DO WHILE .T.
// IF Hb_ThreadWait( nThread, 0.1, .T. ) == 1
// Exit
// ENDIF
// hwg_DoEvents()
// ENDDO
//Eval( {|| &cRotina. } )
If pWindowGTI != Nil
wapi_DestroyWindow( pWindowGTI )
Endif
lInicio := .F.
Endif
Endif
RETURN Nil
/*
function logerro
return
function sendmessage
return
*function enddialog
*return
*/
function cotacoes34
oJanela := Janela():New():IniciaJanelaRotina( "Cotacoes" )
cotacoes()
return .t.
function agcom34
oJanela := Janela():New():IniciaJanelaRotina( "Compromissos" )
agcom()
?procline(0)
inkey(11)
return .t.
function bancos34
oJanela := Janela():New():IniciaJanelaRotina( "Bancos" )
bancos()
return .t.
function contagen34
oJanela := Janela():New():IniciaJanelaRotina( "Agenda financeira" )
contagen()
return .t.
function envmailkativ(dstmail,arqmand,contmail,arqanx,inc)
local ret :="S"
*return .f.
*if "RODRIGO"$upper(netname()) .or. "CAMYLLA"$upper(netname()) .or. "INACIO"$upper(netname()) .or. "VANESSA"$upper(netname()) .or. "LUIZ"$upper(netname()) .or. "MVAZ"$upper(netname())
* return .f.
*else
*?"Entrou no envmailkativ; ver se vai dar erro:"
*?netname()
*inkey(11)
*endif
bError := ErrorBlock( {|e| Break(e) } )
begin sequence
if inc=4 .and. us="I"
?dstmail
?arqmand
?contmail
?arqanx
?procline(0)
?"Ver se vai mandar pelo envmailkativ"
inkey(5)
endif
* if hb_sendmail("smtp"+if(upper(netname())="LUIZ" .or. "MVAZ"$upper(netname()),"i","")+".kinghost.net",587,"programa@inacio.kinghost.net",{dstmail},,,memoread(arqmand)+ansi(contmail),assuntomail,{arqanx},"programa@inacio.kinghost.net","piuma2018","pop.kinghost.net",,,.T.,.t.,,,)=.f.
if tip_mailsend("smtp"+if(upper(netname())="LUIZ" .or. "MVAZ"$upper(netname()),"i","")+".kinghost.net",587,"programa@inacio.kinghost.net",{dstmail},,,memoread(arqmand)+ansi(contmail),assuntomail,{arqanx},"programa@inacio.kinghost.net","piuma2018","pop.kinghost.net",,,.T.,.t.,,,)=.f.
if inc=4 .and. us="I"
?dstmail
?arqmand
?contmail
?arqanx
?procline(0)
?"N?o mandou pelo envmailkativ"
inkey(5)
endif
*?"Retornou falso"
*inkey(11)
*inkey(11)
ret="F"
if us="I" .and. inc#4
@ maxrow()-1,1 say "Aguarde... (mandmail n?o enviou pelo programa@inacio.kinghost.net)"
endif
*else
*?"Enviou"
*inkey(11)
*inkey(11)
endif
recover using e
cMessage := ErrorMessage(e)
logerro()
mandmail1("error.log","Erro na fun??o envmailkativ contornado com o recover do begin sequence")
ret="F"
endsequence
ErrorBlock( bError )
if ret="F"
return .f.
endif
return .t.
function envmailking(dstmail,arqmand,contmail,arqanx,inc)
local ret :="S"
*if "RODRIGO"$upper(netname()) .or. "CAMYLLA"$upper(netname()) .or. "VANESSA"$upper(netname()) .or. "LUIZ"$upper(netname()) .or. "MVAZ"$upper(netname())
* return .f.
*else
*if us="I"
*?upper(netname())
*inkey(1)
*endif
*endif
bError := ErrorBlock( {|e| Break(e) } )
begin sequence
if inc=4 .and. us="I"
?dstmail
?arqmand
?contmail
?arqanx
?procline(0)
?"Ver se vai mandar pelo envmailking"
inkey(5)
endif
if tip_mailsend("smtp"+if(netname()="INACIO" .or. netname()="inaciocarvalho","i","")+".kinghost.net",587,"programa@inaciocarvalho.com.br",{dstmail},,,memoread(arqmand)+ansi(contmail),assuntomail,if(!empty({arqanx}),arqanx,""),"programa@inaciocarvalho.com.br","Rfvv2015","pop.kinghost.net",,,.T.,.t.,,,)=.f.
* if hb_sendmail("smtp"+if(netname()="INACIO" .or. netname()="inaciocarvalho","i","")+".kinghost.net",587,"programa@inaciocarvalho.com.br",{dstmail},,,memoread(arqmand)+ansi(contmail),assuntomail,if(!empty({arqanx}),arqanx,""),"programa@inaciocarvalho.com.br","Rfvv2015","pop.kinghost.net",,,.T.,.t.,,,)=.f.
if inc=4 .and. us="I"
?dstmail
?arqmand
?contmail
?arqanx
?procline(0)
?"N?o mandou pelo envmailking"
inkey(5)
endif
ret="F"
if us="I" //.and. inc#4
@ maxrow()-1,1 say "Aguarde... (mandmail n?o enviou pelo programa@inaciocarvalho.com.br)"
endif
endif
recover using e
cMessage := ErrorMessage(e)
logerro()
mandmail1("error.log","Erro na fun??o envmailking contornado com o recover do begin sequence")
ret="F"
endsequence
ErrorBlock( bError )
if ret="F"
return .f.
endif
if us="I"
?procline(0)
inkey(11)
endif
return .t.
METHOD AppSetup()
PUBLIC cEstacaoCobranca := Hb_GetEnv( "COMPUTERNAME" )
PUBLIC cTaskMens1 := Hb_Eol() + ;
Hb_Eol() + ;
Hb_Eol() + ;
Hb_Eol() + ;
Hb_Eol() + ;
Hb_Version() + ;
Hb_Eol() + ;
Hb_Eol() + ;
Hb_Compiler()
PUBLIC cTaskMens2 := "Constru?do por: Alexandre Sim?es" + ;
Hb_Eol() + ;
Hb_Eol() + ;
"Email: asimoesluz@gmail.com"
* Verificar portas no windows 7: netstat -an
PUBLIC hWnd, ;
oSayMsg, ;
oDlgHabla, ;
cTituloJanela, ;
oTimer, ;
cPrinter, ;
nJanelaAsaPrev, ;
cBuild, ;
OldHandler
//ANNOUNCE hwg_ErrSys
//ErrorSistema()
*
cPrinter := Win_PrinterGetDefault()
REQUEST DBFCDX
REQUEST SIXCDX
REQUEST HB_MEMIO
RddSetDefault('DBFCDX')
REQUEST HB_LANG_PT
REQUEST HB_CODEPAGE_PT850
REQUEST HB_CODEPAGE_PTISO
Hb_LangSelect("PT")
Hb_SetCodePage( "PTISO" )
Hb_CdpSelect("PTISO")
Set( _SET_EVENTMASK, INKEY_ALL - INKEY_MOVE )
SET TYPEAHEAD TO 0
SET INTENSITY ON
SET DELETED ON
SET DATE ANSI
SET DATE FORMAT "DD/MM/YY"
SET DELIMITERS TO
SET EXCLUSIVE OFF
SET EPOCH TO 1965
SET CENTURY ON
SET OPTIMIZE ON
SET AUTOPEN OFF
SET DBFLOCKSCHEME TO DB_DBFLOCK_CLIPPER
Set( _SET_FORCEOPT, .T. )
RETURN Self
#pragma BEGINDUMP
#include <windows.h>
#include "hbapi.h"
HB_FUNC( HB_GTI_DESTROY_WINDOW )
{
DestroyWindow( (HWND) hb_parnl( 1 ) );
}
#pragma ENDDUMP
#pragma BEGINDUMP
#if defined ( __MINGW32__ )
#define _WIN32_WINNT 0x0500
#endif
#include <windows.h>
#include "hbapi.h"
HB_FUNC( SETTRANSPARENT )
{
typedef BOOL (__stdcall *PFN_SETLAYEREDWINDOWATTRIBUTES) (HWND, COLORREF, BYTE, DWORD);
PFN_SETLAYEREDWINDOWATTRIBUTES pfnSetLayeredWindowAttributes = NULL;
HINSTANCE hLib = LoadLibrary("user32.dll");
if (hLib != NULL)
{
pfnSetLayeredWindowAttributes = (PFN_SETLAYEREDWINDOWATTRIBUTES) GetProcAddress(hLib, "SetLayeredWindowAttributes");
}
if (pfnSetLayeredWindowAttributes)
{
SetWindowLong((HWND) hb_parnl (1), GWL_EXSTYLE, GetWindowLong((HWND) hb_parnl (1), GWL_EXSTYLE) | WS_EX_LAYERED);
pfnSetLayeredWindowAttributes((HWND) hb_parnl (1), 0, hb_parni (2), LWA_ALPHA);
}
if (!hLib)
{
FreeLibrary(hLib);
}
}
#pragma ENDDUMP
Function GetDt()
Local oDlg, oFont := HFont():Add( "MS Sans Serif",0,-13 ), oTimer
*Local e1 := Date()-1
*Local e2 := Date()
INIT DIALOG oDlg CLIPPER NOEXIT TITLE "Datas inicial e final" ;
AT 210,10 SIZE 300,320 FONT oFont
SET KEY FSHIFT,VK_F3 TO hwg_Msginfo("Shift-F3")
SET KEY FCONTROL,VK_F3 TO hwg_Msginfo("Ctrl-F3")
SET KEY 0,VK_F3 TO hwg_Msginfo("F3")
SET KEY 0,VK_RETURN TO hwg_Msginfo("Return")
@ 20,10 SAY "Datas:" SIZE 260, 22
@ 20,35 GET dti SIZE 260, 26
@ 20,95 GET dtf SIZE 260, 26
@ 20,250 BUTTON "Ok" SIZE 100, 32 ON CLICK {||oDlg:lResult:=.T.,hwg_EndDialog()}
@ 180,250 BUTTON "Cancel" ID IDCANCEL SIZE 100, 32
ACTIVATE DIALOG oDlg
* IF oDlg:lResult
* hwg_Msginfo( Dtoc(e1) + chr(10) + chr(13) + ;
* Dtoc(e2) + chr(10) + chr(13) ;
* ,"Results:" )
* ENDIF
Return Nil
Function Cotacoes
local opcotvar
Local oDlg, oFont := HFont():Add( "MS Sans Serif",0,-13 ), oTimer
private oRs, conexao
private dti := date()
private dtf := date()
INIT DIALOG oDlg CLIPPER NOEXIT TITLE "Datas inicial e final" ;
AT 210,10 SIZE 300,320 FONT oFont
SET KEY FSHIFT,VK_F3 TO hwg_Msginfo("Shift-F3")
SET KEY FCONTROL,VK_F3 TO hwg_Msginfo("Ctrl-F3")
SET KEY 0,VK_F3 TO hwg_Msginfo("F3")
SET KEY 0,VK_RETURN TO hwg_Msginfo("Return")
@ 20,10 SAY "Datas:" SIZE 260, 22
@ 20,35 GET dti SIZE 260, 26
@ 20,95 GET dtf SIZE 260, 26
@ 20,250 BUTTON "Ok" SIZE 100, 32 ON CLICK {||oDlg:lResult:=.T.,hwg_EndDialog()}
@ 180,250 BUTTON "Cancel" ID IDCANCEL SIZE 100, 32
ACTIVATE DIALOG oDlg
opcotvar=2
IF ADOconecta( nProvAcoes, 5 )
oRs=conexao:execute("SELECT codigo,dtcotacao,hrcotacao,cotacao,quemcad,dtvisto,hrvisto,dtver from acoes WHERE dtcotacao>='"+dtsql(dti)+"' AND dtcotacao<'"+dtsql(dtf)+"' AND compvenda=0"+if(opcotvar=2," AND quemcad like 'var-%'","")+if(opcotvar=3," ORDER by dtvisto,hrvisto"," ORDER by dtcotacao,hrcotacao"))
if oRs:recordcount()=0
@ 30,10 SAY "Não há cotações cadastradas neste período" SIZE 260, 22
oRs:Close()
conexao:close()
endif
browseado()
oRs:Close()
conexao:close()
Endif
Return .t.
15 Set 2020 16:35
@ 1087,384 say alltrim(str(nCotMin)) size 100,45
#include "hwgui.ch"
Function main
LOCAL oDlg
INIT DIALOG oDlg AT 100,100 SIZE 500,160
@ 10,10 say "ALO MUNDO" size 100,25
oDlg:Activate()
Return Nil
15 Set 2020 23:07
Function Graph2(cod)
Local oModDlg, oFont := HFont():Add( "MS Sans Serif",0,-13 ), oGraph
Local i, aGraph[1]
local cProc, nCotMax, dDtMax, nCotMin,dDtMin, nCotMax30d, dDtMax30d, nCotMin30d, dDtMin30d, nCotAgora, dDtAgora
private conexao
IF ADOconecta( nProvAcoes, 5 )
cProc=conexao:execute("select dtcotacao,cotacao from acoes where codigo='"+cod+"' AND cotacao<9999 AND compvenda=0 order by cotacao DESC limit 1")
nCotMax=cProc:Fields("cotacao"):Value
dDtMax=cProc:Fields("dtcotacao"):Value
cProc=conexao:execute("select dtcotacao,cotacao from acoes where codigo='"+cod+"' AND cotacao>0 AND compvenda=0 order by cotacao limit 1")
nCotMin=cProc:Fields("cotacao"):Value
dDtMin=cProc:Fields("dtcotacao"):Value
cProc=conexao:execute("select dtcotacao,cotacao from acoes where codigo='"+cod+"' AND cotacao<9999 AND dtcotacao>'"+dtsql(date()-30)+"' AND compvenda=0 order by cotacao DESC limit 1")
nCotMax30d=cProc:Fields("cotacao"):Value
dDtMax30d=cProc:Fields("dtcotacao"):Value
cProc=conexao:execute("select dtcotacao,cotacao from acoes where codigo='"+cod+"' AND dtcotacao>'"+dtsql(date()-30)+"' AND cotacao>0 AND compvenda=0 order by cotacao limit 1")
nCotMin30d=cProc:Fields("cotacao"):Value
dDtMin30d=cProc:Fields("dtcotacao"):Value
cProc=conexao:execute("select dtcotacao,cotacao from acoes where codigo='"+cod+"' AND dtcotacao>'"+dtsql(date()-30)+"' AND cotacao>0 AND cotacao<9999 AND compvenda=0 order by dtcotacao DESC limit 1")
nCotAgora=cProc:Fields("cotacao"):Value
dDtAgora=cProc:Fields("dtcotacao"):Value
cProc:Close()
conexao:close()
Endif
aGraph[1] := {}
Aadd( aGraph[1], { day(dDtMin), nCotMin } )
Aadd( aGraph[1], { day(dDtMax), nCotMax } )
Aadd( aGraph[1], { day(dDtMin30d), nCotMin30d } )
Aadd( aGraph[1], { day(dDtMax30d), nCotMax30d } )
Aadd( aGraph[1], { day(dDtAgora), nCotAgora } )
INIT DIALOG oModDlg CLIPPER TITLE "Graph" ;
AT 38,5 SIZE 1310,800 ;
FONT oFont
@ 9,15 say cod size 500,45
@ 1087,384 say alltrim(str(nCotMin)) size 100,45
@ 1127,384 say alltrim(str(nCotMax)) size 100,45
@ 1166,384 say alltrim(str(nCotMin30d)) size 100,45
@ 1207,384 say alltrim(str(nCotMax30d)) size 100,45
@ 1250,384 say alltrim(str(nCotAgora)) size 100,45
@ 1090,647 say substr(dtoc(dDtMin),1,2) size 100,45
@ 1090,666 say substr(dtoc(dDtMin),4,2) size 100,45
@ 1090,684 say substr(dtoc(dDtMin),9,2) size 100,45
@ 1130,647 say substr(dtoc(dDtMax),1,2) size 100,45
@ 1130,666 say substr(dtoc(dDtMax),4,2) size 100,45
@ 1130,684 say substr(dtoc(dDtMax),9,2) size 100,45
@ 1170,647 say substr(dtoc(dDtMin30d),1,2) size 100,45
@ 1170,666 say substr(dtoc(dDtMin30d),4,2) size 100,45
@ 1170,684 say substr(dtoc(dDtMin30d),9,2) size 100,45
@ 1212,647 say substr(dtoc(dDtMax30d),1,2) size 100,45
@ 1212,666 say substr(dtoc(dDtMax30d),4,2) size 100,45
@ 1212,684 say substr(dtoc(dDtMax30d),9,2) size 100,45
@ 1255,647 say substr(dtoc(dDtAgora),1,2) size 100,45
@ 1255,666 say substr(dtoc(dDtAgora),4,2) size 100,45
@ 1255,684 say substr(dtoc(dDtAgora),9,2) size 100,45
@ 1070,410 GRAPH oGraph DATA aGraph SIZE 230,230 COLOR 65280
oGraph:nType := 2
IF ADOconecta( nProvAcoes, 5 )
cProc=conexao:execute("select dtcotacao,cotacao,quemcad,compvenda,conta from acoes where codigo='"+cod+"' AND status='M' order by dtcotacao")
if cProc:recordcount()>0
@ 22,5 say "Ordens marcadas:" size 500,45
a=34
do while !cProc:Eof()
@ a,5 say cProc:Fields("dtcotacao"):Value size 500,45
@ a+10,5 say cProc:Fields("quemcad"):Value size 500,45
@ a+20,5 say cProc:Fields("compvenda"):Value size 500,45
@ a+30,5 say cProc:Fields("cotacao"):Value size 500,45
@ a+40,5 say cProc:Fields("conta"):Value size 500,45
a=a+50
cProc:MoveNext()
enddo
endif
endif
* @ 130,250 BUTTON "Close" ;
* SIZE 130,30 ;
* ON CLICK {||EndDialog()}
ACTIVATE DIALOG oModDlg
Return Nil
INIT DIALOG oModDlg CLIPPER TITLE "Graph" ;
AT 38,5 SIZE 1310,800 ;
FONT oFont
15 Set 2020 23:53
17 Set 2020 00:50
17 Set 2020 12:55
Uma outra dúvida, por favor: inkey(x) não funciona na Hwgui?
22 Set 2020 00:01
#include "hwgui.ch"
Function Tempo
Local oDlg, oFont, oFontSay, oFontC
Local nTp :=0
private nInicio :=0
PREPARE FONT oFont NAME "MS Sans Serif" WIDTH 0 HEIGHT -13
PREPARE FONT oFontSay NAME "MS Sans Serif" WIDTH 0 HEIGHT -13 WEIGHT 700
PREPARE FONT oFontC NAME "Georgia" WIDTH 0 HEIGHT -15
INIT DIALOG oDlg TITLE "Standard dialogs" AT 100, 100 SIZE 340, 300 FONT oFont
@ 20,12 SAY "Escolha:" SIZE 260, 24 ;
FONT oFontSay COLOR 8404992
@ 20,50 BUTTON "Iniciar contagem" SIZE 180,28 ;
ON CLICK {||iniciacontagem()}
@ 20,100 BUTTON "Ver contagem" SIZE 180,28 ;
ON CLICK {||vercontagem()}
nTp=seconds()-nInicio
@ 20,150 SAY nTp SIZE 180, 28
* @ 20,185 GET nTp PICTURE "@e 999,999,999.9999" SIZE 260, 26
@ 20, 250 LINE LENGTH 300
@ 120,258 BUTTON "Close" SIZE 100,30 ON CLICK {||oDlg:Close()}
ACTIVATE DIALOG oDlg
Return Nil
function iniciacontagem
Local oDlg, oFont
nInicio=seconds()
PREPARE FONT oFont NAME "MS Sans Serif" WIDTH 0 HEIGHT -13
INIT DIALOG oDlg TITLE "Inicia contagem" AT 280, 210 SIZE 250, 250 FONT oFont
@ 10,40 SAY "Contagem iniciada" SIZE 360, 36
@ 10,190 BUTTON "Ok" SIZE 100, 32 ON CLICK {||oDlg:lResult:=.T.,hwg_EndDialog()}
ACTIVATE DIALOG oDlg
return Nil
Function vercontagem()
Local oDlg, oFont := HFont():Add( "MS Sans Serif",0,-13 ), oTimer
Local e5 := 0
INIT DIALOG oDlg CLIPPER NOEXIT TITLE "Contagem" AT 250,20 SIZE 250,350 FONT oFont
hwg_SetColorinFocus( oDlg,, 13172680 )
@ 15,20 SAY "Contagem:" SIZE 260, 22
e5=seconds()-nInicio
@ 15,65 GET e5 PICTURE "@e 999,999,999.9999" SIZE 150, 26
@ 15,115 SAY e5 SIZE 150, 26
@ 15,250 BUTTON "Ok" SIZE 80, 32 ON CLICK {||oDlg:lResult:=.T.,hwg_EndDialog()}
ACTIVATE DIALOG oDlg
Return Nil
@ 15,115 SAY e5 SIZE 150, 26
@ 20,150 SAY nTp SIZE 180, 28
22 Set 2020 06:35
//Qualquer coisa que vc usa, colocando na DIALOG precisa do objeto! (botões, says, gets...)
//Um say tem objeto, o get tem objeto, o button tem objeto, não esqueça disso!
//Vc não está colocando nada disso. Tem a VARIAVEL no caso dos GET e o OBJETO!
//@ 20,50 BUTTON oBotao_01 CAPTION "Iniciar contagem" size 180,28 on CLICK...
//@ 20,100 BUTTON oBotao_02 CAPTION "Ver contagem" size 180,28 on CLICK...
//E o ACTIVATE DIALO oDLG //é a mesma coisa do READ
//Em clipper @ x,y say "x"
//Na Hwgui @ x,y SAY OBJETO_SAY CAPTION "X" ...
//Em clipper @ x,y GET cNome
//Na Hwgui @ x,y GET OBJETO_GET VAR cNome ...
//Todos os controles tem um objeto.(controles são "coisas, SAY,GET,Button, etc" que colocamos dentro da DIALOG/Window)
//Porquê tem esses OBJETOS ????
//Exatamente é usando o OBJETO que vc VERIFICA os EVENTOS no caso dos BOTÕES se foi pressionado, se passou o mouse por cima, se recebeu foco...
//Um GET na HWGUI RECEBE e PERDE o FOCO, ninguém sabe ONDE o usuário vai CLICAR com o MOUSE!
//Pelo FOCO vc vai saber ONDE o usuário está na DIALOG(Em qual controle ele está!) o antigo CURSOR do CLIPPER.
//ComboBox, CheckBox, RadioButton é para ESCOLHER! não é para escrever nada(normalmente) então pelo FOCO vc fica sabendo ONDE está.
#include "hwgui.ch"
Function Main
Local oDlg, oFont, oFontSay, oFontC
Local nTp :=0, oSAY1, oSAY2
private nInicio :=0
PREPARE FONT oFont NAME "MS Sans Serif" WIDTH 0 HEIGHT -13
PREPARE FONT oFontSay NAME "MS Sans Serif" WIDTH 0 HEIGHT -13 WEIGHT 700
PREPARE FONT oFontC NAME "Georgia" WIDTH 0 HEIGHT -15
INIT DIALOG oDlg TITLE "Standard dialogs" AT 100, 100 SIZE 340, 300 FONT oFont
@ 20,12 SAY oSAY1 CAPTION "Escolha:" SIZE 260, 24 ;
FONT oFontSay COLOR 8404992 //esqueceu de colocar o nome dos objetos! oSAY1
@ 20,50 BUTTON "Iniciar contagem" SIZE 180,28 ;
ON CLICK {||iniciacontagem()}
@ 20,100 BUTTON "Ver contagem" SIZE 180,28 ;
ON CLICK {||vercontagem()}
nTp=seconds()-nInicio
@ 20,150 SAY oSAY2 CAPTION str(nTp) SIZE 180, 28 //esqueceu de colocar o nome dos objetos! o SAY2
@ 20, 250 LINE LENGTH 300
@ 120,258 BUTTON "Close" SIZE 100,30 ON CLICK {||oDlg:Close()}
ACTIVATE DIALOG oDlg
Return Nil
function iniciacontagem
Local oDlg, oFont, oSAY1
nInicio:=seconds()
PREPARE FONT oFont NAME "MS Sans Serif" WIDTH 0 HEIGHT -13
INIT DIALOG oDlg TITLE "Inicia contagem" AT 280, 210 SIZE 250, 250 FONT oFont
@ 10,40 SAY oSAY1 CAPTION "Contagem iniciada" SIZE 360, 36 //Precisa do OBJETO oSAY1
@ 10,190 BUTTON "Ok" SIZE 100, 32 ON CLICK {||oDlg:lResult:=.T.,hwg_EndDialog()}
ACTIVATE DIALOG oDlg
return Nil
Function vercontagem()
Local oDlg, oFont := HFont():Add( "MS Sans Serif",0,-13 ), oTimer, oSAY1, oSAY5
Local oE5, e5 := 0
INIT DIALOG oDlg CLIPPER NOEXIT TITLE "Contagem" AT 250,20 SIZE 250,350 FONT oFont
hwg_SetColorinFocus( oDlg,, 13172680 )
@ 15,20 SAY oSAY1 CAPTION "Contagem:" SIZE 260, 22
//e5=seconds()-nInicio
@ 15,65 GET oE5 VAR e5 PICTURE "@e 999,999,999.9999" SIZE 150, 26 //Precisa do objeto GET oE5
@ 15,115 SAY oSAY5 CAPTION str(e5) SIZE 150, 26
@ 15,250 BUTTON "Ok" SIZE 80, 32 ON CLICK {||oDlg:lResult:=.T.,hwg_EndDialog()}
oDlg:bActivate:={||oDlg:Show(),CONTA(oSay5,e5)}
ACTIVATE DIALOG oDlg
Return Nil
Function CONTA(oSay5,e5)
Local nX:=0
FOR nX := 1 to 50
e5 := seconds() - nInicio
oSay5:SetText(str(e5))
inkey(.1)
NEXT
hwg_msginfo("Ok")
Return Nil
23 Set 2020 09:22