Поиск:

Ответ в темуСоздание новой темы Создание опроса
> обработчик Компоненты управления TButton, Как создать обработчик для динамического 
:(
    Опции темы
rohzan
Дата 19.5.2008, 07:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Здравствуйте 

Есть 2 формы Form1  и  Form2(From2 пустая и не имеет ни каких функций и компонентов?). На форме Form1 есть кнопка при нажатии которого вызывается Form2 и на нем динамически создается 2 edit и одна кнопка.
Вопрос
Как обработать событию  нажатии динамически созданной кнопки на Form2 если при условии нажатии  должна суммироваться значения edit-ов Form2?


Заранее благодарю,

PM MAIL   Вверх
ksili
Дата 19.5.2008, 09:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



примерно так:
1) создаешь функцию с таким же прототипом как Button1Click() как метод класса Form2. Назовём ее DynButtonClick
2) создаёшь кнопку так:
Код

DynButton = new TButton(Form2);
DynButton->OnClick = DynButtonCliсk;

3) А уже в DynButtonClick выполняешь всё что тебе надо:
Код

Label1->Caption = IntToStr(StrToInt(Edit1->Text) + StrToInt(Edit2->Text) + StrToInt(Edit3->Text));


Это сообщение отредактировал(а) ksili - 19.5.2008, 09:18


--------------------
Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с)
PM MAIL   Вверх
petlyura
Дата 19.5.2008, 09:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Когда создаешь динамически кнопку, то пишешь после конструктора.
Button1->OnClick = MyButtonClick;
Помещаешь void __fastcall MyButtonClick(...) в заголовочный файл формы и пишешь обработчик в *.cpp
void __fastcall TForm2::MyButtonClick(...)
{
// суммируешь тут
}

ksili, чуток не успел за тобой smile

Это сообщение отредактировал(а) petlyura - 19.5.2008, 09:13
PM MAIL   Вверх
rohzan
Дата 19.5.2008, 11:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



 Я сдела как было сказано но не работает 
в чем моя ошибка 
Код

//код в форме 1 
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
#include "Unit2.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}

//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{

        try
        {
                Form2=new TForm2(this);
                TLabel *label= new TLabel(Form2);
                label->Parent = Form2;
                label->Name = "label"+AnsiString(i);
                label->Top = 5;
                label->Height = 19;
                label->Caption = "COMMENTS";

                TEdit *edit= new TEdit(Form2);
                edit->Parent = Form2;
                edit->Name = "edit"+AnsiString(i);
                edit->Top = 5;
                edit->Left = 60;
                edit->Height = 19;
                edit->Width= 200;
                edit->Text ="";
                label->Left = 50-label->Width;

                TButton *button = new TButton(Form2);
                button->Parent = Form2;
                button->Name = "Button1";
                button->Top=20;
                button->Left=20;
                button->Caption = "ShowMessage";
                button->OnClick = Form2->MyButtonClick();
                Form2->ShowModal();
        }
        __finally
        {
                delete Form2;
        }
}



Форма2 "Unit2.h"
Код

//---------------------------------------------------------------------------

#ifndef Unit2H
#define Unit2H
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
//---------------------------------------------------------------------------
class TForm2 : public TForm
{
__published:    // IDE-managed Components
        void __fastcall MyButtonClick();

private:    // User declarations
public:        // User declarations
        __fastcall TForm2(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm2 *Form2;
//---------------------------------------------------------------------------
#endif


"Unit2.cpp"
Код

//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit2.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm2 *Form2;
//---------------------------------------------------------------------------
__fastcall TForm2::TForm2(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm2::MyButtonClick()
{
        ShowMessage("AA");
}




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


Эксперт
****


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

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



что/как не работает?


--------------------
Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с)
PM MAIL   Вверх
rohzan
Дата 19.5.2008, 11:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Выдает ошибку 
E2109 Not an allowed type
в строке 

 button->OnClick = Form2->MyButtonClick();
PM MAIL   Вверх
orthrus
Дата 19.5.2008, 12:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 400
Регистрация: 30.10.2007
Где: г. Усть-Илимск(Ир кутская обл.)

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



скобки убери:
Код

button->OnClick = Form2->MyButtonClick;

А в силу каких причин кнопку и эдиты нельзя создать в конструкторе Form2?

Это сообщение отредактировал(а) orthrus - 19.5.2008, 12:23


--------------------
У того, кто ничего не делает, всегда много помощников.© Л.Н. Толстой
user posted image
PM MAIL ICQ   Вверх
rohzan
Дата 19.5.2008, 12:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



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

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

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

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

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


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

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


 




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


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

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