Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Функция события для созданного объекта 
V
    Опции темы
Mpak
Дата 14.1.2007, 21:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Я создаю объект:
Код

TCSpinEdit *idx;
idx=new TCSpinEdit (mes);
idx->Parent=mes;
idx->Top=8;
idx->Left=230;
idx->Height=22;
idx->Width=49;


И мне нужна функция OnChange() этого объекта. Как, где и что мне нужно опистаь?  smile 

 smile 


--------------------
В любой откомпилированной программе есть, по крайней мере, одна ошибка...
P.S. А у меня их минимум две...
PM MAIL ICQ   Вверх
Anikmar
Дата 14.1.2007, 21:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

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



Самый простой метод (чтобы руками много не писать)
Кидаешь на форму такой компонент, создаешь обработчик события.
Пишешь внутри него какой-нить комментарий, чтобы не удалился при солхранении, удаляешь сам объект. У тебя появится метод формы строго соответствующий прототипу нужного обработчика. Затем просто присваиваешь его имя свойству OnChange созданного объекта и пишешь туда собственно реализацию

idx->OnChange = // Имя сгенерированного обработчика
PM MAIL ICQ   Вверх
Mpak
Дата 15.1.2007, 10:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Хмм......способ интересный....попробую, но меня интересует еще следующее:
smile
У меня генерируется объект на сгенерированной форме,

А я на сколько знаю, если создается новая форма, создается хедеровский файл и там описываются подобные функции...

Добавлено @ 10:32 
Anikmar,
Цитата(Anikmar @  15.1.2007,  00:53 Найти цитируемый пост)
 // Имя сгенерированного обработчика

Понял, что не понял что ты имеешь ввиду....


--------------------
В любой откомпилированной программе есть, по крайней мере, одна ошибка...
P.S. А у меня их минимум две...
PM MAIL ICQ   Вверх
Vyacheslav
Дата 15.1.2007, 10:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2124
Регистрация: 25.3.2002
Где: Москва

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



А что сложного? Много раз уже обсасывали
Декларируешь и определяешь соответствующий опбработчик прямо ручками.  Хотя бы в хидере и реализации той же формы 
Код

class TYourForm : public TForm
//...
public:
void __fastcall CSpinEditChange(TObject* Sender);
//...

Код

void __fastcall TYourForm::CSpinEditChange(TObject* Sender)
{
//...
}

Код

idx->OnChange = CSpinEditChange;





--------------------
С уважением, Вячеслав Ермолаев
PM MAIL WWW ICQ   Вверх
Mpak
Дата 15.1.2007, 10:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Vyacheslav, Дело в том, что уже пробовал подобное...
В чем у меня различее с Вашим примером?
Код

class TFormmes : public TForm
{
__published:
         TLabel *Label1;
         TCSpinEdit *idx;

private:
public:
         void __fastcall idxChange(TObject *Sender);
         __fastcall TFormmes(TComponent* Owner);
};


Код

idx->OnChange=idxChange;


Код

void __fastcall TFormmes::idxChange(TObject *Sender)
{
 Label1->Caption=idx->Text;
}


Добавлено @ 10:48 
Пишет ошибку:
Undefined simbol 'idxChange'

На строку
idx->OnChange=idxChange;


--------------------
В любой откомпилированной программе есть, по крайней мере, одна ошибка...
P.S. А у меня их минимум две...
PM MAIL ICQ   Вверх
Anikmar
Дата 15.1.2007, 11:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

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



Цитата(Mpak @  15.1.2007,  10:46 Найти цитируемый пост)
Пишет ошибку:
Undefined simbol 'idxChange'

На строку
idx->OnChange=idxChange; 


Эта строка точно в методе TFormmes?
PM MAIL ICQ   Вверх
Mpak
Дата 15.1.2007, 11:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Anikmar, то есть?
Вроде да...


--------------------
В любой откомпилированной программе есть, по крайней мере, одна ошибка...
P.S. А у меня их минимум две...
PM MAIL ICQ   Вверх
Anikmar
Дата 15.1.2007, 11:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

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



Цитата(Mpak @  15.1.2007,  10:23 Найти цитируемый пост)
Понял, что не понял что ты имеешь ввиду.... 


