Página 1 de 1

StatusBar

Enviado: 01 Jan 2015 18:04
por toya
Como poderia ajustar a altura da Window para que a mesma possibilite visualizar a Barra de Ferramentas (item 1 - figura imagem-02.png) ?

Qual seria a possibilidade de gerar a StatusBar como o visual do item 2- figura imagem-02.png ?

Gerando via HMG 3.3.1. estou obtendo conforme a imagem-h02.png

StatusBar

Enviado: 01 Jan 2015 22:07
por Pablo César
Olá Elcio, não sei se eu entendi direito.

Mas eu acho que se você quer inserir uma imagem dentro de um StatusBar em HMG, eu partiria com apenas uma exibição de imagem,, utilizando o control IMAGE. E adicionaria texto com a biblioteca BT em imagem. A altura da imagem a daria o control IMAGE com STRECH = .T.

Imagens també aceita evento ONCLICK para adicionar um ACTION.

StatusBar

Enviado: 01 Jan 2015 23:25
por toya
Devo estar comentendo algum erro:

Em main_form_onpaint() executo:

Código: Selecionar todos

hDC := BT_CreateDC ( "Main", BT_HDC_INVALIDCLIENTAREA , @BTstruct )
BT_DrawGradientFillVertical( hDC,;
                             0,0,;
                             BT_ClientAreaWidth( "Main" ),;
                             BT_ClientAreaHeight( "Main" ),;
                             {154, 192, 205}, {154, 192, 205} )
BT_DrawBitmapAlphaBlend( hDC, 756, 8, 320, 240, 255, BT_COPY, BT_hBitmap )

//--- aqui tento pintar o StatusBar
BT_DrawGradientFillVertical( hDC,;
                             0,;
                             0,;
                             BT_ClientAreaWidth( "Main" ),;
                             BT_StatusBarHeight( "Main" ),;
                             WHITE, BLACK )
BT_DeleteDC( BTstruct ) 

StatusBar

Enviado: 02 Jan 2015 14:47
por Pablo César
toya escreveu:Devo estar comentendo algum erro
Oi Elcio, eu acho que sim. poruqe as funções que você está tentando utilizar eu tenho visto para mudar os fundos das telas. Nunca soube que dá para mudar o fundo do StatusBar. Vocês não deixou em claro quais são as suas intenções ou eu ao menos não entendi...

Imagem

Se for algo similar ao que mostra a imagem, eu estou muito interessado em saber. Mas colocar imagem no StatusBar ? Parece-me algo meio sem nexo (desculpe se te ofendo com a minha opinião). Mas mudar a core até acho em interessante.

Parabéns pelas suas inquietudes de novas atribuições. Acho legal isso.

StatusBar

Enviado: 02 Jan 2015 15:18
por toya

Código: Selecionar todos

#include "hmg.ch"
#include "bosTaurus.ch"
#define CORTOYA { 154,192,205 }

MEMVAR _HMG_SYSDATA

declare window Main

Function main_form_onpaint

local  hDC
local BTstruct
local cAux := ""
local aAux := {}
local nRow := 0
local BT_hBitmapStatusBar := BT_BitmapLoadFile ( "msg_bar.bmp" )
local i := 0

BT_hBitmap := BT_BitmapLoadFile ( cPathAux + "\logo_gnnpx_hmg.png" )
hDC := BT_CreateDC ( "Main", BT_HDC_INVALIDCLIENTAREA , @BTstruct )
BT_DrawGradientFillVertical( hDC,;
                             0,0,;
                             BT_ClientAreaWidth( "Main" ),;
                             BT_ClientAreaHeight( "Main" ),;
                             CORTOYA, CORTOYA )
BT_DrawBitmapAlphaBlend( hDC, 756, 8, 320, 240, 255, BT_COPY, BT_hBitmap )

// usar assim:
//--- StatusBar (1)
BT_DrawGradientFillVertical( hDC,;
                             Main.Height - 150,;
                             0,;
                             BT_ClientAreaWidth( "Main" ),;
                             BT_StatusBarHeight( "Main" ),;
                             {154, 192, 205 }, BLACK )

// ou assim:
//--- StatusBar (2)
BT_DrawBitmapAlphaBlend( hDC, Main.Height - 100, 0, BT_ClientAreaWidth( "Main" ), BT_StatusBarHeight( "Main" ), 255, BT_STRETCH, BT_hBitmapStatusBar )

