Label, блин...

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

Label, блин...

Сообщение Jew » 28.05.2003 (Ср) 23:01

Добрый вечер! звиняйте что тревожу, но меня тревожит вопрос: а что, у Label нет свойства FOCUS, если есть, то как прописать его. Очень нужно!!! Спасибо всем кто ответил! :?:

Yurich
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 675
Зарегистрирован: 05.03.2003 (Ср) 3:43
Откуда: DONBASS/Gorlovka

Сообщение Yurich » 28.05.2003 (Ср) 23:21

Вроде нельзя, по крайней мере средствами VB. Label не рассчитан на ввод, потому фокусировать в него нечего. Может бывалые что-нить подскажут.

moderator
Модератор
Модератор
 
Сообщения: 1896
Зарегистрирован: 10.12.2001 (Пн) 18:11
Откуда: Украина, Харьков

Сообщение moderator » 29.05.2003 (Чт) 0:59

А зачем? Для ввода текста нужно использовать TextBox.
Модератор
http://www.vbstreets.ru / moderator@vbstreets.ru

... Почетные награды: [*], [+], [!]. Все еще впереди...

DimPos
Обычный пользователь
Обычный пользователь
 
Сообщения: 60
Зарегистрирован: 15.11.2002 (Пт) 17:24
Откуда: Киров

Сообщение DimPos » 29.05.2003 (Чт) 2:09

Если в лейбл можно будет вводить то получится текстбокс ,но когда очень хочется то можно :lol:

-=VUD=-
Начинающий
Начинающий
 
Сообщения: 3
Зарегистрирован: 29.05.2003 (Чт) 6:15
Откуда: Odessa

Сообщение -=VUD=- » 29.05.2003 (Чт) 6:25

Во-во-во... Ты у текстбокса borderstyle нулем поставь...

Jew
Начинающий
Начинающий
 
Сообщения: 18
Зарегистрирован: 28.05.2003 (Ср) 22:55

Сообщение Jew » 29.05.2003 (Чт) 11:53

Хорошо. Буду с вами откровенен.
Текстбоксы занимают много памяти, а у меня програмуля ну просто напичкана формами и подразумевает использование полей для ввода данных и отображения введенных данных. Для экономии памяти можно использовать Лейбл, а для ввода использовать всего один ТексБокс при потере фокуса Sub Label1_LostFocus() инфа из текстбокса передается на этот Лейбл и ТБ перемещается на следующий Лейбл. Но в том и проблема, что Лейбл не теряет ФОКУС :!:

Фролов Сергей
Начинающий
Начинающий
 
Сообщения: 6
Зарегистрирован: 29.05.2003 (Чт) 11:49
Откуда: Москва

мысля

Сообщение Фролов Сергей » 29.05.2003 (Чт) 12:10

даже без лейблов. Создаешь класс CMyLabel который рисует текст прямо на форму - а обработчики всяких кликов и табуляций - прямо формой - и текстбокс по ней же таскать.

Cyrax
Cyberninja
Cyberninja
Аватара пользователя
 
Сообщения: 891
Зарегистрирован: 25.04.2002 (Чт) 21:20
Откуда: Magnitogorsk, Russia

Сообщение Cyrax » 29.05.2003 (Чт) 13:51

Jew писал(а):Хорошо. Буду с вами откровенен.
Текстбоксы занимают много памяти, а у меня програмуля ну просто напичкана формами и подразумевает использование полей для ввода данных и отображения введенных данных. Для экономии памяти можно использовать Лейбл, а для ввода использовать всего один ТексБокс при потере фокуса Sub Label1_LostFocus() инфа из текстбокса передается на этот Лейбл и ТБ перемещается на следующий Лейбл. Но в том и проблема, что Лейбл не теряет ФОКУС :!:

а почему бы тогда не использовать какой-нибудь грид?
тогда и интерфейс более аккуратный получится...
Ты это ему расскажи. Я уже пять болтов отвинтил, и конца не видно... (озадаченно) А это в какую сторону тянуть? Ну-ка... Ага, этот был лишний, этот вообще не отсюда, и этот... Точно, два болта.

Welcome to IRC

Александр Андреев
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 145
Зарегистрирован: 09.04.2003 (Ср) 16:43
Откуда: Н.Новгород

Сообщение Александр Андреев » 29.05.2003 (Чт) 13:58

У лейбла нет hWnd. Поэтому ему нельзя дать фокус ввода. Он предназначен только для отображения текста. Поэтому и забирает мало ресурсов.

Jew
Начинающий
Начинающий
 
Сообщения: 18
Зарегистрирован: 28.05.2003 (Ср) 22:55

Re: мысля

Сообщение Jew » 29.05.2003 (Чт) 18:33

Фролов Сергей писал(а):даже без лейблов. Создаешь класс CMyLabel который рисует текст прямо на форму - а обработчики всяких кликов и табуляций - прямо формой - и текстбокс по ней же таскать.

Спасибо за совет, но может (если не трудно) примерный код нарисуешь... ведь я не программер, я только учусь :wink:

Фролов Сергей
Начинающий
Начинающий
 
Сообщения: 6
Зарегистрирован: 29.05.2003 (Чт) 11:49
Откуда: Москва

на скорую руку

Сообщение Фролов Сергей » 29.05.2003 (Чт) 19:21

по хорошему - mLabel -надо класс сделать - чтоб нормально рисовался

создай форму и Textbox - назови Text1:)

вот код (у формы поставь KeyPreview = True, AutoRedraw = True)

Option Explicit

Private Type MyLabelType
Caption As String
Left As Single
Width As Single
Top As Single
Height As Single
End Type

Private mLabel() As MyLabelType
Private curIndex As Integer

Private Sub InitLabels()
Dim i As Integer
ReDim mLabel(1 To 8)
For i = 1 To 8
mLabel(i).Caption = "Label" & i
mLabel(i).Left = 300
mLabel(i).Top = i * 600
mLabel(i).Width = 500 * i
mLabel(i).Height = 400
DrawLabel i
Next
curIndex = 8
Form_KeyPress Asc(vbTab)
End Sub

Private Sub DrawLabel(ByVal Index As Integer)
Me.CurrentX = mLabel(Index).Left
Me.CurrentY = mLabel(Index).Top
Me.Print mLabel(Index).Caption
Me.Line (mLabel(Index).Left, mLabel(Index).Top)-(mLabel(Index).Left + mLabel(Index).Width, mLabel(Index).Top + mLabel(Index).Height), , B
End Sub

Private Sub Form_Activate()
InitLabels
End Sub

Private Sub Form_KeyPress(KeyAscii As Integer)
If KeyAscii = Asc(vbTab) Then
mLabel(curIndex).Caption = Text1.Text
curIndex = curIndex + 1
If curIndex = 9 Then curIndex = 1
Text1.Top = mLabel(curIndex).Top
Text1.Left = mLabel(curIndex).Left
Text1.Width = mLabel(curIndex).Width
Text1.Height = mLabel(curIndex).Height
Text1.Text = mLabel(curIndex).Caption
Text1.SelStart = 0
Text1.SelLength = Len(mLabel(curIndex).Caption)
End If
End Sub

Private Sub Form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single)
Text1.Top = mLabel(1).Top
Text1.Left = mLabel(1).Left
Text1.Width = mLabel(1).Width
Text1.Height = mLabel(1).Height
curIndex = 1
End Sub

я думаю идея ясна


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

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

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

    TopList