User Control

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

User Control

Сообщение inf » 30.10.2006 (Пн) 20:48

Доброго времени суток.

У меня несколько вопросов касающихся User Control(я только начал его изучать, так что не кричите сильно):
1)Как добавить пункт в свойства User Control? (например: как у таймера Interval)
2)Я сделал User Control с постоянным размером и при его изменении за (-1;-1) VB CRASHED!!!! :shock: а при нормальных изменениях размеров в большую сторону все нормально.
делаю так:
Код: Выделить всё
Private Sub UserControl_Resize()
On Error Resume Next
UserControl.Height = 500
UserControl.Width = 500
End Sub

При первом ресайзе User Control VB работает нормально как и подобает при ON ERROR RESUME NEXT, а если повторить то вылетает из VB. Почему такое происходит? (Ведь с таймером то все нормально при этих же операциях) Это не столь важно, но факт! Остается фактом, с которым мне не очень хочется смирится.
3) Как отслеживать KeyDownы на форме? (из User Control естественно)

З.Ы. Убедительная просьба написать код с пояснениями или хотябы просто код. Я ведь только учусь.
Заранее спс.
Изображение

Dmitriy2003
Постоялец
Постоялец
 
Сообщения: 690
Зарегистрирован: 27.05.2003 (Вт) 22:47
Откуда: Deutschland

Сообщение Dmitriy2003 » 31.10.2006 (Вт) 5:15

Что то форум то глючит - вот хотел человеку помочь а нифига :D постинг уплыл в нибытие


"опс заработал". короче два раза писать не интересно нету никаких глюков.

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

Public Property Get MyInterval() As Variant

End Property

Public Property Let MyInterval(ByVal vNewValue As Variant)

End Property


Private Sub UserControl_ReadProperties(PropBag As PropertyBag)

End Sub

Private Sub UserControl_WriteProperties(PropBag As PropertyBag)

End Sub
Dmitrich

inf
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 53
Зарегистрирован: 28.09.2006 (Чт) 21:10
Откуда: мы все оттуда

Сообщение inf » 31.10.2006 (Вт) 14:08

ну блин.....
этот вопрос теперь будет мучать меня до конца моих дней. Люди добрые поможите, чем можите.
Изображение

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 31.10.2006 (Вт) 14:33

Возьми да заюзай "VB6 ActiveX Ctrl Interface Wizard", раз без него невмоготу.
Изображение

inf
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 53
Зарегистрирован: 28.09.2006 (Чт) 21:10
Откуда: мы все оттуда

Сообщение inf » 31.10.2006 (Вт) 14:37

tyomitch писал(а):Возьми да заюзай "VB6 ActiveX Ctrl Interface Wizard", раз без него невмоготу.

Мне бы по русски хотелось услышать ответ. Неужели это такие сложные вопросы?
Изображение

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

Сообщение Viper » 31.10.2006 (Вт) 14:41

tyomitch писал(а):Возьми да заюзай "VB6 ActiveX Ctrl Interface Wizard", раз без него невмоготу.


имеется ввиду, что надо воспользоваться стандартным дизайнером пользовательских элементов управления имеющимся в стандартной посавке VB6. Меню Add-Ins->ActiveX Ctrl Interface Wizard. Если там вдруг нет, то добавляем при помощи Add-Ins->Add-In Manager...
Весь мир матрица, а мы в нем потоки байтов!

inf
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 53
Зарегистрирован: 28.09.2006 (Чт) 21:10
Откуда: мы все оттуда

Сообщение inf » 31.10.2006 (Вт) 14:49

!Viper! писал(а):
tyomitch писал(а):Возьми да заюзай "VB6 ActiveX Ctrl Interface Wizard", раз без него невмоготу.


имеется ввиду, что надо воспользоваться стандартным дизайнером пользовательских элементов управления имеющимся в стандартной посавке VB6. Меню Add-Ins->ActiveX Ctrl Interface Wizard. Если там вдруг нет, то добавляем при помощи Add-Ins->Add-In Manager...