BT_DeleteDC( BTstruct ) 

return Nil
O que não estou sabendo é como descobrir as coordenadas da StatusBar para poder fazer o posicionamento correto do 'StatusBar (2)'

StatusBar

Enviado: 03 Jan 2015 10:35
por Claudio Soto
toya escreveu:O que não estou sabendo é como descobrir as coordenadas da StatusBar para poder fazer o posicionamento correto do 'StatusBar (2)'
Las coordenadas de posición del StatusBar son:

Código: Selecionar todos

nCol := 0
nRow := BT_ClientAreaHeight( cFormName ) - BT_StatusBarHeight ( cFormName )
nWidth := BT_StatusBarWidth ( cFormName )
nHeight := BT_StatusBarHeight ( cFormName )

StatusBar

Enviado: 03 Jan 2015 15:03
por Pablo César
Gracias Claudio por responder.

Agora que eu entendi o que você queria Elcio. Você precisava saber a altura (tamanho) do StatusBar para poder exibir o tamanho certo do teu ClientAreaHeight.

Assim como demostrou o Claudio, tem o C:\hmg.3.3.1\SAMPLES\BosTaurus\Demo7.prg como exemplo.

StatusBar

Enviado: 03 Jan 2015 22:57
por toya
ok...

Determinadas a coordenadas corretamente...
O problema é que não está sobrepondo quando executo:
BT_DrawBitmapAlphaBlend( hDC, nRow, nCol, nWidth, nHeight, 255, BT_STRETCH, BT_hBitmapStatusBar )

Código: Selecionar todos

#include "hmg.ch"
#include "bosTaurus.ch"
#define CORTOYA { 154,192,205 }

MEMVAR _HMG_SYSDATA

declare window Main

Function main_form_onpaint

local  hDC
local BTstruct
local cAux := ""
local aAux := {}
local BT_hBitmapStatusBar := BT_BitmapLoadFile ( "msg_bar.bmp" )
local i := 0
local nCol := 0
local nRow := 0
local nWidth := 0
local nHeight := 0

BT_hBitmap := BT_BitmapLoadFile ( cPathAux + "\logo_gnnpx_hmg.png" )
hDC := BT_CreateDC ( "Main", BT_HDC_INVALIDCLIENTAREA , @BTstruct )
BT_DrawGradientFillVertical( hDC,;
                             0,0,;
                             BT_ClientAreaWidth( "Main" ),;
                             BT_ClientAreaHeight( "Main" ),;
                             CORTOYA, CORTOYA )
BT_DrawBitmapAlphaBlend( hDC, 756, 8, 320, 240, 255, BT_COPY, BT_hBitmap )

nCol := 0
nRow := BT_ClientAreaHeight( "Main" ) - BT_StatusBarHeight ( "Main" )
nWidth := BT_StatusBarWidth ( "Main" )
nHeight := BT_StatusBarHeight ( "Main" )

//--- StatusBar (1) -> não aparece, prevalece a StatusBar normal
BT_DrawBitmapAlphaBlend( hDC, nRow, nCol, nWidth, nHeight, 255, BT_STRETCH, BT_hBitmapStatusBar )

//--- StatusBar (2) -> gerei mais acima para certificar que a linha de comando está correta
BT_DrawBitmapAlphaBlend( hDC, nRow - nHeight, nCol, nWidth, nHeight, 255, BT_STRETCH, BT_hBitmapStatusBar )

BT_DeleteDC( BTstruct ) 

return Nil

StatusBar

Enviado: 05 Jan 2015 01:42
por Claudio Soto
toya escreveu:ok...

Determinadas a coordenadas corretamente...
O problema é que não está sobrepondo quando executo:
BT_DrawBitmapAlphaBlend( hDC, nRow, nCol, nWidth, nHeight, 255, BT_STRETCH, BT_hBitmapStatusBar )
El problema es que el evento On Paint() siempre se ejecuta antes de que se dibujen los controles.
Hace tiempo que estoy pensando en crear un evento ON PostPaint(), es muy sencillo de implementarlo (ya lo anoté en mi lista de temas pendientes), sería muy útil en creación de splash window con controles (ej. ProgressBar).