Von Richard Maurukas am 25 März, 1998 um 15:02:21:
Antwort auf: Progress und StatusBar mit PROFAN 6 (16-Bit / 32-Bit) von Harald E. Oswald am 23 März, 1998 um 10:04:04:
'==========================================================================
'Farbige Progressbars für Profan alle WIN Versionen (c) Richard Maurukas
'==========================================================================
'
'Bei Versionen die den Befehl Startpaint/Endpaint kennen, kann
'der Fortschritt dann im gewünschten Fenster dargestellt werden.
'
'
' Horizontal
' Frei definierbare ProgressFarbe
' Frei definierbare Textfarbe
'
'Aufruf Parameter:
'
'OHNECONTROL_Rahmen %HWND,rgb(0,0,0),0,80,180,300,20
'
'FORTSCHRITT_OhneControl %HWND,rgb(0,0,0),e%,80,180,300,20
'
'Parameter 1= das Fensterhandle in dem der Fortschritt rein soll
'Parameter 2= Die gewünschte BalkenFarbe RGB(R,G,B)
'Parameter 3= der Fortschritt in % in e%
'Parameter 4= Die X-Koordinate des Rahmens links
'Parameter 5= Die Y-Koordinate des Rahmens links
'Parameter 6= Die Breite des Rahmens
'Parameter 7= Die Höhe des Rahmens
' nicht kleiner als 12 Pixel bei Usepen X,10.
'
'(c) 1998 Richard Maurukas
'============================================================================
'######################## ALLE WIN's #####################################
PROC OHNECONTROL_Rahmen '--------------------------------------------------
Parameters PRGRSS_WIN%,PRGRSS_COLOR%,PRGRSS_PROZENT%, \
PRGRSS_X%,PRGRSS_Y%,PRGRSS_DX%,PRGRSS_DY%
let PRGRSS_DX% =add(PRGRSS_X%,PRGRSS_DX%)
Let PRGRSS_DY% =add(PRGRSS_Y%,PRGRSS_DY%)
STARTPAINT PRGRSS_WIN%
Usepen 0,1,PRGRSS_COLOR%
Usebrush 0,PRGRSS_COLOR%
Rectangle PRGRSS_X%,PRGRSS_Y%-PRGRSS_DX%,PRGRSS_DY%
Usepen 0,1,rgb(128,128,128)
Line sub(PRGRSS_X%,1),sub(PRGRSS_Y%,1)-PRGRSS_DX%,sub(PRGRSS_Y%,1)
Line sub(PRGRSS_X%,1),sub(PRGRSS_Y%,1)-sub(PRGRSS_X%,1),PRGRSS_DY%
Usepen 0,1,rgb(255,255,255)
Line PRGRSS_X%,PRGRSS_DY%-PRGRSS_DX%,PRGRSS_DY%
Line PRGRSS_DX%,PRGRSS_Y%-PRGRSS_DX%,PRGRSS_DY%
ENDPAINT
ENDPROC '-------------------------------------------------------------------
PROC FORTSCHRITT_OhneControl '----------------------------------------------
Parameters PRGRSS_WIN%,PRGRSS_COLOR%,PRGRSS_PROZENT%, \
PRGRSS_X%,PRGRSS_Y%,PRGRSS_DX%,PRGRSS_DY%
declare PRGRSSVOR_X%
Declare PRGRSS_TEXT%
LET PRGRSS_TEXT%=add(PRGRSS_Y%,sub(div&(PRGRSS_DY%,2),8))
'Controlbreite u. Höhe in BildschirmKoordinaten umrechnen
Let PRGRSS_X% =add(PRGRSS_X%,7)
Let PRGRSS_Y% =add(PRGRSS_Y%,7)
let PRGRSS_DX% =add(PRGRSS_X%,PRGRSS_DX%)
Let PRGRSS_DY% =sub(add(PRGRSS_Y%,PRGRSS_DY%),13)
let PRGRSSVOR_X%=div&(mul(PRGRSS_PROZENT%,\
sub(PRGRSS_DX%,add(PRGRSS_x%,13))),100)
STARTPAINT PRGRSS_WIN%
'Horizontal links nach rechts-----------------------------------------
Usepen 1,10,RGB(192,192,192)
Usebrush 1,RGB(192,192,192)
if lt(add(PRGRSS_X%,add(PRGRSSVOR_X%,18)),PRGRSS_DX%)
Rectangle add(add(PRGRSS_X%,7),PRGRSSVOR_X%),PRGRSS_Y% \
-sub(PRGRSS_DX%,13),PRGRSS_DY%
endif
Usepen 1,10,PRGRSS_COLOR%
Usebrush 1,PRGRSS_COLOR%
Rectangle PRGRSS_X%,PRGRSS_Y%-\
add(PRGRSS_X%,PRGRSSVOR_X%),PRGRSS_DY%
Textcolor RGB(255,255,255),-1
Drawtext add(PRGRSS_X%,sub(div&(PRGRSS_DX%,2),40)),PRGRSS_TEXT%,\
add$(Str$(PRGRSS_PROZENT%),"%")
ENDPAINT
ENDPROC '------------------------------------------------------------------
'######################### ENDE Alle WIN's ################################
Window 150,100-300,150
Windowtitle "Farbige Progress Bar's , (c) Richard Maurukas"
settruecolor 1
cls rgb(192,192,192)
declare e%,Ende%,Los%
let los%=createbutton(%Hwnd,"&Los",80,60,120,20)
'Für alle WIN's ein Progress-Rahmen-vor dem Progress einblenden------------
'Positionierung des Rahmens. Para 7 nicht kleiner als 12.
' Para1 2 3 4 5 6 7
OHNECONTROL_Rahmen %HWND,rgb(0,0,0),0,20,20,240,25
'--------------------------------------------------------------------------
'
Let Ende%=0
Whilenot Ende%
Waitinput
If getfocus(Los%)
Whilenot equ(e%,100) 'von 0-100 % übergeben
let e%=add(e%,1)
'Für alle Wins der Fortschritt--------------------------------------
'In e% wird der Prozentwert von 0-100 übergeben.
Fortschritt_ohneControl %HWND,RGB(128,0,128),e%,20,20,240,25
'-------------------------------------------------------------------
wend
Let e%=0
Endif
WEND
END