PDA

Visualizza la versione completa : progress bar (personalizzare...)


MissRachele
23-09-2002, 19:15
vorrei ke il colore di sfondo di alcune progress bar fosse nero...
ma le P.B. non hanno la proprietà backcolor; mi sapreste aiutare?
in caso negativo, esiste qualche controllo P.B. (active X) creato da qualcuno, ke mi consenta di cambiare quel C****O di colore?

grassie :tongue:

sebamix
23-09-2002, 20:02
Questo è mio:

http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=31584&lngWId=1

Purtroppo non è un controllo ActiveX ma una DLL (inserisci una picturebox dove vuoi la progressbar e poi via codice ti crei l'oggetto).
Su www.planetsourcecode.com molto probabilmente ne trovi altre in forma OCX.

:ciauz:

$$$
23-09-2002, 20:28
in C/C++:

SendMessage ( handleProgressBar, PBM_SETBARCOLOR, 0, coloreRGB ) ;


in ASM:


push coloreRGB
push 0
push PBM_SETBARCOLOR
push offset handleprogressBar
call SendMessage

$$$
23-09-2002, 20:42
In visual basic:

Nel modulo:


Option Explicit

Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long

Public Const WM_USER = &H400
Public Const PBM_SETBARCOLOR = WM_USER + 9


Nell code del form:


Private Sub Form_Load()

SendMessage ProgressBar1.hwnd, PBM_SETBARCOLOR, 0, vbBlack

End Sub

ENJOY ;)

xegallo
23-09-2002, 20:44
Public Declare Function SetPixel Lib "gdi32" (ByVal hdc As Long, _
ByVal x As Long, ByVal y As Long, ByVal crColor As Long) As Long
'_________________________________________________ ________
Sub DrawGraph(ByVal MAXNUM as Integer, ByVal VALNUM as Integer)
Dim BarVal As Integer
Dim BarMax As Integer
Dim BarPercent As Single
Dim BarRows As Integer
Dim BarCols As Integer
Dim BarHDC As Long
Dim x As Long
Dim y As Long
BarHDC = picture1.hdc
BarRows = picture1.ScaleHeight
BarCols = picture1.ScaleWidth
BarVal = VALNUM 'ES. 5
BarMax = MAXNUM 'ES. 100
If BarMax = 0 Then Exit Sub
'Previene l'errore division by Zero
If BarVal = 0 Then
picture1.ToolTipText = "( 0.00% )"
Exit Sub
End If
BarPercent = BarVal / BarMax
'Setta la Tooltiptext sulla percentuale (ES. 15.23%)
picpicture1.ToolTipText = "(" + Str(Int((BarPercent) * 10000) / 100) + "% )"
For x = 0 To Round(BarCols * BarPercent)
For y = 0 To BarRows
SetPixel BarHDC, x, y, vbBlue'colora
Next y
Next x
picture1.Refresh
End Sub

sebamix
23-09-2002, 20:47
A me vien sempre fuori la progressbar giallina...:dottò:

$$$
23-09-2002, 20:51
Originariamente inviato da sebamix
A me vien sempre fuori la progressbar giallina...:dottò:

molto strano io ho provato in assembly e viene bene.... adesso vedo in VB...

xegallo
23-09-2002, 20:55
Originariamente inviato da sebamix
A me vien sempre fuori la progressbar giallina...:dottò:
già devo sistemarla :dhò:

$$$
23-09-2002, 20:57
trovato l'errore quindi corretto:




Option Explicit

Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long

Public Const WM_USER = &H400
Public Const PBM_SETBARCOLOR = WM_USER + 9





Nel codice del form:


Private Sub Form_Load()

SendMessage ProgressBar1.hwnd, PBM_SETBARCOLOR, 0, byVal vbBlack

End Sub


OH! E adesso "ENJOY ;)"

MissRachele
23-09-2002, 22:36
ok mi sono spiegata male........anke se queste soluzioni cmq le userò......
però, avendo cambiato il backcolor della form, vorrei cambiare anke il colore di fondo (per capirci quello ke viene coperto dal progredire della barra) in modo ke non si noti il tempo mancante (........suona strano, lo capisco, ma NON devo far vedere quanto manca ma solo quanto è stato fatto!!!!!!)


:confused:

Loading