É icone mesmo, mas vou verificar e informo aqui., porque andei modificando essa classe pra carregar outros tipos de imagensJoséQuintas escreveu:Tem @ x, y ICON .... mas pra ficar transparente usa @ x, y BITMAP
Resta a dúvida.... o ICO é ICO mesmo, ou é BMP salvo como ICO?
Cor de fundo do ICON
Moderador: Moderadores
Cor de fundo do ICON
►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)
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)
Cor de fundo do ICON
Código: Selecionar todos
@ 010,500 BITMAP oIcon ;
SHOW HBitMap():AddFile("AVI\exit-512 Black.ico", .T., 60, 60) ;
OF oPanelx1 ;
STRETCH 0 ;
BACKTRANSPARENT ;
SIZE 60, 60
Código: Selecionar todos
METHOD AddFile( Name, hDC, lTranparent, nWidth, nHeight ) CLASS HBitmap
LOCAL oElemento, aBmpSize, cName := CutPath( Name ), cCurDir
FOR EACH oElemento IN ::aBitmaps
IF oElemento:Name == cName .AND. oElemento:bGray = "0" .AND. ( oElemento:nWidth = nWidth .OR. oElemento:nHeight = nHeight )
oElemento:nCounter ++
RETURN oElemento
ENDIF
NEXT
Name := iif( ! File( Name ) .AND. File( cName ), cName, Name )
IF ::lSelFile .AND. ! File( Name )
cCurDir := DiskName() + [:\] + CurDir()
Name := hwg_SelectFile( "Image Files( *.jpg;*.gif;*.bmp;*.ico )", CutPath( Name ), FilePath( Name ), "Locate " + Name ) //"*.jpg;*.gif;*.bmp;*.ico"
DirChange( cCurDir )
ENDIF
IF Lower( Right( Name, 4 ) ) != ".bmp" .OR. ( nWidth == Nil .AND. nHeight == Nil .AND. lTranparent == Nil )
IF Lower( Right( Name, 4 ) ) == ".bmp"
::handle := hwg_OpenBitMap( Name, hDC )
ELSE
* A chamada do ICO, JPG, GIF, PNG, TIF OU BMP poderia até remover o if acima para carregar o BMP
::handle := BT_BitmapLoadFile( Name )
IF nWidth != Nil .AND. nHeight != Nil
::handle := BT_BitmapCopyAndResize( ::handle, nWidth, nHeight )
ENDIF
ENDIF
ELSE
IF lTranparent != Nil .AND. lTranparent
::handle := hwg_LoadImage( Nil, Name, IMAGE_BITMAP, nWidth, nHeight, LR_LOADFROMFILE + LR_LOADTRANSPARENT + LR_LOADMAP3DCOLORS )
ELSE
::handle := hwg_LoadImage( Nil, Name, IMAGE_BITMAP, nWidth, nHeight, LR_LOADFROMFILE )
ENDIF
ENDIF
IF Empty( ::handle )
RETURN Nil
ENDIF
::bGray := "0"
::name := cName
aBmpSize := hwg_GetBitmapSize( ::handle )
::nWidth := aBmpSize[ 1 ]
::nHeight := aBmpSize[ 2 ]
aAdd( ::aBitmaps, Self )
RETURN Self
Na lib
FUNCTION BT_BitmapLoadFile ( cFileName )
LOCAL hBitmap := BT_BMP_LOADFILE ( cFileName )
RETURN hBitmap
Função C
//*************************************************************************************************
//* BT_BMP_LOADFILE (cFileBMP) ---> Return hBITMAP
//*************************************************************************************************
HB_FUNC( BT_BMP_LOADFILE )
{
HBITMAP hBitmap;
CHAR * FileName;
FileName = ( CHAR * ) hb_parc( 1 );
// First find BMP image in resourses (.EXE file)
hBitmap = ( HBITMAP ) LoadImage( GetModuleHandle( NULL ), FileName, IMAGE_BITMAP, 0, 0, LR_CREATEDIBSECTION | LR_LOADTRANSPARENT | LR_LOADMAP3DCOLORS );
// If fail: find BMP in disk
if( hBitmap == NULL )
hBitmap = ( HBITMAP ) LoadImage( NULL, FileName, IMAGE_BITMAP, 0, 0, LR_LOADFROMFILE | LR_CREATEDIBSECTION | LR_LOADTRANSPARENT | LR_LOADMAP3DCOLORS );
// If fail: find JPG Image in resourses
if( hBitmap == NULL )
hBitmap = bt_LoadOLEPicture( FileName, "JPG" );
// If fail: find GIF Image in resourses
if( hBitmap == NULL )
hBitmap = bt_LoadOLEPicture( FileName, "GIF" );
// If fail: find PNG Image in resourses
if( hBitmap == NULL )
hBitmap = bt_LoadGDIPlusPicture( FileName, "PNG" );
// If fail: find TIF Image in resourses
if( hBitmap == NULL )
hBitmap = bt_LoadGDIPlusPicture( FileName, "TIF" );
// If fail: find JPG and GIF Image in disk
if( hBitmap == NULL )
hBitmap = bt_LoadOLEPicture( FileName, NULL );
// If fail: find PNG and TIF Image in disk
if( hBitmap == NULL )
hBitmap = bt_LoadGDIPlusPicture( FileName, NULL );
// If fail load: return zero
if( hBitmap == NULL )
{
hb_retnll( 0 );
return;
}
// if (bt_bmp_is_24bpp (hBitmap) == FALSE)
// hBitmapFile = bt_bmp_convert_to_24bpp (hBitmap, BMP_DELETE_ORIGINAL_HBITMAP); // Convert Bitmap in 24bpp
hb_retnll( ( LONG_PTR ) hBitmap );
}
HBITMAP bt_LoadGDIPlusPicture( CHAR * FileName, CHAR * TypePictureResource )
{
IStream * iStream;
HBITMAP hBitmap;
HGLOBAL hGlobalAlloc;
GpBitmap * pGpBitmap;
ARGB BkColor;
if( bt_Load_GDIplus() == FALSE )
return NULL;
if( TypePictureResource != NULL )
hGlobalAlloc = bt_LoadFileFromResources( FileName, TypePictureResource );
else
hGlobalAlloc = bt_LoadFileFromDisk( FileName );
if( hGlobalAlloc == NULL )
return NULL;
iStream = NULL;
hBitmap = NULL;
if( CreateStreamOnHGlobal( hGlobalAlloc, FALSE, &iStream ) == S_OK )
{
//BkColor = 0xFF000000UL; aqui cor transparente 0x00FFFFFFUL
BkColor = 0x00FFFFFFUL;
GdipCreateBitmapFromStream( iStream, &pGpBitmap );
GdipCreateHBITMAPFromBitmap( pGpBitmap, &hBitmap, BkColor );
iStream->lpVtbl->Release( iStream );
}
bt_Release_GDIplus();
GlobalFree( hGlobalAlloc );
return hBitmap;
}
* BkColor = 0xFF000000UL; original da função
BkColor = 0x00FFFFFFUL; cor transparente Icone com fundo preto com o valor original 0xFF000000UL
►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)
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)
Cor de fundo do ICON
Para icone branco tem que usar o valor original, talvez tenha que ser um parâmetro da function
►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)
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)
Cor de fundo do ICON
Qualquer cor diferente de preto e branco não precisar fazer nada, ou criar um parâmetro na BT para tratar B/W
►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)
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)
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Cor de fundo do ICON
Ok, então vale pra ícone também.
Postei pouco tempo atrás a rotina pra ESCOLHER a cor que vai ficar transparente, ao invés de ser a tela inteira.
Provavelmente a rotina de bitmap faça uso dela, e provavelmente as cores mais usadas pra ficarem transparentes sejam branca e preta.
Postei pouco tempo atrás a rotina pra ESCOLHER a cor que vai ficar transparente, ao invés de ser a tela inteira.
Provavelmente a rotina de bitmap faça uso dela, e provavelmente as cores mais usadas pra ficarem transparentes sejam branca e preta.
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/
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/
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 7928
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 1 vez
Cor de fundo do ICON
Olá!
Será bom incorporar a BOSTAURUS na Hwgui, porquê fica esses exemplos com versões incompatíveis, usando 2.17 e a versão final do SVN.
Eu mesmo tenho que reler aqui esses exemplos para entender, mas dai lembro que não existe BOSTAURUS na Hwgui, oficialmente falando.
Saudações,
Itamar M. Lins Jr.
Será bom incorporar a BOSTAURUS na Hwgui, porquê fica esses exemplos com versões incompatíveis, usando 2.17 e a versão final do SVN.
Eu mesmo tenho que reler aqui esses exemplos para entender, mas dai lembro que não existe BOSTAURUS na Hwgui, oficialmente falando.
Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Itamar M. Lins Jr.
Cor de fundo do ICON
Não existe, mas os fontes estão disponíveis para incorporar na hwgui ou usar fora da hwguiItamar M. Lins Jr. escreveu:Olá!
Será bom incorporar a BOSTAURUS na Hwgui, porquê fica esses exemplos com versões incompatíveis, usando 2.17 e a versão final do SVN.
Eu mesmo tenho que reler aqui esses exemplos para entender, mas dai lembro que não existe BOSTAURUS na Hwgui, oficialmente falando.
A Bostaurus é um recurso opcional na Minigui
►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)
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)
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 7928
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 1 vez
Cor de fundo do ICON
Olá!
Eu li no grupo internacional que o Italiano Maurizio fez o porte para a Hwgui, não sei pq eles não fazem o commit.
https://groups.google.com/g/harbour-use ... w_LVzoBgAJ
Saudações,
Itamar M. Lins Jr.
Eu li no grupo internacional que o Italiano Maurizio fez o porte para a Hwgui, não sei pq eles não fazem o commit.
https://groups.google.com/g/harbour-use ... w_LVzoBgAJ
Hi,
Auge & Ohr suggestion it's very fine.
Today I found the time to study BosTaurus (a very nice piece of code) and how to use it outside HMG and easily did the job.
I just added BosTaurus_C.prg, BosTaurus.ch and mgdefs.h to my project and rewrote the function:
Código: Selecionar todos
#include "bostaurus.ch"
function hbs_ScreenShot( cFileName, nImgType )
local row := Hb_GtInfo( HB_GTI_SETPOS_XY )[ 2 ]
local col := Hb_GtInfo( HB_GTI_SETPOS_XY )[ 1 ]
local width := Hb_GtInfo( HB_GTI_SCREENWIDTH )
local height := Hb_GtInfo( HB_GTI_SCREENHEIGHT )
local maxwidth := hb_GtInfo( HB_GTI_DESKTOPWIDTH )
local maxheight := hb_GtInfo( HB_GTI_DESKTOPHEIGHT )
/* reduce the output to the visible part of the app window */
if col + width > maxwidth
width := maxwidth - col
endif
if row + height > maxheight
height := maxheight - row
endif
return BT_BMP_SaveFile( BT_BMP_CaptureScr( Hb_GtInfo( HB_GTI_WINHANDLE ), ;
col, ;
row, ;
width, ;
height, ;
BT_BITMAP_CAPTURE_WINDOW ), ;
cFileName, ;
hb_defaultValue( nImgType, BT_FILEFORMAT_PNG ) )
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Itamar M. Lins Jr.
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Cor de fundo do ICON
Bostaurus é só Windows, deve ser por isso.Itamar M. Lins Jr. escreveu:Eu li no grupo internacional que o Italiano Maurizio fez o porte para a Hwgui, não sei pq eles não fazem o commit.
Eu peguei, se não me engano, da OOHG.
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/
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/
Cor de fundo do ICON
Linux não deve funcionarJoséQuintas escreveu:Bostaurus é só Windows, deve ser por isso.
Eu peguei, se não me engano, da OOHG.
Mesmo porque a Bostaurus foi feita para funcionar originalmente na Minigui
►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)
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)
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Cor de fundo do ICON
No estilo da WVG.... kkkk
Se não deixa definir a cor de fundo na criação.... altera depois...
Se não deixa definir a cor de fundo na criação.... altera depois...
Código: Selecionar todos
FOR EACH cCaption, hIcon IN acOptions, ::hIconList
DO CASE
CASE cCaption == "Consulta"; bCode := { || ::Consulta() }
CASE cCaption == "Altera"; bCode := { || ::Altera() }
CASE cCaption == "Exclui"; bCode := { || ::Exclui() }
CASE cCaption == "Primeiro"; bCode := { || ::Primeiro() }
CASE cCaption == "Último"; bCode := { || ::Ultimo() }
CASE cCaption == "Seguinte"; bCode := { || ::Seguinte() }
CASE cCaption == "Anterior"; bCode := { || ::Anterior() }
CASE cCaption == "Sair"; bCode := { || ::Sair() }
ENDCASE
@ nCol, nRow ICON hIcon SHOW IconFromCaption( cCaption ) FROM RESOURCE ;
OF ::oFrm ;
SIZE 55, 55 ;
ON CLICK bCode ;
TOOLTIP cCaption
hIcon:SetColor( 0, 0 )
nCol += 60
IF nCol > 540
nCol := 1
nRow += 60
ENDIF
NEXT
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/
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/
-
Claudio Soto
- Colaborador

