Prozentanzeige im ProgressBarGadget ??

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
Hroudtwolf
Beiträge: 1416
Registriert: 30.10.2004 23:33
Kontaktdaten:

PercentBar

Beitrag von Hroudtwolf »

Hier ist meine Version vom Progressbargadget.
Ist auf jeden Fall noch ausbaubar. Es dient nur als Beispiel.

Code: Alles auswählen

;PercentBar
;2005 by Hroudtwolf
;Progressbar with percentdisplay
;
Declare Setpercents (gadget.l,position.l,gadgetreturn$)
Declare.s PercentbarGadget (gadget.l,x.l,y.l,pcwidth.l,pcheigth.l,max.l)
hWnd.l = OpenWindow(0, 100, 100, 300, 60, #PB_Window_titlebar|#pb_Window_screencentered, "PercentBar") 
If hwnd.l 
If CreateGadgetList (hwnd.l)
info$=PercentbarGadget (1,10,20,280,20,40); PercentGadget erstellen
EndIf
  Repeat 
    EventID.l = WindowEvent() 
    Setpercents (1,xx,info$); Das PercentGadget aktualisieren
    xx=xx+1
    If xx>40:xx=0:EndIf 
    Delay(100)
  Until EventID = #PB_EventCloseWindow 

EndIf 
End 


Procedure.s PercentbarGadget (gadget.l,x.l,y.l,pcwidth.l,pcheight.l,max.l)
gadgetreturn$=Str(pcwidth.l)+"|"+Str(pcheight.l)+"|"+Str(max.l)
Setpercents (gadget.l,0,gadgetreturn$)
ImageGadget (gadget.l,x.l,y.l,pcwidth.l,pcheigth.l,UseImage (800+gadget.l))
ProcedureReturn gadgetreturn$
EndProcedure 


Procedure Setpercents (gadget.l,position.l,gadgetreturn$)
pcwidth.l=Val(StringField(gadgetreturn$, 1, "|")) 
pcheight.l=Val(StringField(gadgetreturn$, 2, "|")) 
max.l=Val(StringField(gadgetreturn$, 3, "|")) 
;Prozentberechnung
onepercent.f=max/100
If onepercent.f=0:onepercent.f=1:EndIf 
percent.l=position.l/onepercent.f

;Systemfarben ermitteln
HFarbe.l=GetSysColor_(#COLOR_BTNFACE )
RFarbe1.l=GetSysColor_(#COLOR_3DHIGHLIGHT)
RFarbe2.l=GetSysColor_(#COLOR_3DSHADOW)
TFarbe.l=GetSysColor_(#COLOR_BTNTEXT )
;Gadgetstyle erstellen
If IsImage (800+gadget.l)=0:CreateImage (800+gadget.l,pcwidth.l,pcheight.l):EndIf 
If StartDrawing (ImageOutput ())
DrawingMode(0)
Box (0,0,pcwidth.l,pcheight.l,HFarbe.l)
Line (0,0,0,pcheight.l,RFarbe2.l)
Line (0,0,pcwidth.l,0,RFarbe2.l)
Line (0,pcheight.l-1,pcwidth.l,0,RFarbe1.l)
Line (pcwidth.l-1,0,0,pcheight.l,RFarbe1.l)
Box (1,1,(pcwidth.l*position)/max,pcheight.l-2,RGB(100,100,250))
For x=10 To pcwidth.l-10 Step 10
Line (x,1,0,pcheight.l-2,HFarbe.l)
Next x
DrawingMode(1)
Locate (Int(pcwidth.l/2)-20,2)
rot.l=Red(TFarbe.l)
gruen.l=green(TFarbe.l)
blau.l=Blue(TFarbe.l)
FrontColor (rot.l,gruen.l,blau.l)
text$=Str(percent.l)+ " %"
DrawText (text$)
StopDrawing ()
EndIf
If IsGadget (gadget.l):SetGadgetState (gadget.l,UseImage (800+gadget.l)):EndIf 
EndProcedure 
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

Die einzig einfache Lösung hab ich in PureVisionXP gefunden, da ist sowas mit drin:

Code: Alles auswählen

#Gadget=1 
#Image=1 
If OpenWindow(0,0,0,200,100,#PB_Window_SystemMenu|#PB_Window_ScreenCentered,"Demo") 
  If CreateGadgetList(WindowID(0))  
    PVGadgets_ProgressBar(#Gadget,#Image,10,40,170,20,0,1,$000000,$0000FF,$00FFFF,#PB_Image_Border)  
  EndIf  
  For tmp=0 To 100  
    PVGadgets_ProgressBar(#Gadget,#Image,0,0,0,0,tmp,1,$000000,$0000FF,$00FFFF)  
    Delay(30)  
  Next  
EndIf 
Aber PV haben ja leider nur wenige
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Falko
Admin
Beiträge: 3535
Registriert: 29.08.2004 11:27
Computerausstattung: PC: MSI-Z590-GC; 32GB-DDR4, ICore9; 2TB M2 + 2x3TB-SATA2 HDD; Intel ICore9 @ 3600MHZ (Win11 Pro. 64-Bit),
Acer Aspire E15 (Win11 Home X64). Purebasic LTS 6.11b1
HP255G8 Notebook @AMD Ryzen 5 5500U with Radeon Graphics 2.10 GHz 3.4GHz, 32GB_RAM, 3TB_SSD (Win11 Pro 64-Bit)
Kontaktdaten:

Beitrag von Falko »

Eigendlich schade, das es keine deutsche Distribution gibt, die in Deutschland PV vertreibt. Wenn Andre oder noch besser MC vieleicht diese mit anbieten könnten, hätte ich den schon lange per Vorkasse bestellt.

Vielleich wird es ja eines Tages möglich werden.
Bild
Win11 Pro 64-Bit, PB_6.11b1
Benutzeravatar
nicolaus
Moderator
Beiträge: 1175
Registriert: 11.09.2004 13:09
Kontaktdaten:

Beitrag von nicolaus »

ich würde einfach die ProgressBarEx-LIB nehmen :mrgreen:
Benutzeravatar
nco2k
Beiträge: 892
Registriert: 08.09.2004 23:13

Beitrag von nco2k »

ich weiss nicht, aber irgendwie finde ich einfach nichts winapi mässiges darüber. in der msdn suche lande ich immer bei .net framework. :?

c ya,
nco2k
~|__/
..o.o.. <--- This is Einkaufswagen. Copy Einkaufswagen into your signature to help him on his way to world domination.
Benutzeravatar
Donald
Beiträge: 307
Registriert: 03.01.2005 02:21
Wohnort: Marl

Beitrag von Donald »

Falko hat geschrieben:Eigendlich schade, das es keine deutsche Distribution gibt, die in Deutschland PV vertreibt. Wenn Andre oder noch besser MC vieleicht diese mit anbieten könnten, hätte ich den schon lange per Vorkasse bestellt.

Vielleich wird es ja eines Tages möglich werden.
Da kann ich mich nur anschließen.
DONALD :D www.PureBasic-Donald.de gibt es im Moment nicht mehr
PureBasic - jaPBe - PureVisonXP - TailBite
Antworten