Модераторы: Akina

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Private Sub <ОБЪЕКТ>_Click() I = "<ОБЪЕКТ>", Как реализовать такое? 
:(
    Опции темы
Xeim
Дата 20.7.2006, 19:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 186
Регистрация: 17.11.2005

Репутация: нет
Всего: 0



Код

Private Sub <ОБЪЕКТ>_Click()
 I = "<ОБЪЕКТ>"
End Sub

Как реализовать такое?

Т.е. нужно, чтобы стринговой переменной присваивался текст названия объекта, в событии которого происходит это присвоение.  smile  
PM MAIL   Вверх
Naghual
Дата 20.7.2006, 20:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1893
Регистрация: 15.5.2004
Где: Украина, Днепр

Репутация: 26
Всего: 49



Это ты часом не с массивом объектов работаеш? 


--------------------
Я желаю всем Счастья!
PM ICQ Skype   Вверх
Xeim
Дата 20.7.2006, 21:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 186
Регистрация: 17.11.2005

Репутация: нет
Всего: 0



Цитата(Naghual @ 20.7.2006,  20:01)
Это ты часом не с массивом объектов работаеш?

В том-то и дело, что нет и моем случае в этом нет смысла. Поэтому и спрашиваю.  

Это сообщение отредактировал(а) Xeim - 20.7.2006, 21:35
PM MAIL   Вверх
mihanik
Дата 21.7.2006, 06:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


-=Белый Медведь=-
****


Профиль
Группа: Комодератор
Сообщений: 4054
Регистрация: 24.4.2006
Где: г. Тверь

Репутация: 11
Всего: 109



А вариант 
Код

I = <ОБЪЕКТ>.name 
не поможет?
 


--------------------
Программистами не рождаются, - это родовая травма...
user posted imageuser posted image
PM MAIL WWW ICQ   Вверх
Naghual
Дата 21.7.2006, 09:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1893
Регистрация: 15.5.2004
Где: Украина, Днепр

Репутация: 26
Всего: 49



Либо вариант mihanik либо для той же цели и по тому же принципу используй свойство Tag.  


--------------------
Я желаю всем Счастья!
PM ICQ Skype   Вверх
Xeim
Дата 21.7.2006, 16:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 186
Регистрация: 17.11.2005

Репутация: нет
Всего: 0



Цитата(mihanik @ 21.7.2006,  06:40)
А вариант 
Код

I = <ОБЪЕКТ>.name 
не поможет?

Дык "объект" должен сам каждый раз определяться. А вы предлагает мне самому в ручную вписывать значение его свойства!  smile  
PM MAIL   Вверх
Naghual
Дата 21.7.2006, 16:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1893
Регистрация: 15.5.2004
Где: Украина, Днепр

Репутация: 26
Всего: 49



Поясни задачу. Мне, например, не понятно что и для чего ты делаеш. 


--------------------
Я желаю всем Счастья!
PM ICQ Skype   Вверх
Bard
Дата 21.7.2006, 18:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 21.7.2006

Репутация: нет
Всего: нет



Код

Dim I As Control

Private Sub Command1_Click()
Set I = Command1
End Sub 
 

Это сообщение отредактировал(а) Bard - 21.7.2006, 18:33
PM MAIL   Вверх
Xeim
Дата 22.7.2006, 12:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 186
Регистрация: 17.11.2005

Репутация: нет
Всего: 0



Нужно, чтобы имя контрола не вводилось программистом, а чтобы имя само определялось, глядя на то, в каком событии прописана эта строка. 
PM MAIL   Вверх
mihanik
Дата 22.7.2006, 18:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


-=Белый Медведь=-
****


Профиль
Группа: Комодератор
Сообщений: 4054
Регистрация: 24.4.2006
Где: г. Тверь

Репутация: 11
Всего: 109



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

Код

Private Sub <контрол>_Click()
  бла-бла-бла
End Sub


Так? smile 
Что тебе мешает перед этим самым "бла-бла-бла" вставить ма-а-аленькую строчку 

Код

 I = <контрол>.name 


???

Получишь

Код

Private Sub <контрол>_Click()
  I = <контрол>.name 
  бла-бла-бла
End Sub


Другое дело, если у тебя массив контролов, хотя, тоже очень похоже... smile 

Или ты решаешь другую задачу типа "я щёлкнул где-то на форме по какому-то контролу. Пусть программа мне скажет, где именно я щёлкнул!" smile 

Это так?
 


--------------------
Программистами не рождаются, - это родовая травма...
user posted imageuser posted image
PM MAIL WWW ICQ   Вверх
Xeim
Дата 22.7.2006, 23:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 186
Регистрация: 17.11.2005

Репутация: нет
Всего: 0



Цитата(mihanik @ 22.7.2006,  18:11)
Знаешь....Это так?

Никак не могу сфорумулировать smile

Задача такая:
1) Мне нужно копировать один и тот же код в несколько разных  событий нажатий разных кнопок.
2) В коде участвуют методы и изменения свойств самого контрола, в котором происходит событие. (Если события button1_click, то button1.visible=true. Это я к примеру.)
3) Писать вручную button1.visible=true, button2.visible=true, button3.visible=true, button4.visible=true везде в соответствующих событиях button1_click, button2_click, button3_click, button4_click нету жедлания. Это всего лишь пример, код может быть длиннее с использованием имени контрола в событии.
4) Поэтому мне нужно в события button1_click, button2_click, button3_click, button4_click копировать одно и то же:
<контрол>.visible=true
smile
5) Только вот программа должна интерпретировать <контрол> как реальное соответствующее имя контрола. Например button1 в событии button1_click, или button2 в событии button3_click.

