× Aktuálně z oboru

Vychází Game Ready ovladače pro Far Cry 5 [ clanek/2018040603-vychazi-game-ready-ovladace-pro-far-cry-5/ ]
Celá zprávička [ clanek/2018040603-vychazi-game-ready-ovladace-pro-far-cry-5/ ]

ProgressBar ve StatusBaru

[ http://programujte.com/profil/618-jan-maly/ ]Google [ :?rel=author ]       [ http://programujte.com/profil/118-zdenek-lehocky/ ]Google [ ?rel=author ]       29. 12. 2006       14 167×

Chcete umístit ProgressBar do StatusBaru tak, jako to je třeba v Internet Exploreru?

Pokud ano, čtete ten správný návod. Pokud nevíte, co je ProgressBar, tak je to komponenta, která ukazuje stav načítání, kopírování&helli; Tak to je jen tak něco málo na úvod. Teď už přejdeme k samotnému programování.

Na formulář (je jedno, jestli SDI nebo MDI) vložte 1× ProgressBar a 1× Statusbar. Nyní již budem jen psát zdrojový kód.

Do deklarační části vložte následující řádky:

Private Declare Function SetParent Lib "user32.dll" _
    (ByVal hWndChild As Long, _
ByVal hWndNewParent As Long) As Long
'SendMessage
Private Declare Function SendMessage Lib "user32.dll" Alias "SendMessageA" _
    (ByVal hWnd As Long, _
    ByVal wMsg As Long, _
    ByVal wParam As Long, _
    lParam As Any) As Long

Private Type RECT
    Left As Long
    Top As Long
    Right As Long
    Bottom As Long
End Type

Private Const WM_USER As Long = &H400
Private Const SB_GETRECT As Long = (WM_USER + 10)

Do procedury Form_Load() napište následující kód.


Dim rectPanel As RECT
'1 - je druhý panel StatusBaru (index se počítá od 0)
SendMessage StatusBar1.hWnd, SB_GETRECT, 1, rectPanel
'souřadnice se přepočítají z pixelů na twipy
rectPanel.Top = (rectPanel.Top * Screen.TwipsPerPixelY)
rectPanel.Left = (rectPanel.Left * Screen.TwipsPerPixelX)
rectPanel.Bottom = (rectPanel.Bottom * Screen.TwipsPerPixelY) - rectPanel.Top
rectPanel.Right = (rectPanel.Right * Screen.TwipsPerPixelX) - rectPanel.Left
'přesune ProgressBar do panelu Statusbaru
SetParent ProgressBar1.hWnd, StatusBar1.hWnd
ProgressBar1.Move rectPanel.Left, rectPanel.Top, rectPanel.Right, rectPanel.Bottom

A to je celé. Výsledek můžete vidět níže.


Článek stažen z webu Programujte.com [ http://programujte.com/clanek/2006122201-progressbar-ve-statusbaru/ ].