Поиск:

Ответ в темуСоздание новой темы Создание опроса
> простая процедура, дайте пример простой процедуры 
:(
    Опции темы
Bugmaker
Дата 25.8.2009, 20:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Дайте пример кода на билдере с какой нибудь простенькйо процедурой.. допустим проверяющей по нажатию кнопки состоянии 2х чекбоксов и если оба чекнуты . то вывоядщей сообщение.

пробовал что-то вроде:

Procedure CheckBoxCheking()
{
 if checkbox1->Checked 
                    {
                       MEssageBoxA(NULL,"error","error",NULL);
                       }

}

ВЫдает Undefinde symbol checkbox1 
Чекбокс точно лежит на форме...

PM MAIL   Вверх
SVN74
Дата 25.8.2009, 21:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 740
Регистрация: 5.5.2008
Где: Комсомольск на Дн епре

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



Цитата(Bugmaker @  25.8.2009,  20:05 Найти цитируемый пост)


Procedure CheckBoxCheking()
{
 if checkbox1->Checked 
                    {
                       MEssageBoxA(NULL,"error","error",NULL);
                       }

}


void CheckBoxCheking(void)
{
    if(CheckBox1->Checked)
       {
          MessageBoxA("My_Error","Error",MB_OK + MB_ICONERROR);
        }
} 
PM MAIL WWW   Вверх
Anikmar
Дата 25.8.2009, 21:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(SVN74 @  25.8.2009,  21:08 Найти цитируемый пост)

void CheckBoxCheking(void)
{
    if(CheckBox1->Checked)
       {
          MessageBoxA("My_Error","Error",MB_OK + MB_ICONERROR);
        }
}


В таком виде тоже не сработает. Чекбоксы к форме относятся.
примерно так:
Код

TForm1::OnButton1Click(TObject *Sender)
{
    if(CheckBox1->Checked&&CheckBox2->Checked)
       {
          MessageBoxA("Оба чекбокса чекнутые!","Error",MB_OK + MB_ICONERROR);
        }
}

PM MAIL ICQ   Вверх
Bugmaker
Дата 25.8.2009, 21:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



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

void CheckBoxCheking(void)
{
    if(CheckBox1->Checked)
       {
          MessageBoxA("My_Error","Error",MB_OK + MB_ICONERROR);
        }
}

Такая же ошибка, как и с моим вариантом.. 
Undefinde symbol checkbox1 

Это сообщение отредактировал(а) Bugmaker - 25.8.2009, 22:02
PM MAIL   Вверх
Anikmar
Дата 25.8.2009, 22:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(Bugmaker @  25.8.2009,  21:59 Найти цитируемый пост)
Такая же ошибка, как и с моим вариантом.. 
Undefinde symbol checkbox1 

Об этом я уже написал.
Так слету работать не будет. Нужно метод проверки внести внутрь формы либо писать в отдельной функции что-то вроде такого:
if(Form1->CheckBox1->Checked)
Внутри вашей функции ничего неизвестно о члене класса формы вот он и ругается, что не знает что это.

А по поводу задачи в целом - повесьте на все чекбоксы один обработчик события OnChange - и будет вам счастье. Внутри него проверяйте хоть все, хоть через один.
PM MAIL ICQ   Вверх
Bugmaker
Дата 25.8.2009, 22:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



А как на все один повесть?? )) 
PM MAIL   Вверх
Anikmar
Дата 25.8.2009, 22:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(Bugmaker @  25.8.2009,  22:43 Найти цитируемый пост)
А как на все один повесть?? ))  

Сначала создайте для одного.
Потом выделяете на форме все чекбоксы (при помощи нажатой shift) и в инспекторе объекта выбираете в качестве обработчика уже созданный.
PM MAIL ICQ   Вверх
Bugmaker
Дата 25.8.2009, 23:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Спасибо, вроде бы разобрался.
Неужели с процедурами все так сложно? 
PM MAIL   Вверх
Anikmar
Дата 26.8.2009, 00:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(Bugmaker @  25.8.2009,  23:48 Найти цитируемый пост)
Неужели с процедурами все так сложно?  

А в чем тут сложности?  smile 

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

Вы просто неправильно обращаетесь к свойствам объекта. Никаких тут сложностей пока еще нет. Они начнутся позже - в процессе более глубокого изучения билдера и С++.


PM MAIL ICQ   Вверх
Bugmaker
Дата 27.8.2009, 19:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Я понимаю что при написании моей процедуры 

не так 

Procedure CheckBoxCheking()
{
 if checkbox1->Checked 
                    {
                       MEssageBoxA(NULL,"error","error",NULL);
                       }

}

а так
Procedure CheckBoxCheking()
{
 if form1->checkbox1->Checked 
                    {
                       MEssageBoxA(NULL,"error","error",NULL);
                       }

}

ПРоблема исчезнет, но я ведь все это пишу в Unit1.cpp ... там же описана и форма и все объекты на ней .. неужели нельзя процедуру както привязать к данной форме? 
PM MAIL   Вверх
Anikmar
Дата 27.8.2009, 21:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(Bugmaker @  27.8.2009,  19:51 Найти цитируемый пост)
ПРоблема исчезнет, но я ведь все это пишу в Unit1.cpp ... там же описана и форма и все объекты на ней .. неужели нельзя процедуру както привязать к данной форме?

То, что некий класс описан в данном модуле это, конечно, хорошо. Но подключить можно  очень много модулей и что тогда? Описание объекта и сам объект разные вещи. Из одного модуля можно вызвать кучу форм. Необходимо указать к какому конкретно объекту идет обращение. И то, что в рамках вашего проекта такой объект один и для вас это очевидно вовсе не очевидно для компилятора. Ему нужно точно сказать сколько граммов надо вешать - тобишь конкретно, какой объект использовать.

А привязать вашу процедуру к форме элементарно - сделайте ее методом этой формы и все.

Это сообщение отредактировал(а) Anikmar - 27.8.2009, 21:36
PM MAIL ICQ   Вверх
Bugmaker
Дата 28.8.2009, 15:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Anikmar спасибо, можно пример ?
PM MAIL   Вверх
Anikmar
Дата 28.8.2009, 21:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(Bugmaker @  28.8.2009,  15:45 Найти цитируемый пост)
Anikmar спасибо, можно пример ? 

В модуле cpp определяем метод
Код

void TForm1::CheckBoxCheking()
{
    if (checkbox1->Checked ) MEssageBoxA(NULL,"error","error",NULL);
}


В модуле hpp обявляем такой метод
Код

class TForm1...
{
...
public:
    void CheckBoxCheking();
...
};


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

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

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

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

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


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

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


 




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


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

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