powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как передать правильно форму в процедуру?
9 сообщений из 9, страница 1 из 1
Как передать правильно форму в процедуру?
    #36127955
timursmeta
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Приветствую Вас знатоки!
Помогите решить на первый взгляд элементарную проблему.
Приведенный код ниже выдает ошибку при выполнении. "свойство или метод Height не поддерживается". Не пойму как такое возможно? Помогите пожалуйста.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
Sub DoStart(byVal DocType as Integer)
  if DocType =  1  then
    CustomizeForm UserForm1
  else
    CustomizeForm UserForm2
  endif
End Sub

Sub CustomizeForm(aUsForm As UserForm)
Dim aDeltaForm As Integer 

  aDeltaForm = GetSystemMetrics(SM_CYCAPTION) +  2 
  
  If CellsValue = "1" Then
    With aUsForm      
      .OptionButton2.Value = True
      .OptionButton1.Enabled = False
      .OptionButton2.Enabled = False
      .LabelProgress.Height =  50 

      .Height = .LabelProgress.Top + .LabelProgress.Height + aDeltaForm 'Ошибку выдает тут. Что не нравится ему?
      
    End With
  End If

End Sub
...
Рейтинг: 0 / 0
Как передать правильно форму в процедуру?
    #36128109
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: timursmeta
> Приветствую Вас знатоки!
> Помогите решить на первый взгляд элементарную проблему.
> Приведенный код ниже выдает ошибку при выполнении. "свойство или метод Height не поддерживается". Не пойму как
> такое возможно? Помогите пожалуйста.

Да вроде все нормально, можно попробовать перенести функцию CustomizeForm в саму форму и вызывать её от имени формы,
параметром передавая CellsValue


Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Как передать правильно форму в процедуру?
    #36128115
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: timursmeta

Да и ещё
Код: plaintext
Declare Function GetSystemMetrics Lib "User32" (ByVal nIndex As Long) As Long
и соответственно переменны не Integer, а Long


Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Как передать правильно форму в процедуру?
    #36128192
timursmeta
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Игорь Горбонос
Да и ещё

Declare Function GetSystemMetrics Lib "User32" (ByVal nIndex As Long) As Long

и соответственно переменны не Integer, а Long

Это вы верно заметили, но на результат ни как не повлияет ))

Игорь Горбонос
Да вроде все нормально, можно попробовать перенести функцию CustomizeForm в саму форму и вызывать её от имени формы

В том то и дело, что так работает(UserForm1.Height = 50)...
Cуть заключается в том, что процедура CustomizeForm одинаковая для всех форм, а форм много и меняться эта процедура будет частенько, а так подправил в одном месте и красота )))
И читаемость кода повышается...

Хочу заметить, что свойства(Caption, Value, Top и другие) элементам управления на форме проставляется верно, а вот форме ширину и высоту не хочет менять.
...
Рейтинг: 0 / 0
Как передать правильно форму в процедуру?
    #36128208
timursmeta
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Прикрепляю файлик для истенных гурманов, в нем и приведен этот несчастный пример. Обработчик висит на Worksheet_SelectionChange
...
Рейтинг: 0 / 0
Как передать правильно форму в процедуру?
    #36128390
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: timursmeta

Наверное никак, потому, что у класса MSForms.UserForm нет публичных свойств на изменение высоты формы. Они есть у самой
формы, но если посмотреть в Object Browser'e то можно увидеть у UserForm1:
Object BrowserProperty Height As Single
Member of Unknown24._Form

Поэтому, я бы сделал бы отдельный класс, свойство Instancing - 2(PublicNotCreatable)(это для того, что-бы не забыть и не
удалить реализацию)
Код: plaintext
1.
2.
3.
Option Explicit

Public Sub CustomizeForm()
End Sub
и в каждой форме после Option Explicit добавил Implements "имя класса"
и и определил-бы содержимое метода для каждой формы свое


Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Как передать правильно форму в процедуру?
    #36128441
Фотография big-duke
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
timursmeta,

найдите 1 отличие
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Sub CustomizeForm(ByRef aUsForm)


    With aUsForm
      .CheckBox1.Caption = "Test"

      .Height = .CheckBox1.Top +  50 
      
    End With

End Sub
...
Рейтинг: 0 / 0
Как передать правильно форму в процедуру?
    #36128511
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: big-duke
> найдите 1 отличие

Снимаю шляпу


Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Как передать правильно форму в процедуру?
    #36128516
timursmeta
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо большое за помощь, я что вроде того и сделал!
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как передать правильно форму в процедуру?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]