Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RFpro.ru: Программирование на Basic / VBA


Хостинг портала RFpro.ru:
Московский хостер
Профессиональный ХОСТИНГ на базе Linux x64 и Windows x64

РАССЫЛКИ ПОРТАЛА RFPRO.RU

Чемпионы рейтинга экспертов в этой рассылке

Гаряка Асмик
Статус: Специалист
Рейтинг: 3636
∙ повысить рейтинг »
Vasiliy83
Статус: Бакалавр
Рейтинг: 1673
∙ повысить рейтинг »
Megaloman
Статус: Профессионал
Рейтинг: 1204
∙ повысить рейтинг »

/ КОМПЬЮТЕРЫ И ПО / Программирование / Basic/VBA

Номер выпуска:1022
Дата выхода:16.05.2010, 09:00
Администратор рассылки:Калашников О.А., Руководитель
Подписчиков / экспертов:237 / 83
Вопросов / ответов:1 / 3

Вопрос № 178332: Уважаемые эксперты подскажите в следующем: имеется форма, на ней в строку слева направо размещены два флажка текстовое поле и кнопка. Действие кнопки в зависимости от введённого в поле слова. Как сделать, чтобы в зависимости от ситуации на форме п...



Вопрос № 178332:

Уважаемые эксперты подскажите в следующем:
имеется форма, на ней в строку слева направо размещены два флажка текстовое поле и кнопка. Действие кнопки в зависимости от введённого в поле слова. Как сделать, чтобы в зависимости от ситуации на форме появилось столько указанных строк с элементами управления сколько нужно. Спасибо.

Отправлен: 11.05.2010, 08:46
Вопрос задал: Ципихович Эндрю, Посетитель
Всего ответов: 3
Страница вопроса »


Отвечает Филатов Евгений Геннадьевич, Студент :
Здравствуйте, Ципихович Эндрю.
в общем, сделал так, как я понял задачу. если что-то не так, обсудим в форуме.

создайте новый проект, в нем должна быть форма Form1 и модуль Module1. свойство проекта "Startup Object" должно быть установлено в "Sub Main". сохраните проект. затем любым текстовым редактором замените содержимое формы и модуля из приложения.

в программе я постарался достаточно подробно описать все операции.

попробую прикрепить файл с исходниками.

С уважением.

Приложение:
Прикрепленный файл: загрузить »

Ответ отправил: Филатов Евгений Геннадьевич, Студент
Ответ отправлен: 11.05.2010, 23:39
Номер ответа: 261345

Оценка ответа: 4