Да это я понял, просто я просил ответить с кодом и желательно пояснениями.

Но все равно вопрос 2 и 3 осаются открытыми!
Изображение

inf
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 53
Зарегистрирован: 28.09.2006 (Чт) 21:10
Откуда: мы все оттуда

Сообщение inf » 31.10.2006 (Вт) 15:09

ВСЕ! Люди остался всего 1 вопрос!!!

3) Как отслеживать KeyDownы на форме?
Изображение

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 31.10.2006 (Вт) 15:14

по 2-му пункту поподробней опишите свою ситуацию, потому что я не могу воспроизвести вашу ошибку.

3. не забудьте KeyPreview=True выставить у формы

Код: Выделить всё
Option Explicit
Private WithEvents frm As Form

Private Sub frm_KeyDown(KeyCode As Integer, Shift As Integer)
    UserControl.Print "KeyCode=" & KeyCode
End Sub

Private Sub frm_Load()

End Sub

Private Sub UserControl_Initialize()

End Sub

Private Sub UserControl_Show()

    If Ambient.UserMode = True Then
        Set frm = UserControl.Parent
    End If

End Sub

Private Sub UserControl_Terminate()
    Set frm = Nothing
End Sub
Последний раз редактировалось Konst_One 31.10.2006 (Вт) 15:22, всего редактировалось 1 раз.

inf
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 53
Зарегистрирован: 28.09.2006 (Чт) 21:10
Откуда: мы все оттуда

Сообщение inf » 31.10.2006 (Вт) 15:22

Konst_One писал(а):по 2-му пункту поподробней опишите свою ситуацию, потому что я не могу воспроизвести вашу ошибку.


Это уж не очень важно, но все таки....

Мой UserControl не видим при выполнении. Я его откомпилировал и засунул в свою прогу(уже готовый). Размеры его постоянные. При изменении этих размеров в большую сторону (например было 500х500, а стало 2000х2000), размеры контрола возвращаются в исходные. Но при изменении размеров в меньшую сторону(менее чем 0х0) происходит ошибка при которой VB вылетает без предупреждения даже(это происходит при повторении действий. В первый раз ON ERROR RESUME NEXT срабатывает)

Или можно поставить вопрос по другому. Как заблокмровать ресайз
Вложения
скриншот.jpg
Пояснение 2 вопроса в картинках :)
скриншот.jpg (214.6 Кб) Просмотров: 177

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 31.10.2006 (Вт) 16:18

есть трабла, нашел

попробуй так, по крайней мере, у меня ошибки теперь нет:

Код: Выделить всё
On Error Resume Next

    UserControl.Width = 500
    UserControl.Height = 500
    DoEvents
   
    If Err.Number <> 0 Then Err.Clear

inf
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 53
Зарегистрирован: 28.09.2006 (Чт) 21:10
Откуда: мы все оттуда

Сообщение inf » 31.10.2006 (Вт) 16:22

Konst_One писал(а):есть трабла, нашел

попробуй так, по крайней мере, у меня ошибки теперь нет:

Код: Выделить всё
On Error Resume Next

    UserControl.Width = 500
    UserControl.Height = 500
    DoEvents
   
    If Err.Number <> 0 Then Err.Clear


Интересное какое-то решение, но мне оно не помогло =(
Изображение

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 31.10.2006 (Вт) 17:51

вот , подправь где тебе надо:
Вложения
noresize.zip
(8.38 Кб) Скачиваний: 35

inf
Обычный пользователь
Обычный пользователь
Аватара пользователя
 
Сообщения: 53
Зарегистрирован: 28.09.2006 (Чт) 21:10
Откуда: мы все оттуда

Сообщение inf » 31.10.2006 (Вт) 21:04

спасибо тебе добрый человек.
Изображение


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

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

Сейчас этот форум просматривают: Majestic-12 [Bot], Yandex-бот и гости: 132

    TopList