Re: Use a character from another codepage

Author: Dan Olsson

Posted: 2010-01-26 at 04:37:51

At 2010-01-25 19:44, Graham Trott wrote:

>I would just like to create a simple progress bar that does not use

>any screen real estate.

I have used a routine for many years that resembles FP:s internal

progress bar showing progress during sql-selects. I have propably

"stolen" it somewhere, can't remember...

*!*****************************************************************************

*!

*! Function: PROGRESS()

*!

*!*****************************************************************************

FUNCTION progress

PARAMETERS lnPct, lcTopMsg, lcBotMsg

PRIVATE lnPct, lcBotMsg, lcTopMsg, llGraphic, lnPctAt, lcPctAt

*****

* Validate the Parameters

*****

IF TYPE("m.lnPct") # "N"

m.lnPct = 0

ENDIF

IF TYPE("m.lcBotMsg") # "C"

m.lcBotMsg = ""

ENDIF

IF TYPE("m.lcTopMsg") # "C"

m.lcTopMsg = ""

ENDIF

#DEFINE c_dlgface "MS Sans Serif"

#DEFINE c_dlgsize 8.000

#DEFINE c_dlgstyle "B"

* define window when calling the first time

*

IF NOT WEXIST('W_PROGRESS')

* This only gets run once, first time called

*

SET CURSOR OFF

DEFINE WINDOW w_progress ;

AT INT((SROW() - (( 5.615 * FONTMETRIC(1, c_dlgface,

c_dlgsize, c_dlgstyle )) /

FONTMETRIC(1,WFONT(1,""),WFONT(2,""),WFONT(3,"")))) / 2) , ;

INT((SCOL() - (( 63.833 * FONTMETRIC(6, c_dlgface,

c_dlgsize, c_dlgstyle )) /

FONTMETRIC(1,WFONT(1,""),WFONT(2,""),WFONT(3,"")))) / 2) ;

SIZE 5.615, 63.833 ;

FONT c_dlgface, c_dlgsize ;

STYLE c_dlgstyle ;

NOCLOSE ;

NONE ;

COLOR RGB(0, 0, 0, 192, 192, 192)

* nofloat ;

MOVE WINDOW w_progress CENTER

ACTIVATE WINDOW w_progress NOSHOW

* Draw lines to create 'raised-panel' look:

@ 0.000, 0.000 TO 0.000, 63.833 COLOR RGB( 255, 255, 255,

255, 255, 255)

@ 0.000, 0.000 TO 5.615, 0.000 COLOR RGB( 255, 255, 255,

255, 255, 255)

@ 0.385, 0.667 TO 5.231, 0.667 COLOR RGB( 128, 128, 128,

128, 128, 128)

@ 0.308, 0.667 TO 0.308, 63.167 COLOR RGB( 128, 128, 128,

128, 128, 128)

@ 0.385, 63.000 TO 5.308, 63.000 COLOR RGB( 255, 255, 255,

255, 255, 255)

@ 5.231, 0.667 TO 5.231, 63.167 COLOR RGB( 255, 255, 255,

255, 255, 255)

@ 5.538, 0.000 TO 5.538, 63.833 COLOR RGB( 128, 128, 128,

128, 128, 128)

@ 0.000, 63.667 TO 5.615, 63.667 COLOR RGB( 128, 128, 128,

128, 128, 128)

@ 3.000, 3.333 TO 4.231, 3.333 COLOR RGB( 128, 128, 128,

128, 128, 128)

@ 3.000, 60.333 TO 4.308, 60.333 COLOR RGB( 255, 255, 255,

255, 255, 255)

@ 3.000, 3.333 TO 3.000, 60.333 COLOR RGB( 128, 128, 128,

128, 128, 128)

@ 4.231, 3.333 TO 4.231, 60.500 COLOR RGB( 255, 255, 255,

255, 255, 255)

SHOW WINDOW w_progress TOP

ELSE

ACTIVATE WINDOW w_progress

ENDIF

* Display the horizontal progress bar

DO CASE

CASE m.lnPct > 0 AND m.lnPct < 100

m.nblocks = (m.lnPct / 100) * 57

m.lcPct = LTRIM(STR(m.lnPct))+" %"

IF PARAMETERS() > 2

