Page 1 of 1
Bitmap on listbox
Posted: Fri Aug 07, 2009 10:24 am
by Silvio
I tried fwbrowse sample into fwppc but it not run ok
I not see any bitmaps
I want show bitmaps for level as fwbrowse.prg ( clients functions)
Re: Bitmap on listbox
Posted: Tue Aug 11, 2009 1:48 am
by Arturo Lopesoria
Hello
can you try Listbox?
The way I use bitmaps in listbox works fine, (this example for simulate mark/Unmark a browse cell:
Code: Select all
hBmpCheckOn := LoadBitmap( GetResources(), "checkon" )
hBmpCheckOff:= LoadBitmap( GetResources(), "checkoff" )
REDEFINE LISTBOX aoLbx[LBX_GRUPOPR] ;
FIELDS if( PasGrpPr->OK=" ", hBmpCheckOff, hBmpCheckOn ),;
PasGrpPr->DESCRIPCIO,;
PasGrpPr->(TRANSFORM(CANTIDAD,"99999.9")),;
PasGrpPr->(TRANSFORM(PRECIO,"99,999.99")),;
PasGrpPr->(transform(existencia,"99999")) ;
HEADERS "Ok", "Descripcion", "Cant", "Precio", "Existencia" ;
FONT oFont ;
ID 901 OF aoDlgs[DLG_GRUPOPR] ALIAS cAlias2
see the result .ppo and you can view how the function is called.
Re: Bitmap on listbox
Posted: Wed Aug 12, 2009 4:23 pm
by Silvio
thank you
but on fbrowse.prg ( fwh)
the bitmaps are different : look here please
Code: Select all
function Clients()
local oDlg
local oLbx
local cVar
local aHBitMaps:= { ReadBitmap( 0, "..\bitmaps\Level1.bmp" ), ; // BitMaps de 14 x 32
ReadBitmap( 0, "..\bitmaps\Level2.bmp" ), ;
ReadBitmap( 0, "..\bitmaps\Level3.bmp" ), ;
ReadBitmap( 0, "..\bitmaps\Level4.bmp" ),;
ReadBitmap( 0, "..\bitmaps\Level5.bmp" ) }
local n
if ! File( "clientes.dbf" )
DbCreate( "Clientes.dbf", { { "Nombre", "C", 40, 0 },;
{ "Direccion", "C", 50, 0 },;
{ "Telefono", "C", 12, 0 },;
{ "Edad", "N", 2, 0 },;
{ "Productos", "C", 10, 0 },;
{ "Nivel", "N", 2, 0 } } )
endif
USE Clientes
if RecCount() == 0
APPEND BLANK
endif
INDEX ON Clientes->Nombre TO CliName
SET INDEX TO CliName
GO TOP
DEFINE DIALOG oDlg FROM 3, 3 TO 26, 79 TITLE "Clients Management"
@ 0, 1 SAY " &Clients List" OF oDlg
@ 1, 1 LISTBOX oLbx FIELDS aHBitmaps[ Max( 1, Clientes->Nivel ) ],;
Clientes->Nombre, AllTrim( Clientes->Direccion ),;
Clientes->Telefono,;
Str( Clientes->Edad, 3 ) ;
HEADERS "L", "Name", "Address", "Phone", "Age" ;
FIELDSIZES 16, 222, 213, 58, 24 ;
SIZE 284, 137 OF oDlg
// Lets use different row colors
oLbx:nClrText = { || SelColor( Clientes->Nivel ) }
oLbx:nClrForeFocus = { || SelColor( Clientes->Nivel ) }
oLbx:bRClicked = { | nRow, nCol | ShowPopup( nRow, nCol, oLbx ) }
// Try different line styles !!!
oLbx:nLineStyle = 1
oLbx:bKeyChar := {|nKey| if( nKey == VK_RETURN , EditRecord( oLbx ) , )}
oLbx:aJustify = { .f., .f., .t., .f., .t. }
// Uncomment this to quickly calculate the desired columns width
// Right click with the mouse over the browse and you will
// see the columns sizes!
// oLbx:bRClicked = { || oLbx:ShowSizes() }
@ 8.7, 1.4 BUTTON "&New" OF oDlg ACTION EditClient( oLbx, .t. ) ;
SIZE 40, 12
@ 8.7, 9.4 BUTTON "&Modify" OF oDlg ACTION EditClient( oLbx, .f. ) ;
SIZE 40, 12
@ 8.7, 17.4 BUTTON "&Delete" OF oDlg ACTION DelClient( oLbx ) SIZE 40, 12
@ 8.7, 25.4 BUTTON "&Search" OF oDlg ACTION SeekClient( oLbx ) SIZE 40, 12
@ 8.7, 33.4 BUTTON "&Print" OF oDlg ;
ACTION oLbx:Report( "clients Report", .t. ) ; // .t. --> wants preview
SIZE 40, 12
@ 8.7, 42 BUTTON "&Exit" OF oDlg ACTION oDlg:End() SIZE 40, 12
ACTIVATE DIALOG oDlg
USE
AEval( aHBitmaps, { | hBmp | DeleteObject( hBmp ) } )
return nil
Re: Bitmap on listbox
Posted: Wed Aug 12, 2009 10:45 pm
by Arturo Lopesoria
I dont know FWH yet, but apears to be very similar, maybe if you increase column 1 size more than 16...
Re: Bitmap on listbox
Posted: Thu Aug 13, 2009 8:19 am
by mmercado
Hi Silvio:
Silvio wrote:I tried fwbrowse sample into fwppc but it not run ok
I not see any bitmaps
I want show bitmaps for level as fwbrowse.prg ( clients functions)
You should better use resources for bitmaps, here you are a working sample:
Code: Select all
#include "FWCE.ch"
//----------------------------------------------------------------------------//
Function Main()
Local oWnd, oLbx, ;
aHBitMaps:= { LoadBitmap( GetResources(), "Level1" ), ;
LoadBitmap( GetResources(), "Level3" ), ;
LoadBitmap( GetResources(), "Level2" ), ;
LoadBitmap( GetResources(), "Level4" ), ;
LoadBitmap( GetResources(), "Level5" ) }
USE ( CurDir() + "\Clientes" ) EXCLUSIVE NEW
INDEX ON Clientes->Nombre TO CliName
SET INDEX TO CliName
GO TOP
DEFINE WINDOW oWnd TITLE "Clients Management"
@ 0, 0 LISTBOX oLbx ;
FIELDS aHBitmaps[ Max( 1, Clientes->Nivel ) ], ;
Clientes->Nombre, AllTrim( Clientes->Direccion ), ;
Clientes->Telefono, ;
Str( Clientes->Edad, 3 ) ;
HEADERS "L", "Name", "Address", "Phone", "Age" ;
FIELDSIZES 16, 112, 112, 58, 24 ;
SIZE 234, 263 PIXEL OF oWnd
// Lets use different row colors
oLbx:nClrText = { || SelColor( Clientes->Nivel ) }
oLbx:nClrForeFocus = { || SelColor( Clientes->Nivel ) }
// Try different line styles !!!
oLbx:nLineStyle = 1
oLbx:aJustify = { .F., .F., .F., .F., .T. }
ACTIVATE WINDOW oWnd ON CLICK MsgInfo( "Click!" )
DbCloseAll()
Return Nil
//----------------------------------------------------------------------------//
Static Function SelColor( nNivel )
Local nColor := CLR_BLACK
Do Case
Case nNivel == 1
nColor = CLR_HRED
Case nNivel == 2
nColor = CLR_HGREEN
Case nNivel == 3
nColor = CLR_HBLUE
EndCase
Return nColor
The RC file
Code: Select all
Level1 BITMAP "..\Bitmaps\Level1.bmp"
Level2 BITMAP "..\Bitmaps\Level2.bmp"
Level3 BITMAP "..\Bitmaps\Level3.bmp"
Level4 BITMAP "..\Bitmaps\Level4.bmp"
Level5 BITMAP "..\Bitmaps\Level5.bmp"
Make sure that bitmaps are in refered FwPpc folder and "Clientes.dbf" is in PocketPc testing folder.
Best regards.
Manuel Mercado.
Re: Bitmap on listbox
Posted: Thu Aug 13, 2009 2:10 pm
by Silvio
thanks,
but why we cannot use bitmap at folder and we must use resources?
Perhaps there is a bug on xharbour ce?
I sad this because i try to use pp4 hand basic last year before to purchase fwppc and with it can use all in source , the last one you cannot use are dbf files instead of pdb files.
Manuel, when we can use your sbrowse and your sbutton in fwppc?
I am sure U're working for us...
.
Re: Bitmap on listbox
Posted: Thu Aug 13, 2009 2:48 pm
by Silvio
thanks to All
NOW i SEE BITMAPS ON listbox
the error I made is this :
aHBitMaps:= { ReadBitmap( 0, CurDir() +"\Level1.bmp" ), ; // BitMaps de 14 x 32
ReadBitmap( 0, CurDir() +"\Level2.bmp" ), ;
ReadBitmap( 0, CurDir() +"\Level3.bmp" ), ;
ReadBitmap( 0, CurDir() +"\Level4.bmp" ),;
ReadBitmap( 0, CurDir() +"\Level5.bmp" ) }
instead of this
aHBitMaps:= { LoadBitmap( GetResources(), "Level1" ), ;
LoadBitmap( GetResources(), "Level3" ), ;
LoadBitmap( GetResources(), "Level2" ), ;
LoadBitmap( GetResources(), "Level4" ), ;
LoadBitmap( GetResources(), "Level5" ) }
Re: Bitmap on listbox
Posted: Thu Aug 13, 2009 4:00 pm
by mmercado
Hi Silvio:
Silvio wrote:but why we cannot use bitmap at folder and we must use resources?
Perhaps there is a bug on xharbour ce?
Not such a bug, it was just an advice for portability.
Silvio wrote:I sad this because i try to use pp4 hand basic last year before to purchase fwppc and with it can use all in source , the last one you cannot use are dbf files instead of pdb files.
?????
Silvio wrote:Manuel, when we can use your sbrowse and your sbutton in fwppc?
No problem with TSBrowse, TSButton have problems with transparency and some non supported GDI functions.
Silvio wrote:I am sure U're working for us...
Are you?
Regards.
Manuel Mercado
Re: Bitmap on listbox
Posted: Thu Aug 13, 2009 4:22 pm
by Silvio
Sorry Manuel
Fwppc perhaps not support GDI
but you can found helps from this
http://www.pocketpcdn.com/forum/index.php
Or you can see here :
http://www.pocketpcdn.com/articles/tran ... tatic.html
or here
http://www.codeproject.com/KB/mobile/tr ... trols.aspx
For WinCE 2.0 and later you can the TransparentImage() instead of BitBlt which takes a COLORREF as its last parameter that is used as a transparency color
Here's the function prototype for TransparentImage
BOOL TransparentImage(HDC hdcDest, LONG DstX, LONG DstY, LONG DstCx, LONG DstCy, HANDLE hSrc, LONG SrcX, LONG SrcY, LONG SrcCx, LONG SrcCy, COLORREF TransparentColor );
It may not do exactly what you want but it will give you a wider range to use as the transparent color
for sample I found How draw a circle in Transparency
/// This will hold the data regarding the Transparency
BLENDFUNCTION blendFunction;
blendFunction.BlendOp = (byte)0x00;
blendFunction.BlendFlags = (byte)0x00;
blendFunction.SourceConstantAlpha = 210;
blendFunction.AlphaFormat = (byte)0;
////////////////////////////////////////////////////////////////////////////////
/////////// Draw the transpernt image
if (0 == AlphaBlend(hdc, 0, BTStripY,DEVICEWIDTH,100,
hcompdc, 0, 0, 48,20, blendFunction));