Контрол TextBox - помогите!

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
David
Обычный пользователь
Обычный пользователь
 
Сообщения: 81
Зарегистрирован: 10.03.2004 (Ср) 20:41
Откуда: FRANCE

Контрол TextBox - помогите!

Сообщение David » 08.04.2008 (Вт) 18:04

Есть очень простая форма в ней TextBox и заполняется ComboBox

Начальные параметры TextBox1.Visible = False, ListBox2.Visible = True

Код: Выделить всё
If ComboBox.ListCount = 0 Then
     TextBox1.Visible = True: TextBox1.Top = 1305: ListBox2.Visible = False: TextBox1.SetFocus
Else
    TextBox1.Visible = False: TextBox2.Visible = True: TextBox2.ListIndex = 0
End If


Ну так вот, не хочет программа выполнять TextBox1.Visible = True даже в "дебагере" TextBox1.Visible = False

Может я какой-то dll дезинсталировал, или это вопрос прав, или же ещё что нибудь. Может кто встречал эту проблему

Спасибо[/b]

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 08.04.2008 (Вт) 18:30

Версия:
Код: Выделить всё
TextBox1.Top = 1305

а 1305 случаем не за пределами формы?
З.Ы.
Код: Выделить всё
TextBox2.ListIndex = 0

и давно у текстбоксов такое свойство появилось?
З.З.Ы. А вообще в ту ветку, где должна устанавливаться видимость при выполнении проги заходим?
Весь мир матрица, а мы в нем потоки байтов!

David
Обычный пользователь
Обычный пользователь
 
Сообщения: 81
Зарегистрирован: 10.03.2004 (Ср) 20:41
Откуда: FRANCE

Сообщение David » 08.04.2008 (Вт) 18:44

Viper, извини ты прав, вместо TextBox2.ListIndex = 0 дожно быть ComboBox2.ListCount = 0, но к сожалению в оригинале всё правильно и TextBox1.Top = 1305 не за пределами формы, и в ветку, где должна устанавливаться видимость заходим.

Хуже я ставлю TextBox1.Visible = True в Sub Form_Load() и тот же результат TextBox1.Visible = False и всё тут

Я сейчас заплачу.

Matew
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 894
Зарегистрирован: 28.06.2004 (Пн) 17:44
Откуда: Дальний Восток, г. Ха

Сообщение Matew » 09.04.2008 (Ср) 3:42

David, может текстбокс у тебя в контейнере специфическом?
Алкоголь и сканеры-ваши враги! Не верите-смотрите аватару :-)

Gemini
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 390
Зарегистрирован: 24.07.2002 (Ср) 14:15
Откуда: Ozersk

Сообщение Gemini » 09.04.2008 (Ср) 5:45

Давай полный код...
В нашем деле главное ЛОГИКА.

косил косой косой косой.

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 09.04.2008 (Ср) 7:07

Еще одна версия: возможно отсутствует Option Explicit, зато присутствует опечатка в TextBox1, хотя это конечно вряд ли... Тогда бы шла ругань на свойство Visible. Прсоединяюсь к предыдущемцу оратору, цепляй более полный пример.
Весь мир матрица, а мы в нем потоки байтов!

David
Обычный пользователь
Обычный пользователь
 
Сообщения: 81
Зарегистрирован: 10.03.2004 (Ср) 20:41
Откуда: FRANCE

Сообщение David » 09.04.2008 (Ср) 11:57

Всё мужики, надоело.

Я переписываю программу с самого начала. Написал маленький тестовый кусок и без проблем, берусь за основную часть.

Программу скидываю в ZIP формате

Так для информации, я программист самоучка, хотя это и не первая программа которую я пишу, но всё-таки, будь-те снисходительны.

Проблема осталась, если у кого-то появиться идея пишите.

Сасибо
Вложения
VB.zip
смысл: программа создает сеть определенных каалогов на диске в зависимости от потребностей юзера
(153.49 Кб) Скачиваний: 56