Вам помог ответ? Пожалуйста, поблагодарите эксперта за это!
Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 261345 на номер 1151 (Россия) | Еще номера »
  • Отправить WebMoney:

  • Отвечает HookEst, Специалист :
    Здравствуйте, Ципихович Эндрю.

    "Повесить" обработчик события для runtime созданного элемента в MS Word, без использования VBProject, можно с помощью классов.
    в прикрепленном файле:
    класс DataRowCollection представляет собой коллекцию строк элементов на форме.
    для создания строки используется метод Add
    доступ к конкретной строке по свойству Item
    при нажатии на кнопку строки возникает событие OnButtonClick

    класс DataRow представляет собой одну строку элементов на форме. Создавать его отдельно - не нужно. только ч/з DataRowCollection.Add
    доступ к значениям элементов, ч/з свойства DataRow

    для использования нужно изменить метод DataRow.InitializeControls
    в нем задются список состояний, ширина/высота элементов

    и переопределить обработчик в модуле формы DataRows_OnButtonClick(DataRow As DataRow)
    в нем делайте, то что Вам нужно по нажатию кнопки...
    DataRow - та строка, на кнопку которой нажали...

    ну и додела ть что я там упустил...
    Успехов.
    Прикрепленный файл: загрузить »

    Ответ отправил: HookEst, Специалист
    Ответ отправлен: 13.05.2010, 09:49
    Номер ответа: 261363

    Оценка ответа: 4

    Вам помог ответ? Пожалуйста, поблагодарите эксперта за это!
    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 261363 на номер 1151 (Россия) | Еще номера »
  • Отправить WebMoney:

  • Отвечает Измалков Эдуард Леонидович, 6-й класс :
    Здравствуйте, Ципихович Эндрю.
    В целом мой ответ по принципу работы совпадает с предыдущем, разница в том, что класс используется только для обработки нажатия кнопки. Все остальные действия производятся при инициализации формы.
    Во-первых, нужно создать пустую форму с названием "Экспертиза" и модуль класса "clsBtnClick". В код формы вставить следующий код:
    Код:
    Option Explicit
    Private cmdBArray() As clsBtnClick

    Private Sub UserForm_Initialize()
    Const elemNum As Integer = 10 ' сколько создать элементов
    Const vHeight As Integer = 25 ' высота строки элементов
    Const fWidth As Integer = 909 ' ширина формы
    Const vBetween As Integer = 10 ' отступ между строками элементов
    Const v Top As Integer = 42 ' отступ сверху до первого элемента
    Const vBottom As Integer = 42 ' отступ от последнего элемента до нижнего края формы
    Dim i As Integer

    Me.Height = vTop + elemNum * (vHeight + vBetween) + vBottom ' отступы сверху-снизу-между элементами, плюс элементы
    Me.Width = fWidth
    For i = 1 To elemNum
    ' добаление первого флажка
    With Me.Controls.Add("Forms.OptionButton.1", CStr(i) & "1_OB")
    .Left = 51.75
    .Top = vTop + (i - 1) * (vHeight + vBetween)
    .Height = vHeight
    .Width = 25
    .GroupName = "Gr" & i ' группа используется для группировки флажков (может быть выставлен только один флаг из группы)
    End With
    ' добавление второго флажка
    With Me.Controls.Add("Forms.OptionButton.1", CStr(i) & "2_OB")
    .Left = 159
    .Top = vTop + (i - 1 ) * (vHeight + vBetween)
    .Height = vHeight
    .Width = 25
    .GroupName = "Gr" & i ' группа используется для группировки флажков (может быть выставлен только один флаг из группы)
    End With
    ' добавление combobox
    With Me.Controls.Add("Forms.ComboBox.1", CStr(i) & "_ComB")
    .Left = 222
    .Top = vTop + (i - 1) * (vHeight + vBetween)
    .Height = vHeight
    .Width = 210
    ' сюда еще нужно добавить строки добавления элементов
    '
    '
    End With
    ' добавление первого текстового поля
    With Me.Controls.Add("Forms.TextBox.1", CStr(i) & "1_TB")
    .Left = 444
    .Top = vTop + (i - 1) * (vHeight + vBetween)
    .Height = vHeight
    .Width = 54
    End With
    ' добавление второго текстового поля
    With Me.C ontrols.Add("Forms.TextBox.1", CStr(i) & "2_TB")
    .Left = 510
    .Top = vTop + (i - 1) * (vHeight + vBetween)
    .Height = vHeight
    .Width = 300
    End With
    ' добавление кнопки
    ReDim Preserve cmdBArray(i - 1)
    Set cmdBArray(i - 1) = New clsBtnClick
    Set cmdBArray(i - 1).cmdB = _
    Me.Controls.Add("Forms.CommandButton.1", CStr(i))
    With cmdBArray(i - 1).cmdB
    .Caption = "Записать"
    .Left = 822
    .Top = vTop + (i - 1) * (vHeight + vBetween)
    .Height = vHeight
    .Width = 48
    End With
    Next i
    End Sub

    Public Sub btnProc(i As Integer)
    Dim myText As String
    If Me.Controls(CStr(i) & "1_OB").Value Then _
    MsgBox$ Me.Controls(CStr(i) & "1_TB").Text & Me.Controls(CStr(i) & "2_TB").Text & " назначен"
    If Me .Controls(CStr(i) & "2_OB").Value Then _
    MsgBox$ Me.Controls(CStr(i) & "1_TB").Text & Me.Controls(CStr(i) & & quot;2_TB").Text & " заключен"
    End Sub

    в код класса вставить следующее:
    Код:
    Option Explicit

    Public WithEvents cmdB As MSForms.CommandButton
    Attribute cmdB.VB_VarHelpID = -1

    Private Sub cmdB_Click()
    Call Экспертиза.btnProc(CInt(Val(cmdB.Name))) ' здесь идет привязка к определенной форме
    End Sub

    Ответ отправил: Измалков Эдуард Леонидович, 6-й класс
    Ответ отправлен: 13.05.2010, 13:55
    Номер ответа: 261369

    Оценка ответа: 5

    Вам помог ответ? Пожалуйста, поблагодарите эксперта за это!
    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 261369 на номер 1151 (Россия) | Еще номера »
  • Отправить WebMoney:

  • Оценить выпуск »
    Нам очень важно Ваше мнение об этом выпуске рассылки!

    Задать вопрос экспертам этой рассылки »

    Скажите "спасибо" эксперту, который помог Вам!

    Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА
    на короткий номер 1151 (Россия)

    Номер ответа и конкретный текст СМС указан внизу каждого ответа.

    Полный список номеров »

    * Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи. (полный список тарифов)
    ** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
    *** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.


    © 2001-2010, Портал RFpro.ru, Россия
    Авторское право: ООО "Мастер-Эксперт Про"
    Автор: Калашников О.А. | Программирование: Гладенюк А.Г.
    Хостинг: Компания "Московский хостер"
    Версия системы: 2010.6.14 от 03.03.2010

    В избранное