Неужели я опять не смог объяснить, что мне нужно????  smile   

Это сообщение отредактировал(а) Xeim - 22.7.2006, 23:09
PM MAIL   Вверх
boevik
Дата 23.7.2006, 06:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1452
Регистрация: 31.5.2004
Где: Израиль

Репутация: 12
Всего: 35



Подойдет что то типо следующего:
Код

'Код формы, на форме 3 CommandButton 
Begin VB.Form Form1 
   Caption         =   "Form1"
   ClientHeight    =   3195
   ClientLeft      =   60
   ClientTop       =   345
   ClientWidth     =   2160
   LinkTopic       =   "Form1"
   ScaleHeight     =   3195
   ScaleWidth      =   2160
   StartUpPosition =   3  'Windows Default
   Begin VB.CommandButton Command3 
      Caption         =   "Command3"
      Height          =   375
      Left            =   240
      TabIndex        =   2
      Top             =   1950
      Width           =   1335
   End
   Begin VB.CommandButton Command2 
      Caption         =   "Command2"
      Height          =   375
      Left            =   240
      TabIndex        =   1
      Top             =   1410
      Width           =   1335
   End
   Begin VB.CommandButton Command1 
      Caption         =   "Command1"
      Height          =   375
      Left            =   240
      TabIndex        =   0
      Top             =   870
      Width           =   1335
   End
End
Attribute VB_Name = "Form1"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False


Код

Option Explicit
Dim pressed_button As Control

Private Sub Command1_Click()
    Set pressed_button = Command1
    Handler
End Sub

Private Sub Command2_Click()
    Set pressed_button = Command2
    Handler
End Sub

Private Sub Command3_Click()
    Set pressed_button = Command3
    Handler
End Sub

Private Sub Form_Load()
    Handler
End Sub

Private Sub Handler()
Dim button As Control

    For Each button In Controls
        If TypeName(button) = "CommandButton" Then
            button.Caption = "Unpressed"
        End If
    Next
    If Not pressed_button Is Nothing Then pressed_button.Caption = "Pressed"
End Sub
 


--------------------
Никогда не говори никогда
PM MAIL WWW   Вверх
mihanik
Дата 23.7.2006, 06:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


-=Белый Медведь=-
****


Профиль
Группа: Комодератор
Сообщений: 4054
Регистрация: 24.4.2006
Где: г. Тверь

Репутация: 11
Всего: 109



boevik !
Думаю, то, что ты предложил, подойдёт для Xeim.

Идея кода прикольная.  smile 
Минуту игрался, прежде чем захотелось разобраться в идее. smile 

Красиво сделано!  smile  

Это сообщение отредактировал(а) mihanik - 23.7.2006, 06:59


--------------------
Программистами не рождаются, - это родовая травма...
user posted imageuser posted image
PM MAIL WWW ICQ   Вверх
Xeim
Дата 23.7.2006, 20:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 186
Регистрация: 17.11.2005

Репутация: нет
Всего: 0



boevik, спасибо большое за код сложный, но мне кажется это не то, что нужно smile

Если такой код
Код

Private Sub Command1_Click()    
    Set pressed_button = Command1    
    Handler    
End Sub

То вводить номер кнопки придется в каждой процедуре вручную! Я прав? Если да, то это, к сожелению, не то.... 
PM MAIL   Вверх
mihanik
Дата 23.7.2006, 23:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


-=Белый Медведь=-
****


Профиль
Группа: Комодератор
Сообщений: 4054
Регистрация: 24.4.2006
Где: г. Тверь

Репутация: 11
Всего: 109



Уважаемый Xeim!
Смысл кода здесь таков.

1. Переменная pressed_button устанавливается на тот контрол, событие которого обрабатывается.
2. Управление передаётся процедуре, которая должна отреагировать на происходящие события...
3. Обрабатывающая процедура смотрит на то, что лежит в pressed_button и соответствующим образом реагирует...

 smile 
---

Но я всё больше и больше склоняюсь к тому мнению, что тебе надо решать задачу типа "я где-то кликнул, а теперь давайте разберёмся, где именно я кликнул и что теперь делать?" smile

 ...

Мой коллега, когда учился программировать, написал программу-калькулятор.
На форме разбросал массив из 10 кнопок с общим именем Digits.
В каптионе каждой кнопки содержиться одна цифра.
При нажатии на кнопку эта самая цифра добавлялась к числу на дисплее...
Посмотри!
Может эта идея тебе подойдёт?

Код

Private Sub Digits_Click(Index As Integer)
If ClearDisplay Then
    Display.Caption = ""
    ClearDisplay = False
End If
Display.Caption = Display.Caption + Digits(Index).Caption
End Sub

 

Это сообщение отредактировал(а) mihanik - 24.7.2006, 07:18


--------------------
Программистами не рождаются, - это родовая травма...
user posted imageuser posted image
PM MAIL WWW ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "VB6"
Akina

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

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

  • Литературу по VB обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB6 | Следующая тема »


 




[ Время генерации скрипта: 0.1048 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.