- Mensagens: 566
- Registrado em: 27 Ago 2012 12:31
- Localização: Uruguay
- Contato:
Cor de fundo do ICON
Si BT sólo funciona en Windows porque uriliza el API de Windows para manipular los mapas de bits.
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Cor de fundo do ICON
Só comentário:JoséQuintas escreveu:Se não deixa definir a cor de fundo na criação.... altera depois...
Essa é uma das complicações da API Windows.
O ícone NÃO está na janela do aplicativo, ele está em sua própria janela.
Ao deixar o ícone transparente, o que aparece é a janela do ícone, o que dá a impressão de que o ícone não ficou transparente.
Pelo mesmo motivo, aquele degradê da janela que foi postada anteriormente não aparece no ícone, porque não faz parte dele.
A complicação aqui é quando o transparente do ícone/imagem é diferente do transparente da janela do ícone/imagem.
Exemplo:
na janela do ícone a parte transparente é branca, mas no ícone a parte transparente é preta.
Como só uma cor pode ficar transparente.... se o preto virou transparente, a cor branca da janela aparece.
Então, o ícone branco tem transparência, mas a transparência ficou com o branco da janela do ícone.
O que fiz foi alterar a janela do ícone pra preto, e o ícone transparente deixa aparecer esse preto.
Convém lembrar que a HWGUI deveria ter feito isso automático, pra não precisar fazer isso em tudo que é controle, ao alterar a cor da janela.
Algo do tipo, se cor não definida, usa da mãe (parent)
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/
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/
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Cor de fundo do ICON
Uma visão rápida.
- O ícone é transparente
- A janela DO ÍCONE é vermelha
- A janela DA DIALOG é preta
É isso que muitas vezes confunde, são várias janelas.
Como na maioria das vezes a LIB faz tudo sozinha, a gente acaba esquecendo disso.
O ícone ser transparente não significa que o fundo dele vai ficar da cor da janela da dialog, e nem mesmo de um panel.
- O ícone é transparente
- A janela DO ÍCONE é vermelha
- A janela DA DIALOG é preta
É isso que muitas vezes confunde, são várias janelas.
Como na maioria das vezes a LIB faz tudo sozinha, a gente acaba esquecendo disso.
O ícone ser transparente não significa que o fundo dele vai ficar da cor da janela da dialog, e nem mesmo de um panel.
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/
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/
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Cor de fundo do ICON
Aproveitando e voltando à janela GT.....
A tela GT é apenas a imagem de fundo.... da mesma forma que poderia ser o efeito gradiente, ou apenas uma única cor.
É o Harbour quem atualiza esse fundo ao fazer SAY/GET e outras coisas.
Pra componentes GUI, tanto faz, já que nem usam essa janela.
A tela GT é apenas a imagem de fundo.... da mesma forma que poderia ser o efeito gradiente, ou apenas uma única cor.
É o Harbour quem atualiza esse fundo ao fazer SAY/GET e outras coisas.
Pra componentes GUI, tanto faz, já que nem usam essa janela.
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/
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/