Как засунуть Progressbar в Panel на Statusbar'е?

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Shiz
Начинающий
Начинающий
 
Сообщения: 14
Зарегистрирован: 02.08.2004 (Пн) 13:47
Откуда: Moscow

Как засунуть Progressbar в Panel на Statusbar'е?

Сообщение Shiz » 13.06.2005 (Пн) 22:20

subj
Shiz

BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3987
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

Сообщение BV » 13.06.2005 (Пн) 22:25

SetParent'ом. Поиск!
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;

Ruslan Demidow
Мужчина!
Мужчина!
Аватара пользователя
 
Сообщения: 987
Зарегистрирован: 25.03.2004 (Чт) 13:39
Откуда: N.Novgorod

Re: Как засунуть Progressbar в Panel на Statusbar'е?

Сообщение Ruslan Demidow » 13.06.2005 (Пн) 23:02

Shiz писал(а):subj

Код: Выделить всё

Sub PBinSB(ByVal SB As StatusBar, ByVal PB As ProgressBar, ByVal sPanelKey As String)
    SB.Align = vbAlignBottom
    SB.Refresh
    PB.left = SB.Panels(sPanelKey).left + 25
    PB.Width = SB.Panels(sPanelKey).Width - 45
    PB.top = SB.top + 45
    PB.Height = SB.Height - 75
End Sub



' Использование:

Sub ShowPb(ByVal sPanelKey As String,Optional strSbrMessage As String) 'отображает
    PBinSB sbrStatus, LoadProgressBar, "sPanelKey"
    LoadProgressBar.Visible = True
    If Not IsMissing(strSbrMessage) Then
        sbrStatus.Panels(sPanelKey).Text = Trim$(strSbrMessage)
    End If
End Sub

Sub HidePb(ByVal sPanelKey As String) 'скрывает
    LoadProgressBar.Visible = False
    sbrStatus.Panels(sPanelKey).Text = vbNullString
    sbrStatus.Refresh
End Sub

Sub Main()
       ShowPb "ProgressPanel", "Построение списка тредов... "
'  ..... некоторый код ...........
       Hide PB "ProgressPanel"
End Sub
Это Ж-ж-ж-ж неспроста (с) Винни-Пух

Shiz
Начинающий
Начинающий
 
Сообщения: 14
Зарегистрирован: 02.08.2004 (Пн) 13:47
Откуда: Moscow

Сообщение Shiz » 14.06.2005 (Вт) 11:25

2Ruslan Demidow
Спасибо! А как быть при Resiz'е
Shiz

Sebas
Неуловимый Джо
Неуловимый Джо
Аватара пользователя
 
Сообщения: 3626
Зарегистрирован: 12.02.2002 (Вт) 17:25
Откуда: столько наглости такие вопросы задавать

Сообщение Sebas » 14.06.2005 (Вт) 11:40

как вариант, использовать VS.NET
- Я никогда не понимал, почему они приходят ко мне чтобы умирать?

sebas<-@->mail.ru

Ruslan Demidow
Мужчина!
Мужчина!
Аватара пользователя
 
Сообщения: 987
Зарегистрирован: 25.03.2004 (Чт) 13:39
Откуда: N.Novgorod

Сообщение Ruslan Demidow » 14.06.2005 (Вт) 15:38

Shiz писал(а):2Ruslan Demidow
Спасибо! А как быть при Resiz'е

Скрывай, а после отображай.
Это Ж-ж-ж-ж неспроста (с) Винни-Пух

BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3987
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

Сообщение BV » 14.06.2005 (Вт) 16:09

2 Ruslan Demidow

Твой способ неверен (читай через Ж), ведь афтару нужно именно в Panel на StatusBar'е, а не на неё. Так что только SetParent + GetWindowRect + SetWindowPos.
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;

Ruslan Demidow
Мужчина!
Мужчина!
Аватара пользователя
 
Сообщения: 987
Зарегистрирован: 25.03.2004 (Чт) 13:39
Откуда: N.Novgorod

Сообщение Ruslan Demidow » 14.06.2005 (Вт) 17:44

BV писал(а):2 Ruslan Demidow

Твой способ неверен (читай через Ж), ведь афтару нужно именно в Panel на StatusBar'е, а не на неё. Так что только SetParent + GetWindowRect + SetWindowPos.

На любителя: у меня работает и меня устраивает. Как прекратит устраивать - перейду на предложенный тобой способ.
Тем более мой ответ был новичку (который возможно и не знает об API или только слышал о нём). Почитайте ваши ответы в топике.
BV писал(а):SetParent'ом. Поиск!

Новичку они - что пустой звук. Или у вас всех начался месячник борьбы с простыми вопросами?
:x
Это Ж-ж-ж-ж неспроста (с) Винни-Пух

Shiz
Начинающий
Начинающий
 
Сообщения: 14
Зарегистрирован: 02.08.2004 (Пн) 13:47
Откуда: Moscow

Сообщение Shiz » 14.06.2005 (Вт) 21:42

BV писал(а):SetParent + GetWindowRect + SetWindowPos


Можешь поподробней?
Shiz

Alexander N. Samarin
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 397
Зарегистрирован: 05.03.2005 (Сб) 20:59
Откуда: Интернат 18 (СУНЦ МГУ), комната 214А, кровать посередине

Сообщение Alexander N. Samarin » 15.06.2005 (Ср) 21:24

А я где-то видел статью Изображение
http://vbrussian.com/Article.asp?ID=105 - Эта?
На это не смотрите! Это не подпись!!!!!!

BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3987
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

Сообщение BV » 15.06.2005 (Ср) 22:45

Shiz писал(а):
BV писал(а):SetParent + GetWindowRect + SetWindowPos


Можешь поподробней?



Это три Win32 API функции:

SetParent - устанавливает заданное окно ребёнком другого заданного окна как родителя.
GetWindowRect - служит для получения размера заданного окна.
SetWindowPos - служит для изменения размера и Z параметра окна (делает его позади всех, всегда наверху...)


Всё очень просто.
Надо узнать размер соответствующей панели, потом сделать твой прогресс дочерним окном панели статуса и только переместить его туда. Не знаешь как использовать эти API? Читай MSDN или API-Guide.
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: AhrefsBot, Yandex-бот и гости: 183

    TopList