Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Опять вскочил вопрос
 
 автор: час   (17.02.2010 в 11:37)   личное сообщение
 
 

Как отследить клик мышкой по контролу , созданному(добавленному) на форму программно.
Может как то массив этих контролов создать что ли....

  Ответить  
 
 автор: kot_k_k   (17.02.2010 в 13:30)   личное сообщение
 
 

вот табе - код. он создает в форме "Vibor_Naimen" функцию и именем ioo и ее окончанием
обрати внимание на название модуля "Form_....." а потом его имя!!! т.е. как в модуле VB.


Private Sub Кнопка75_Click()
Dim mdl As Module
DoCmd.OpenModule "form_Vibor_naimen" 
Set mdl = Modules("form_Vibor_naimen")
mdl.AddFromString "Public Sub ioo()" & Chr(13) & Chr(10) & "end sub"
End Sub



еще способ - из файла текст:
Метод AddFromFile добавляет содержимое текстового файла в объект Module. Объект Module представляет стандартный модуль или модуль класса.

короче Хэлп в помощь, сам только об этом узнал

  Ответить  
 
 автор: kot_k_k   (17.02.2010 в 13:43)   личное сообщение
 
 


Private Sub Кнопка75_Click()
Dim mdl As Module
DoCmd.OpenForm "форма2", acDesign, , , , acHidden
Set mdl = Modules("form_форма2")
mdl.AddFromString "Private Sub Поле0_Click()" & Chr(13) & Chr(10) & "docmd.close" & Chr(13) & Chr(10) & "end sub"
DoCmd.Close acForm, "форма2", acSaveYes
End Sub


вот так правильней

  Ответить  
 
 автор: Lukas   (17.02.2010 в 13:33)   личное сообщение
16 Кб.
 
 

В Access это может выглядеть как-то так: =>

  Ответить  
 
 автор: kot_k_k   (17.02.2010 в 13:46)   личное сообщение
 
 

йепп.... ваще!!!

да!! у нас стобой - Час - классы только начальные, церковно-приходской школы.

  Ответить  
 
 автор: час   (17.02.2010 в 15:13)   личное сообщение
 
 

  Ответить  
 
 автор: kot_k_k   (17.02.2010 в 15:29)   личное сообщение
 
 

можно в примеры как пособие по созданию класса - кода минимум и можно понять че к чему.

да и изварщенцам разным тоже пригодится.

страшный сон программера:


" юзер из списка выбирает вид контрола                   '(хрен с ним, поворачиваясь на другой бок)
  на форме его кнопками курсора размещает              '(сделаем) 
  потом в окне пишет текст обработки событий            '(подленькое хихиканье спящего)
  по кнопке ОК заносится все в форму                             '(ну чё дальше, злорадствует во сне программер)
  юзер, через свою форму, начинает работать с базой..." 

- программер просыпается с трясущимися руками, плачет "мама", зовет бабушку, всхлипывает - программеру страшно.
Утром первым делом делается внеочередной бэкап БД, на юзеров смотрит с бОльшим подозрением и не доверием.

  Ответить  
 
 автор: час   (17.02.2010 в 17:12)   личное сообщение
 
 

  Ответить  
 
 автор: Explorer   (17.02.2010 в 17:37)   личное сообщение
 
 

работа с классами в access требует особого мужества и чувства юмора :)

  Ответить  
 
 автор: Lukas   (17.02.2010 в 18:07)   личное сообщение
 
 


В access я бы обошелся тремя строчками кода в форме без классов вообще.
Часу надо задачу порешать на VB6.

  Ответить  
 
 автор: час   (17.02.2010 в 21:11)   личное сообщение
 
 


Public Sub Initialize(ByVal frm As Form, ByVal i As Int16)
        btn = New Button
        frm.Controls.Add(btn)
        With btn
            .Name = "cmd" & i
            .Text = "Кнопка " & i
            .Left = 10
            .Width = 60
            .Height = 20
            .Top = 20 + 20 * i
            .Visible = True
        End With
    End Sub 


Вопрос у мну про массив элементов управления(контролов) на форме
То есть как создать массив контролов?????
Тогда отпадёт видимо много вопросов
Потому как создав одну процедуру обработки можно будет узнать индекс элемента управл., вызвавшего это событие....
Вопрос - как создать массив контролов????(используя метод Add())

  Ответить  
 
 автор: час   (17.02.2010 в 23:28)   личное сообщение
 
 


Воооооо

для этого выкладываешь _
на форме один контрол нужного типа, _
устанавливаешь его свойство Index, например к 0. _
Для добавления к массиву нового элемента:

Load Label1(1)
Label1(1).Top = 100
Label1(1).Visible = True
Load Label1(2)
Label1(2).Top = 1000
Label1(2).Visible = True
'загруженный контрол наследует _
все значения свойств, от последнего элемента _
в массиве кроме Visible, которое всегда устанавливается к False.

'для выгрузки соответственно:

'Unload Control(I)

  Ответить  
 
 автор: час   (17.02.2010 в 23:37)   личное сообщение
20 Кб.
 
 

Вот ведь как всё просто
Вот код и пример
В примере когда будут созданы лабели - по ним можно кликать

Option Explicit

Private Sub Command1_Click()
Static FormIndex
    ReDim F(FormIndex) As New Form1
    Load F(FormIndex)
    F(FormIndex).Caption = "Форма ? " + Str$(FormIndex)
    F(FormIndex).Show
    FormIndex = FormIndex + 1
End Sub

Private Sub Command2_Click()

' если компонент, то создаешь массив _
нужных контролов, для этого выкладываешь _
на форме один контрол нужного типа, _
устанавливаешь его свойство Index, например к 0. _
Для добавления к массиву нового элемента:

Load Label1(1)
Label1(1).Left = 1000
Label1(1).Top = 100
Label1(1).Caption = "Первая"
Label1(1).Visible = True
Load Label1(2)
Label1(2).Left = 2000
Label1(2).Top = 100
Label1(2).Caption = "Вторая"
Label1(2).Visible = True
'загруженный контрол наследует _
все значения свойств, от последнего элемента _
в массиве кроме Visible, которое всегда устанавливается к False.
'для выгрузки соответственно:
'Unload Control(I)
End Sub

Private Sub Label1_Click(Index As Integer)
MsgBox Label1(Index).Caption
End Sub

  Ответить  
 
 автор: Lukas   (18.02.2010 в 02:04)   личное сообщение
 
 

Вот ведь как всё просто
Легко говорить, когда уже умеешь.

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList