Mr Rao,
here not run ok
I made some test and the callout is draw far from the umbrela I wish
Please compile this sample
I cannot Use 128 sizes for umbrellas but 40/60
I add akso a timer timer
Code: Select all | Expand
#include "fivewin.ch"
#define SIZEH 40
#define SIZEW 40
#define NUMBER_UMBRELLAS 100
function Main()
local oDlg, oBrush
local aBtn[ NUMBER_UMBRELLAS ], aCallOut := {}
local n, nRow, nCol
local aBmp
aBmp := WndReadPalBmpEx( nil, "CALLOUT.PNG" )
DEFINE BRUSH oBrush FILE "c:\work\fwh\bitmaps\sea.bmp" RESIZE
DEFINE DIALOG oDlg SIZE 680,600 PIXEL TRUEPIXEL BRUSH oBrush
nRow := 120
nCol := 5
nUmbrella:= 0
for n := 1 to NUMBER_UMBRELLAS
@ nRow, nCol BTNBMP aBtn[ n ] FILE "UMBRELLA.PNG" SIZE SIZEW,SIZEH PIXEL OF oDlg FLAT NOBORDER Prompt ltrim(str(n))
aBtn[ n ]:lTransparent := .t.
nCol += SIZEW+1
nUmbrella+= 1
if nUmbrella ==20
nRow += SIZEH+1
nCol := 5
nUmbrella:= 0
endif
next
@ 60,40 BTNBMP PROMPT "CALLOUT" SIZE 128,32 PIXEL OF oDlg 2007 CENTER ;
Action( CallOutBtn( aBtn[ 13 ], "Silvio"+CRLF+" Falconi ", aBmp ),;
CallOutBtn( aBtn[ 6 ], "Antonio"+CRLF+" Linares ", aBmp ) )
/*ACTION If( Empty( aCallOut ), ;
( aCallOut := {}, ;
AAdd( aCallOut, CallOutBtn( aBtn[ 3 ], "Silvio"+CRLF+" falconi ", aBmp ) ), ;
AAdd( aCallOut, CallOutBtn( aBtn[ 6 ], "Antonio"+CRLF+"Linares", aBmp ) ) ), ;
( AEval( aCallOut, { |o| o:End() } ), aCallOut := {} ) )*/
ACTIVATE DIALOG oDlg CENTERED
RELEASE BRUSH oBrush
PalBmpFree( aBmp )
return nil
function CallOutBtn( oBtn, cMsg, aBmp )
local oDlg, oFont, nRow, nCol, aPt
local nDlgWidth := 89 // can specify a lower size
nRow := oBtn:nTop //- ( nDlgWidth * 0.6 )
nCol := oBtn:nLeft - 20
aPt := ClientToScreen( oBtn:oWnd:hWnd, { nRow, nCol } )
if aPt[ 1 ] > 32768
aPt[ 1 ] -= 65535
endif
if aPt[ 2 ] > 32768
aPt[ 2 ] -= 65535
endif
DEFINE FONT oFont NAME "TAHOMA" SIZE 0,-16
DEFINE DIALOG oDlg SIZE nDlgWidth,( nDlgWidth * 125/128) PIXEL TRUEPIXEL COLOR CLR_BLACK,1 STYLE WS_POPUP FONT oFont
RELEASE FONT oFont
WITH OBJECT oDlg
:nSeeThroClr := 1
:bLClicked := { || oDlg:End() }
:bPainted := { || oDlg:SayPalBmp( aBmp ), ;
oDlg:SayText( cMsg, { nil, nil, -0.2, nil } ) }
END
ACTIVATE DIALOG oDlg NOWAIT ;
ON INIT ( oDlg:Move( aPt[ 1 ], aPt[ 2 ] ),BuildTimer( oDlg ) )
return oDlg
function BuildTimer( oDlg )
local oTimer
local nStart := Seconds()
DEFINE TIMER oTimer OF oDlg ;
INTERVAL 10;
ACTION If( Seconds() - nStart > 5, oDlg:End(),)
ACTIVATE TIMER oTimer
return nil
Since from 1991/1992 ( fw for clipper Rel. 14.4 - Momos)
I use : FiveWin for Harbour November 2023 - January 2024 - Harbour 3.2.0dev (harbour_bcc770_32_20240309) - Bcc7.70 - xMate ver. 1.15.3 - PellesC - mail: silvio[dot]falconi[at]gmail[dot]com