"Усовершенствовать" StatusBar

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Dummiel
Бывалый
Бывалый
 
Сообщения: 235
Зарегистрирован: 11.06.2004 (Пт) 9:15
Откуда: Алтай

"Усовершенствовать" StatusBar

Сообщение Dummiel » 12.07.2006 (Ср) 8:17

Конечно, громко сказано - "усовершенствовать"!

1. Можно ли фон панели статусбара "закрасить" каким-либо цветом, типа BackColor в TextBox-е, и знаки подраскрасить, типа ForeColor?

2. Можно ли по щелчку на панели статусбара показать на его месте TextBox, ввести в него инфу, и отразить затем на панели, по которой щелкнули? Ну, отразить-то ясно, а вот показать TextBox...

И как это сделать?

Nicky
Постоялец
Постоялец
 
Сообщения: 519
Зарегистрирован: 12.08.2004 (Чт) 12:14

Сообщение Nicky » 12.07.2006 (Ср) 8:37

1. У панелей статусбара есть свойство Picture. Дальше сам ;)

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 12.07.2006 (Ср) 9:25

2.
Помещаешь на статус-бар TextBox ставишь ему свойство Visible в False.

Теперь нужно сделать обработку клика по панельке.
Код: Выделить всё

Private Sub StatusBar1_PanelClick(ByVal Panel As MSComctlLib.Panel)
Text1.Enabled = True
Text1.Left = Panel.Left
Text1.Width = Panel.Width
Text1.Text = ""
Text1.Tag = Panel.Index
End Sub


теперь у тебя будет какое то событие по которому тексбокс прячется и введённая инфа показывается в панельке. Например - нажатиe Enter.

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

Private Sub Text1_KeyDown(KeyCode As Integer)
If KeyCode = 13 Then
Text1.Enabled = False
Text1.Visible = False
StatusBar1.Panels(CInt(Text1.Tag)).Text = Text1.Text
End If
End Sub


Ну сам понимаешь - имена объектов на свои поменяй. И придёся позаботится о проблеме изменения размеров формы.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Dummiel
Бывалый
Бывалый
 
Сообщения: 235
Зарегистрирован: 11.06.2004 (Пт) 9:15
Откуда: Алтай

Сообщение Dummiel » 12.07.2006 (Ср) 13:30

Хакер, который телепат, дружище!!!

Только сейчас увидел - ДА ТЫ МОЙ ЗЕМЛЯК! :D :lol: :o

Я тоже родом из П-Павловска, жил на 2-й Коммунистической, в доме, где РОВД.

ОЧ-Ч-ЧЕНЬ РАД!!!

ПРОСЬБА к админам не ругаться за нетематическое сообщение - эмоции! Скупая мужская слеза скатилась по моей мощной груди! :cry:

Dummiel
Бывалый
Бывалый
 
Сообщения: 235
Зарегистрирован: 11.06.2004 (Пт) 9:15
Откуда: Алтай

Сообщение Dummiel » 13.07.2006 (Чт) 13:01

В общем понял, что на статусбар, размещенный на родительской MDI-форме не ставится текстбокс. Ну вообще не ставится! Хотя у меня перед глазами прога с таким же MDI-интерфейсом, написанная на V5, там все прям как надо.

А по свойству .Picture ваще не разобрался: я так понял, просто нужно красную картинку загрузить, чтобы BackColor панели был красного цвета? А как тогда буковки другого цвета сделать? Или это просто текстбокс на панель с красным фоном и белыми буквами втыкается?

Или фамилия у меня - "Тупорылкин"?

Nicky
Постоялец
Постоялец
 
Сообщения: 519
Зарегистрирован: 12.08.2004 (Чт) 12:14

Сообщение Nicky » 13.07.2006 (Чт) 13:09

Ну, раз "дальше сам" не прокатило, то вот тебе рыба ;)

Код: Выделить всё
Sub PanelText(pBox As PictureBox, sBar As StatusBar, lIndex As Long, _
  sText As String, lBgColor As Long, lFgColor As Long)
  Dim r As RECT
 
  SendMessage sBar.hwnd, SB_GETRECT, lIndex - 1, r
  With pBox
    Set .Font = sBar.Font
    .Move 0, 0, (r.right - r.left) * Screen.TwipsPerPixelX, (r.bottom - r.top) * Screen.TwipsPerPixelY
    .BackColor = lBgColor
    .Cls
    .ForeColor = lFgColor
    pBox.Print "  " & sText
    sBar.Panels(lIndex).Picture = .Image
  End With
End Sub

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 13.07.2006 (Чт) 13:09

Статусбар не является контейнером, так что на него ничего не положишь. Как вариант - делашь alignnable usercontrol-container, кидаешь его на mdi-форму, в него статусбар и текстбокс поверх статуса. Как второй вариант - SetParent :wink:
Лучший способ понять что-то самому — объяснить это другому.

Dummiel
Бывалый
Бывалый
 
Сообщения: 235
Зарегистрирован: 11.06.2004 (Пт) 9:15
Откуда: Алтай

Сообщение Dummiel » 14.07.2006 (Пт) 4:39

Спасибо, други!
Прошло на "УРА!" :)


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

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 68

    TopList