English
Source / code snippets

Fortschrittsbalken wallpaper.pcu of - 2

 

CompileMarkSeparation
Source wurde am 15.07.2007 aus der MMJ-Quellcodesammlung (Dietmar Horn) in die Babyklappe auf XProfan.Com abgelegt:
ProgressBar (2)  - Fortschrittsbalken -
(C) 2006 Nico Madysa
----- TPROGRESSBAR.INC --------------------------------------------------------------------------------------------
Def SysMetrics(1)   !USER32,GetSystemMetrics
Def CaptionX(1) %(1) + (SysMetrics(7) * 2            )
Def CaptionY(1) %(1) + (CaptionX(0)   + SysMetrics(4))
Def CenterX(1)  (%MaxX - CaptionX(%(1)) ) / 2
Def CenterY(1)  (%MaxY - CaptionY(%(1)) ) / 2
Eine ProgressBar
Class ProgressBar = -handle& , #MaxVal% , #ActVal% , GetHandle@, Destroy@,
ProgressBar@ , RaiseVal@ , SetVal@ , LowerVal@ , GetVal@
ProgressBar
Konstruktor einer Progressbar
pWnd&   : übergeordnetes Fenster
dir%    : 0 = horizontale Füllrichtung
1 = vertikale Füllrichtung
mode%   : 0 = Kästchen-Füllung
1 = fließend füllen
x%,y%   : Koordinaten der oberen, linken Ecke
dx%,dy% : Länge und Breite der ProgressBar
max%    : Füllschritte(bei z.B. 200 Dateien muss die Leiste
in 200 Schritten gefüllt werden)
Result  : Handle der ProgrssBar(eigentlich eher unwichtig)

proc ProgressBar.ProgressBar

    parameters pWnd& , dir% , mode% , x% , y% , dx% , dy% , Max%
    declare style&
    case (max% <= 0) : max% = 100
    style& = $50800000 + if(dir%,4,0) + if(mode%,1,0)
    .handle& = Control(msctls_progress32,$(3),style&,x%,y%,dx%,dy%,pWnd&,101,%hInstance)
    .MaxVal% = max%
    .ActVal% = 0
    Return .handle&

endproc

GetHandle
Liefert das Handle der ProgressBar(eigentlich eher unwichtig)
Result  : Handleder Progressbar

proc ProgressBar.GetHandle

    Return .handle&

endproc

RaiseVal
Füllt die ProgressBar
x%     : Wert, um den die Bar gefüllt wird(Die Bar zeigt an,
wie viele Prozente der aktulle Wert vom maximalen beträgt)
Result : momentaner Wert oder -1 bei Fehler

proc ProgressBar.RaiseVal

    parameters x%
    declare val% , res%
    .ActVal% = .ActVal% + x%

    if .ActVal% > .MaxVal%

        .ActVal% = .MaxVal%

    endif

    val% = (.ActVal% * 100) / .MaxVal%
    res% = Sendmessage(.handle&,$402,val%,0)
    case    res% : Return .ActVal%
    casenot res% : Return (-1)

endproc

LowerVal
Leert die ProgressBar
x%     : Wert, um den die Bar geleert wird(Die Bar zeigt an,
wie viele Prozente der aktulle Wert vom maximalen beträgt)
Result : momentaner Wert oder -1 bei Fehler

proc ProgressBar.LowerVal

    parameters x%
    declare val% , res%

    if .ActVal% > x%

        .ActVal% = .ActVal% - x%

    else

        .ActVal% = 0

    endif

    val% = (.ActVal% * 100) / .MaxVal%
    res% = Sendmessage(.handle&,$402,val%,0)
    case    res% : Return .ActVal%
    casenot res% : Return (-1)

endproc

RaiseVal
Setzt den Wert der ProgressBar
x%     : Wert, auf den .Actval% gesetzt wird(Die Bar zeigt an,
wie viele Prozente der aktulle Wert vom maximalen beträgt)
Result : momentaner Wert oder -1 bei Fehler

