Source wurde am 15.07.2007 aus der MMJ-Quellcodesammlung (Dietmar Horn) in die Babyklappe auf XProfan.Com abgelegt:
Statusbar mit Fortschrittsbalken und Grafik
====================================================================
StatusZeile mit API für Profan 32 Bit, Win 95 erzeugen
und automatisch an die Fensterveränderung anpassen.
Zusätzlich im ersten Feld der Statusbar eine Progressbar erzeugen.
Grafik in der Statusbar ausgeben
Buttons als Steuer-Elemente in einem Feld der Statuszeile.
(c) 1998 Richard Maurukas
====================================================================
declare Statbar&,t$,Ende%
declare Felder&
declare StatbarFeld# Beinhaltet die Feldbereiche von links
Declare StatbarText1#,StatBarText2#,StatBarText3#,StatBarText4# usw
Declare TRect# Rectangle des Feldes für die Progressbar
Declare Progress_1& Handle der Progressbar
declare sbutton1%,sbutton2%,sbutton3%,sbutton4%,sSatz%
DIM Trect#,16 Max Adresse der Rectangle Struktur
Dim Statbartext1#,255 maximalAnzahl der Zeichen im Feld 255
Dim StatBarText2#,255
Dim StatBarText3#,255
Dim StatBArText4#,255
dim Statbarfeld#,255
long StatBarFeld#,0=200 erstes Feld von Links
long StatBarFeld#,4=400 zweites Feld von Links
long StatBarFeld#,8=580 drittes Feld von Links
long StatBarFeld#,12=640 viertes Feld usw.
string StatBarText1#,0=1998 Richard Maurukas
string StatBarText2#,0=Statuszeile für Profan 32 Bit
String StatBarText3#,0=mit Feldern
String StatbarText4#,0=Time$(0)
Def CreateStatusBar(4) !COMCTL32.DLL, CreateStatusWindowA
cls
let Statbar&=CreateStatusBar($50800010,0,%hwnd,100) als letztes eine ID
let Felder&=sendmessage(Statbar&,$404,4,StatBarFeld#) Aufteilung der Felder
sendmessage(Statbar&,$401,0,StatBarText1#) Text ab ins erste Feld
sendmessage(Statbar&,$401,1,StatBarText2#) Text ab ins zweite Feld
sendmessage(Statbar&,$401,2,StatBartext3#) Text ab ins dritte Feld
sendmessage(Statbar&,$401,3,StatBartext4#) Text ab ins dritte Feld
usw.
Hier noch einige Infos aus der Statbar holen u. anzeigen
Print Anzahl der Felder in der StatusBar: ;Sendmessage(Statbar&,$406,0,0)
Print Textlänge in Feld 1 : ;SendMessage(Statbar&,$403,0,0)
Die Rechteck Struktur aus dem ersten Statusbarfeld für die Progressbar holen
sendmessage(Statbar&,$40A,0,TRect#)
die Progressbar in das 1. Feld der Statusbar setzen
Let Progress_1&=@control(msctls_progress32,@$(2),$50000000,
long(TRect#,0),long(Trect#,4),
long(Trect#,8),sub(long(Trect#,12),2),
Statbar&,102,%HInstance)
sendmessage(Progress_1&,$402,50,0) auf 50 setzen
sendmessage(Statbar&,$40A,2,TRect#) Die Rechteckstrucktur aus Feld 3
Let sbutton1%=createbutton(statbar&,|<,long(TRect#,0),long(Trect#,4),
20,sub(long(Trect#,12),2))
Let sbutton2%=createbutton(statbar&,<,add(long(TRect#,0),20),long(Trect#,4),
20,sub(long(Trect#,12),2))
Let sbutton3%=createbutton(statbar&,>,add(long(TRect#,0),80),long(Trect#,4),
20,sub(long(Trect#,12),2))
Let sbutton4%=createbutton(statbar&,>|,add(long(TRect#,0),100),
long(Trect#,4),20,sub(long(Trect#,12),2))
Let ssatz%=createedit(statbar&,50,add(long(TRect#,0),40),long(Trect#,4),
40,sub(long(Trect#,12),2))
whilenot equ(ende%,20) ges 46
DrawLibIcon Progman.EXE,ende%,mul(30,ende%),100
DrawLibIcon Progman.EXE,add(20,ende%),mul(30,ende%),140
inc ende%
wend
startpaint Statbar&
DrawLibIcon Progman.EXE,39,add(long(TRect#,0),130),-4
endpaint
decimals 0
Let Ende%=0
whilenot Ende%
waitinput
If @equ(%key,4)
wenn die Fenstergröße verändert wurde, die Statusbar ans Fenster anpassen.
SetWindowPos Statbar&=0,0-0,0;0
startpaint Statbar&
DrawLibIcon Progman.EXE,39,add(long(TRect#,0),130),-4
endpaint
Elseif Getfocus(Sbutton1%)
sendmessage(Progress_1&,$402,0,0) auf 0 setzen
Settext ssatz%,0
Elseif Getfocus(Sbutton2%)
sendmessage(Progress_1&,$403,-2,0) um 2 erniedrigen
Settext ssatz%,str$(sub(Val(gettext$(Ssatz%)),2) )
Elseif Getfocus(Sbutton3%)
sendmessage(Progress_1&,$403,2,0) um 2 erhöhen
Settext ssatz%,str$(add(Val(gettext$(Ssatz%)),2) )
Elseif getfocus(Sbutton4%)
sendmessage(Progress_1&,$402,100,0) auf 100 setzen
Settext ssatz%,100
Elseif @Equ(%Scankey,27)
let ende%=1
endif
wend
dispose Statbartext1#
Dispose Statbartext2#
Dispose Statbartext3#
Dispose Statbartext4#
Dispose Statbarfeld# Tippfehler Dsipose Stabarfeld# verbessert, Thomas Hölzer
dispose Trect#
end