Я имел в виду имя, автоматическои сгенерированное при моем подходе.
Разницы никакой - я просто не люблю много ручками писать.
Можно просто добавить метод - тогда имя из головы.
Я предпочитаю автосгенерированное.

Добавлено @ 11:29 
Цитата(Mpak @  15.1.2007,  11:26 Найти цитируемый пост)
Anikmar, то есть?
Вроде да... 

Вроде или да?
Если внутри класса - то idxChange виден, а если нет, то что-то вроде этого: MyForm->idxChange

Добавлено @ 11:30 
Мой совет:
Все динамические компоненты создавая в конструкторе формы - меньше ошибок будет.

Лично я динамически компоненты очень редко создаю - только в навороченных диалогах. В большинстве случаев контролы можно предусмотреть заранее и создавать динамически только саму форму. Но это, конечно от задач конкретных зависит.
PM MAIL ICQ   Вверх
Mpak
Дата 15.1.2007, 12:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(Anikmar @  15.1.2007,  14:27 Найти цитируемый пост)
 Но это, конечно от задач конкретных зависит.

Я просто учусь  smile 

Вот где я ее описал:
Код

class TFormmes : public TForm
{
__published:
         TLabel *Label1;
         TCSpinEdit *idx;

private:
public:
         void __fastcall idxChange(TObject *Sender);
         __fastcall TFormmes(TComponent* Owner);
};


У меня еще сомнения где ее описать правильнее в __published или в public...


--------------------
В любой откомпилированной программе есть, по крайней мере, одна ошибка...
P.S. А у меня их минимум две...
PM MAIL ICQ   Вверх
pandrew
Дата 15.1.2007, 12:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Цитата(Mpak @  15.1.2007,  12:05 Найти цитируемый пост)
У меня еще сомнения где ее описать правильнее в __published или в public... 

Можно в private, но только не в __published 
PM MAIL   Вверх
Mpak
Дата 15.1.2007, 12:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Все равно для него моя функция нехороший символ smile


--------------------
В любой откомпилированной программе есть, по крайней мере, одна ошибка...
P.S. А у меня их минимум две...
PM MAIL ICQ   Вверх
GIK
Дата 15.1.2007, 12:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Добрый человек
**


Профиль
Группа: Участник
Сообщений: 985
Регистрация: 3.6.2005
Где: я только не небыв ал

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



Цитата

Все равно для него моя функция нехороший символ 

От руки пишешь? 
Если делать с помошью програмки, то все нормально выходит..
А в __published : неужно заносить если хочешь чтобы свойства компонента были доступны через окно свойста среды булдера. 



--------------------
Математика=>пиво=> програмирование, три вещи последовательны и совместимы !!!
Программирование - это не деятельнось! Программирование - это состояние души!
Бог - самый крутой программист.
PM MAIL ICQ   Вверх
Mpak
Дата 15.1.2007, 13:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



GIK, а как с помощью программки?
Формы то не существует...smile
Я хочу научится так вещи делать...
помогут жеsmile
Вот только застопорился....


--------------------
В любой откомпилированной программе есть, по крайней мере, одна ошибка...
P.S. А у меня их минимум две...
PM MAIL ICQ   Вверх
Anikmar
Дата 15.1.2007, 13:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

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



Цитата(Mpak @  15.1.2007,  13:01 Найти цитируемый пост)
Формы то не существует...

Что значит не существует? Будешь всю форму динамически отрисовывать?! Это же муторно!

Рисуется форма - такая какая нужна, в опциях проекта она переносится из раздела AutoCreate в раздел Available. Потом динамически создается - все нарисованные на этапе проектирования контролы будут автоматически созданы. 
PM MAIL ICQ   Вверх
Vyacheslav
Дата 15.1.2007, 13:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2124
Регистрация: 25.3.2002
Где: Москва

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



Судя по ошибке строка 
Код

idx->OnChange=idxChange;

точно располжена не в методах TFormmes.

Попробуй  так
Код

idx->OnChange= TFormmes::idxChange;



--------------------
С уважением, Вячеслав Ермолаев
PM MAIL WWW ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

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

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

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

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


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

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


 




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


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

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