proc ProgressBar.SetVal

    parameters x%
    declare val% , res%
    .ActVal% = x%

    if .ActVal% < 0

        .Actval% = 0

    elseif .ActVal% > .MaxVal%

        .ActVal% = .MaxVal%

    endif

    val% = (.ActVal% * 100) / .MaxVal%
    res% = Sendmessage(.handle&,$402,val%,0)
    case    res% : Return .ActVal%
    casenot res% : Return (-1)

endproc

GetVal
Gibt den momentanen Wert der ProgressBar zurück.
Selber Effekt wie ProgressBar.RaiseVal(0)
Result : momentaner Wert

proc ProgressBar.GetVal

    Return .ActVal%

endproc

Destroy
Destruktor-Methode

proc ProgressBar.Destroy

    parameters class#

    if Upper$(ClassOf(class#)) = PROGRESSBAR

        DestroyWindow(class#.GetHandle())
        dispose class#
        return 1

    elseif Upper$(ClassOf(class#)) = PROGRESSBARWINDOW

        DestroyWindow(.hDia&)
        dispose class#
        return 1

    else

        return 0

    endif

endproc

Eine Dialogbox mit ProgressBar
von ProgressBar abgeleitet
Class ProgressBarWindow = ProgressBar , -handle& , -hdia& , -ht& , -valincpt%,
ProgressBarWindow@ , SetCaption@ , GetCaption@ ,
SetWText@ , GetWText@ , GetHandle@ , RaiseVal@ ,
SetVal@ , LowerVal@ , ValToCaption@ , DelCaptionVal@ ,
ValInCaption@
ProgressBarWindow
Konstruktor-Methode
pWnd&    : übergeordnetes Fenster der Dialogbox
caption$ : Titel der Dialogbox
text$    : evtl. erläuternder Text
mode%    : 0 = Kästchen-Füllung
1 = fließendes Füllen
x% , y%  : obere linke Ecke der Dialogbox
max%     : maximaler Wert der ProgressBar (bei actval = maxval ist
die ProgressBar voll)
Result   : Handle der Dialogbox

proc ProgressBarWindow.ProgressBarWindow

    parameters pWnd& , caption$ , text$ , mode% , x% , y% , max%
    declare style& , dx% , dy%
    style& = $50800000 + if(mode%,1,0)
    .hdia&   = Create(Dialog,pWnd& ,caption$,%MaxX,%MaxY,225,90)
    .ht&     = Create(Text  ,.hdia&,text$   ,5    ,5    ,215,50)
    .handle& = Control(msctls_progress32,$(3),style&,5,60,215,25,.hdia&,101,%hInstance)
    .MaxVal% = max%
    .ActVal% = 0
    dx% = 450 -  width(.hdia&)
    dy% = 180 - height(.hdia&)
    SetWindowPos .hdia& = x% , y% - dx% , dy% ; 0
    Return .hdia&

endproc

SetCaption
Setzt den Titel der Dialogbox
caption$ : Neuer Titel

proc ProgressBarWindow.SetCaption

    parameters caption$
    declare ncap$ , val%
    ncap$ = caption$
    val% = (.Actval% * 100) / .MaxVal%

    if .valincpt%

        ncap$ = ncap$ +  -  + str$(val%) + %

    endif

    SetText .hdia& , ncap$

endproc

GetCaption
Liest den Titel der Dialogbox aus
Result : Titel

proc ProgressBarWindow.GetCaption

    declare hpbw& , cpt$
    hpbw& = .hdia&
    cpt$  = Gettext$(hpbw&)
    Return cpt$

endproc

SetWText
Setzt den erläuternden Text IN der Dialogbox
text$ : neuer Text

proc ProgressBarWindow.SetWText

    parameters text$
    SetText .ht& , text$

endproc

GetWText
Liest den erläuternden Text aus
Result : erläuternder Text

proc ProgressBarWindow.GetWText

    Return GetText$(.ht&)

endproc

GetHandle
Liefert das Handle der Dialogbox
Result : Handle der DialogBox

proc ProgressBarWindow.GetHandle

    Return .hdia&

endproc

ValToCaption
Der momentane Prozentsatz wird in der Titelzeile angezeigt

proc ProgressBarWindow.ValToCaption

    ifnot .valincpt%

        .SetCaption(.GetCaption()+ - +str$(.ActVal%)+%)
        .valincpt% = 1

    endif

endproc

DelCaptionVal
Der Prozentsatz wird wieder aus der Titelzeile entfernt

proc ProgressBarWindow.DelCaptionVal

    declare cpt$

    if .valincpt%

        cpt$ = .GetCaption()

        if .ActVal% >= 100  7(3) Stellen weg

            cpt$ = Left$(cpt$,len(cpt$)-7)

        elseif .ActVal% >= 10  6(2) Stellen weg

            cpt$ = Left$(cpt$,len(cpt$)-6)
            else  5(1) Stellen weg
            cpt$ = Left$(cpt$,len(cpt$)-5)

        endif

        .valincpt% = 0

    endif

endproc

ValInCaption
Fragt ab, ob der momentane Prozentsatz in der Titelzeile
angezeigt wird.
ValToCaption und DelCaptionVal beachtetn dies bereits!

proc ProgressBarWindow.ValInCaption

    return .valincpt%

endproc

RaiseVal
Füllt die ProgressBar
x%     : Wert, um den die Bar gefüllt wird(Die Bar zeigt an,
wie viele Prozente der aktulle Wert vom maximalen beträgt)
Result : momentaner Wert oder -1 bei Fehler

proc ProgressBarWindow.RaiseVal

    parameters x%
    declare val% , res% , exval% , c$
    exval% = (.ActVal% * 100) / .MaxVal%
    .ActVal% = .ActVal% + x%

    if .ActVal% > .MaxVal%

        .ActVal% = .MaxVal%

    endif

    val% = (.ActVal% * 100) / .MaxVal%
    res% = Sendmessage(.handle&,$402,val%,0)

    if .valincpt%

        c$ = .GetCaption()

        if exval% >= 100

            c$ = Left$(c$,len(c$) - 7)

        elseif exval% >= 10

            c$ = Left$(c$,len(c$) - 6)

        else

            c$ = Left$(c$,len(c$) - 5)

        endif

        .SetCaption(c$)

    endif

    case    res% : Return .ActVal%
    casenot res% : Return (-1)

endproc

LowerVal
Leert die ProgressBar
x%     : Wert, um den die Bar geleert wird(Die Bar zeigt an,
wie viele Prozente der aktulle Wert vom maximalen beträgt)
Result : momentaner Wert oder -1 bei Fehler

proc ProgressBarWindow.LowerVal

    parameters x%
    declare val% , res% , exval% , c$
    exval% = (.ActVal% * 100) / .MaxVal%
    .ActVal% = .ActVal% - x%

    if .ActVal% < 0

        .ActVal% = 0

    endif

    val% = (.ActVal% * 100) / .MaxVal%
    res% = Sendmessage(.handle&,$402,val%,0)

    if .valincpt%

        c$ = .GetCaption()

        if exval% >= 100

            c$ = Left$(c$,len(c$) - 7)

        elseif exval% >= 10

            c$ = Left$(c$,len(c$) - 6)

        else

            c$ = Left$(c$,len(c$) - 5)

        endif

        .SetCaption(c$)

    endif

    case    res% : Return .ActVal%
    casenot res% : Return (-1)

endproc

RaiseVal
Setzt den Wert der ProgressBar
x%     : Wert, auf den .Actval% gesetzt wird(Die Bar zeigt an,
wie viele Prozente der aktulle Wert vom maximalen beträgt)
Result : momentaner Wert oder -1 bei Fehler

proc ProgressBarWindow.SetVal

    parameters x%
    declare val% , res% , exval% , c$
    exval% = (.ActVal% * 100) / .MaxVal%
    .ActVal% = .ActVal% + x%

    if .ActVal% > .MaxVal%

        .ActVal% = .MaxVal%

    elseif .ActVal < 0

        .Actval% = 0

    endif

    val% = (.ActVal% * 100) / .MaxVal%
    res% = Sendmessage(.handle&,$402,val%,0)

    if .valincpt%

        c$ = .GetCaption()

        if exval% >= 100

            c$ = Left$(c$,len(c$) - 7)

        elseif exval% >= 10

            c$ = Left$(c$,len(c$) - 6)

        else

            c$ = Left$(c$,len(c$) - 5)

        endif

        .SetCaption(c$)

    endif

    case    res% : Return .ActVal%
    casenot res% : Return (-1)

endproc

Für Methoden von ProgressBarWindow, die nicht überladen wurden,
gilt dasselbe, wie für die gleichnamigen Methoden von ProgressBar
Ende der Include-Datei
--------------------------------------------------------------------------------------------------

PROC NICHTLADEN

    declare pb# , i%
    EnableWindow %hWnd , 0
    pb# = New(ProgressBarWindow,%hWnd,Keine Dateien laden,
    Datei 1 von 200 wird nicht geladen...,1,100,100,200)
    pb#.ValToCaption()
    i% = 1

    whilenot i% > 200

        pb#.SetWText(Datei +str$(i%)+ von 200 wird nicht geladen...)
        Sleep Rnd(250 - 20) + 20
        pb#.RaiseVal(1)
        case (%Key = 2) or IsKey(27) : Break
        inc i%

    EndWhile

    DestroyWindow(pb#.GetHandle())
    Dispose pb#
    EnableWindow %hWnd , 1

ENDPROC

##### Hauptprogramm #################################################################
declare button&,exit&
Randomize
WindowTitle Demo zur TProgressBar.inc von Timo Madysa
cls
button& = Create(Button,%hWnd,Keine Dateien laden,5,5,200,25)
exit&= Create(Button,%hWnd,Demo beenden,Width(%HWnd) - 200 - 5,5,200,25)

whilenot IsKey(27)

    waitinput

    if Clicked(button&)

        NICHTLADEN
        SetFocus(%HWndn class=s2>)

    elseif Clicked(exit&)

        break

    endif

wend

end
 
07/16/07  
 



Zum Quelltext


Topictitle, max. 100 characters.
 

Systemprofile:

no Systemprofil laid out. [anlegen]

XProfan:

 Posting  Font  Smilies  ▼ 

Please register circa a Posting To verfassen.
 

Topic-Options

1.735 Views

Untitledvor 0 min.
Gast.081508/25/24
Thomas Freier01/30/24
Tommy08/08/21
Frank04/16/21
More...

Themeninformationen

this Topic has 1 subscriber:

unbekannt (1x)


Admins  |  AGB  |  Applications  |  Authors  |  Chat  |  Privacy Policy  |  Download  |  Entrance  |  Help  |  Merchantportal  |  Imprint  |  Mart  |  Interfaces  |  SDK  |  Services  |  Games  |  Search  |  Support

One proposition all XProfan, The there's!


My XProfan
Private Messages
Own Storage Forum
Topics-Remember-List
Own Posts
Own Topics
Clipboard
Log off
 Deutsch English Français Español Italia
Translations

Privacy Policy


we use Cookies only as Session-Cookies because of the technical necessity and with us there no Cookies of Drittanbietern.

If you here on our Website click or navigate, stimmst You ours registration of Information in our Cookies on XProfan.Net To.

further Information To our Cookies and moreover, How You The control above keep, find You in ours nachfolgenden Datenschutzerklärung.


all rightDatenschutzerklärung
i want none Cookie