@ 0.5, 3 SAY m.lcTopMsg FONT c_dlgface, c_dlgsize

STYLE c_dlgstyle

ENDIF

IF PARAMETERS() > 1

@ 1.5, 3 SAY m.lcBotMsg FONT c_dlgface, c_dlgsize

STYLE c_dlgstyle

ENDIF

m.lnPctAt = (WCOLS()-TXTWIDTH(m.lcPct))/2

@ 3.00, 3.33 TO 4.231, m.nBlocks + 3.333 PATTERN 1 COLOR

RGB( 128, 128, 128, 128, 128, 128)

* @ 3.10, m.nBlocks+3.43 TO 4.231, 60.400 PATTERN 1 COLOR

RGB(192, 192, 192, 192, 192, 192)

@ 3.10, m.nBlocks+3.40 TO 4.231, 60.400 PATTERN 1 COLOR

RGB(192, 192, 192, 192, 192, 192) && DO:970901

IF m.lnPct < 50

@ 3.15, m.lnPctAt SAY m.lcPct FONT c_dlgface,

c_dlgsize STYLE c_dlgstyle+"T" COLOR RGB( 0, 0, 0, 192, 192, 192)

ELSE

@ 3.15, m.lnPctAt SAY m.lcPct FONT c_dlgface,

c_dlgsize STYLE c_dlgstyle+"T" COLOR RGB(255, 255, 255, 192, 192, 192)

ENDIF

CASE m.lnPct < 1

m.nblocks = (m.lnPct / 100) * 57

m.lcPct = LTRIM(STR(m.lnPct))+" %"

IF PARAMETERS() > 2

@ 0.5, 3 SAY m.lcTopMsg FONT c_dlgface, c_dlgsize

STYLE c_dlgstyle

ENDIF

IF PARAMETERS() > 1

@ 1.5, 3 SAY m.lcBotMsg FONT c_dlgface, c_dlgsize

STYLE c_dlgstyle

ENDIF

m.lnPctAt = (WCOLS()-TXTWIDTH(m.lcPct))/2

@ 3.00, 3.33 TO 4.231, m.nBlocks + 3.333 PATTERN 1 COLOR

RGB( 128, 128, 128, 128, 128, 128)

@ 3.10, m.nBlocks+3.40 TO 4.231, 60.400 PATTERN 1 COLOR

RGB(192, 192, 192, 192, 192, 192)

IF m.lnPct < 50

@ 3.15, m.lnPctAt SAY m.lcPct FONT c_dlgface,

c_dlgsize STYLE c_dlgstyle+"T" COLOR RGB( 0, 0, 0, 192, 192, 192)

ELSE

@ 3.15, m.lnPctAt SAY m.lcPct FONT c_dlgface,

c_dlgsize STYLE c_dlgstyle+"T" COLOR RGB(255, 255, 255, 192, 192, 192)

ENDIF

CASE m.lnPct >= 100

m.nblocks = 57

m.lcPct = "100 %"

m.lnPctAt = (WCOLS()-TXTWIDTH(m.lcPct))/2

@ 3.000, 3.333 TO 4.231, m.nblocks + 3.333 PATTERN 1 COLOR

RGB(128, 128, 128, 128, 128, 128)

@ 3.15, m.lnPctAt SAY m.lcPct FONT c_dlgface, c_dlgsize

STYLE c_dlgstyle+"T" COLOR RGB(255, 255, 255, 192, 192, 192)

WAIT '' TIMEOUT .5

RELEASE WINDOW w_progress

SET CURSOR ON

ENDCASE

******************************

* Dan Olsson

* <mailto:dan@dolittle.se>

* <http://www.dolittle.se>

_______________________________________________

Post Messages to: ProFox@leafe.com

Subscription Maintenance: http://leafe.com/mailman/listinfo/profox

OT-free version of this list: http://leafe.com/mailman/listinfo/profoxtech

Searchable Archive: http://leafe.com/archives/search/profox

This message: http://leafe.com/archives/byMID/profox/6.2.5.6.2.20100126102703.10240508@dolittle.se

** All postings, unless explicitly stated otherwise, are the opinions of the author, and do not constitute legal or medical advice. This statement is added to the messages for those lawyers who are too stupid to see the obvious.

©2010 Dan Olsson