burik
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 514
Зарегистрирован: 03.11.2005 (Чт) 22:04
Откуда: Беларусь, Рогачев

Сообщение burik » 09.04.2008 (Ср) 13:03

А то что при запуске вылетает MsgBox с непонятным сообщением и просьюбой обратиться к администратору, а затем закрывается, это нормально? Так и должно быть? :? И вообще, мог бы сказать где именно (в какой форме и в какой процедуре).. :roll:
Между слухов, сказок, мифов,
просто лжи, легенд сомнений
мы враждуем жарче скифов
за несходство заблуждений
Игорь Губерман

Sur
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 91
Зарегистрирован: 14.07.2003 (Пн) 20:54
Откуда: C2H5OH

Сообщение Sur » 09.04.2008 (Ср) 16:40

Контрол не хочет становиться видимым, потому что форма еще не видна.
Пить или не пить? - да не вопрос!

David
Обычный пользователь
Обычный пользователь
 
Сообщения: 81
Зарегистрирован: 10.03.2004 (Ср) 20:41
Откуда: FRANCE

Сообщение David » 09.04.2008 (Ср) 18:12

Всё павильно я перемудрил, там же привязка к нашему серверу и имени пользователей фирмы. Я ничего не скорректировал и послал всё как есть.

Ошибка "вылетает" в этой процедуре

Код: Выделить всё
Private Sub dMARQUE_Click()
    Dim Txt0 As String, Txt1 As String

    Txt0 = DirClient(GlobNum) & "\EXE_" & Format(CurExe(GlobNum), "00") & "\" & dMARQUE.Text & "\"
    If GlobNum = 2 Then Txt0 = Txt0 & "Relookage\"
   
    dPROJET.Clear: Txt1 = Dir(Txt0, vbDirectory)
    Do While Txt1 <> ""
        If Txt1 <> "." And Txt1 <> ".." And (InStr(UCase(Txt1), "CLIENT") = 0 And InStr(UCase(Txt1), "SUIVI") = 0) Then _
            If (GetAttr(Txt0 & Txt1) And vbDirectory) = vbDirectory Then dPROJET.AddItem Txt1
        Txt1 = Dir
    Loop
   
    If dPROJET.ListCount = 0 Then
        lPROJET.Visible = True: lPROJET.Top = 1305: dPROJET.Visible = False: lPROJET.SetFocus
    Else
        lPROJET.Visible = False: lPROJET.Text = "": dPROJET.Visible = True: dPROJET.ListIndex = 0
    End If
End Sub


на lPROJET.SetFocus т.к. TextBox lPROJET.Visible=True не срабатывает

Я даже пробовал lPROJET.Visible=True вставить в FormLoad

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 09.04.2008 (Ср) 18:39

Text1.Visible будет False, если форма еще не отобразилась (загружается), либо один из контейнеров, внутри которого находится это текстовое поле, невидим.
Поэтому по этому свойству определять его состояние не стоит.
Заведи переменную и используй ее.
А SetFocus замени на If .Enabled And .Visible Then .SetFocus.
Если тебе обязательно нужно, чтобы текстовое поле получало фокус в любом случае, то выставляй его через таймер - запустил таймер, в процедуре таймера проверил, что поле уже отображается, активировал его и выключил таймер.
Lasciate ogni speranza, voi ch'entrate.

David
Обычный пользователь
Обычный пользователь
 
Сообщения: 81
Зарегистрирован: 10.03.2004 (Ср) 20:41
Откуда: FRANCE

Сообщение David » 09.04.2008 (Ср) 21:32

спасибо alibek, объязательно проверю, но уже сейчас мне кажется, что это объясняет мои проблемы.

раньше прога работала на компе юзера а сегодня на сервере который обслуживает 40 юзеров (TS - не знаю как по-русский) и время реагирования должно быть задерживается

вообщем, по крайней мере какое-то объяснение. напишу когда проверю

всем спасибо


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

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

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

    TopList