Te pongo una adaptaci贸n de "FWH\Samples\LedDisp.prg." .
// A nice Odometer developed by a FiveWin user
#include "FiveWin.ch"
Static nGet
Static oBmp1, oBmp2, oBmp3, oBmp4, oBmp5
//----------------------------------------------------------------------------//
function Odo()
聽 聽local oDlg, oFont1
聽 聽LOCAL cNGanador := "333"
LOCAL aDatos:={"001","002","003","004","005","006","007","008","009","010",;
聽 聽 聽 聽 聽 聽 聽 聽"011","012","013","014","015","016","017","018","019","020"}
聽 聽DEFINE FONT oFont1 NAME "Arial" SIZE 0,-36 BOLD
聽 聽DEFINE DIALOG oDlg FROM 0, 0 TO 15, 60 TITLE "PROBANDO EL CONTADOR"
聽 聽/* Cada d铆gito es de 34 x 48 */
聽 聽@ 聽0, 0 BITMAP oBmp1 FILE "..\bitmaps\display.bmp" OF oDlg
聽 聽@ 聽0, 0 BITMAP oBmp2 FILE "..\bitmaps\display.bmp" OF oDlg
聽 聽@ 聽0, 0 BITMAP oBmp3 FILE "..\bitmaps\display.bmp" OF oDlg
聽 聽@ 聽0, 0 BITMAP oBmp4 FILE "..\bitmaps\display.bmp" OF oDlg
聽 聽@ 聽0, 0 BITMAP oBmp5 FILE "..\bitmaps\display.bmp" OF oDlg
聽 聽oBmp1:nTop 聽 聽:= 28
聽 聽oBmp1:nLeft 聽 := 80
聽 聽oBmp1:nBottom := 52
聽 聽oBmp1:nRight 聽:= 97
聽 聽oBmp2:nTop 聽 聽:= 28
聽 聽oBmp2:nLeft 聽 := 98
聽 聽oBmp2:nBottom := 52
聽 聽oBmp2:nRight 聽:= 115
聽 聽oBmp3:nTop 聽 聽:= 28
聽 聽oBmp3:nLeft 聽 := 116
聽 聽oBmp3:nBottom := 52
聽 聽oBmp3:nRight 聽:= 133
聽 聽oBmp4:nTop 聽 聽:= 28
聽 聽oBmp4:nLeft 聽 := 134
聽 聽oBmp4:nBottom := 52
聽 聽oBmp4:nRight 聽:= 151
聽 聽oBmp5:nTop 聽 聽:= 28
聽 聽oBmp5:nLeft 聽 := 152
聽 聽oBmp5:nBottom := 52
聽 聽oBmp5:nRight 聽:= 169
聽 聽@ 73,50 SAY "N煤mero ganador:" OF oDlg PIXEL
聽 聽@ 66,110 SAY oSay1 VAR cNGanador OF oDlg PIXEL FONT oFont1 COLOR nRGB(175,0,0)
聽 聽@ 10,100 BUTTON "&Sorteo" OF oDlg SIZE 40, 12 ;
聽 聽 聽 ACTION Solo(aDatos,oSay1) PIXEL
聽 聽ACTIVATE DIALOG oDlg CENTERED ;
聽 聽 聽 聽 聽 聽ON INIT (oBmp1:nX:=-528,oBmp2:nX:=-528,oBmp3:nX:=-528,oBmp4:nX:=-528,oBmp5:nX:=-528,;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 oSay1:Hide())
return nil
Function Solo(aDatos,oSay1)
聽 聽 Local i, nNumRam, nVeces := 10 // 50
聽 聽 oSay1:Hide()
聽 聽 for i = 1 to nVeces
聽 聽 聽 聽 nNumRam := Round(HB_Random(1,Len(aDatos)),0)
聽 聽 聽 聽 Pone(oBmp1, oBmp2, oBmp3, oBmp4, oBmp5, nNumRam)
聽 聽 聽 聽 if i==nVeces
聽 聽 聽 聽 聽 聽oSay1:SetText(StrZero(nNumRam,5))
聽 聽 聽 聽 聽 聽oSay1:Show()
聽 聽 聽 聽 endif
聽 聽 聽 聽 SysWait(0.2)
聽 聽 聽 聽 SysRefresh()
聽 聽 next i
return NIL
//---------------------------------------------------------------------------//
Function Pone ( oB1, oB2, oB3, oB4, oB5, nCantidad)
聽 Local cNum := SPACE(5)
聽 Local nLen := 0
聽 Local nDig1 := 0
聽 Local nDig2 := 0
聽 Local nDig3 := 0
聽 Local nDig4 := 0
聽 Local nDig5 := 0
聽 聽 聽 聽 cNum := STR(nCantidad)
聽 聽 聽 聽 nLen := LEN(cNum)
聽 聽 聽 聽 nDig1 := VAL(SUBSTR(cNum, nLen - 4, 1))
聽 聽 聽 聽 if nDig1 = 0
聽 聽 聽 聽 聽 聽oB1:nX := -528 聽 聽 聽 聽 // 0 - (11 * 48)
聽 聽 聽 聽 else
聽 聽 聽 聽 聽 聽oB1:nX := 0 - (nDig1 * 48)
聽 聽 聽 聽 endif
聽 聽 聽 聽 nDig2 := VAL(SUBSTR(cNum, nLen - 3, 1))
聽 聽 聽 聽 if nDig2 = 0 .AND. nDig1 = 0
聽 聽 聽 聽 聽 聽oB2:nX := -528
聽 聽 聽 聽 else
聽 聽 聽 聽 聽 聽 聽 聽 oB2:nX := 0 - (nDig2 * 48)
聽 聽 聽 聽 endif
聽 聽 聽 聽 nDig3 := VAL(SUBSTR(cNum, nLen - 2, 1))
聽 聽 聽 聽 if nDig3 = 0 .AND. nDig2 = 0 .AND. nDig1 = 0
聽 聽 聽 聽 聽 聽oB3:nX := 0 // -528
聽 聽 聽 聽 else
聽 聽 聽 聽 聽 聽 聽 聽 oB3:nX := 0 - (nDig3 * 48)
聽 聽 聽 聽 endif
聽 聽 聽 聽 nDig4 := VAL(SUBSTR(cNum, nLen - 1, 1))
聽 聽 聽 聽 if nDig4 = 0 .AND. nDig3 = 0 .AND. nDig2 = 0 .AND. nDig1 = 0
聽 聽 聽 聽 聽 聽oB4:nX := 0 // -528
聽 聽 聽 聽 else
聽 聽 聽 聽 聽 聽 聽 聽 oB4:nX := 0 - (nDig4 * 48)
聽 聽 聽 聽 endif
聽 聽 聽 聽 nDig5 := VAL(SUBSTR(cNum, nLen, 1))
聽 聽 聽 聽 oB5:nX := 0 - (nDig5 * 48)
聽 聽 聽 聽 oB5:Refresh( .F. )
聽 聽 聽 聽 oB4:Refresh( .F. )
聽 聽 聽 聽 oB3:Refresh( .F. )
聽 聽 聽 聽 oB2:Refresh( .F. )
聽 聽 聽 聽 oB1:Refresh( .F. )
聽 聽 聽 聽 SysRefresh()
return NIL
Aj煤stalo a tus necesidades.