1 Востаннє редагувалося Betterthanyou (14.11.2015 16:08:07)

Тема: Builder C++ Динамічне створення кнопки

Після довгих невдалих спроб створити кнопку в таблиці з БД (компонент DBGrid1) я все таки її створив (хоча написати текст в таблиці за допомогою Canvas мені так і не вдалося)

Подія DBGrid1DrawColumnCell

if (Column->FieldName == u"CB" && b)
{
TSpeedButton *NewButton=new TSpeedButton(Form1);

NewButton->Parent= DBGrid1;
NewButton->Caption="Button";
NewButton->Height=10;
NewButton->Width=10;
NewButton->Left=100;
NewButton->Top=10;
NewButton->Left=Rect.Left;
NewButton->Top=Rect.top;
NewButton->Width =Rect.Right - Rect.Left;
NewButton->Height=Rect.Bottom - Rect.Top;
NewButton->Font->Size = 10;
NewButton->OnClick = this->SpeedButton1Click_;
}

Unit1.cpp (це файл форми 1 де є таблиця)

void __fastcall SpeedButton1Click_(TObject *Sender)
{
    //
}

Unit1.h (це файл форми 1 де є таблиця)

class TForm1 : public TForm
{
__published:    // IDE-managed Components
    TDBGrid *DBGrid1;
    TBitBtn *BitBtn1;
    TDataSource *DataSource1;
    TADOConnection *ADOConnection1;
    TADOTable *ADOTable1;
    TAutoIncField *ADOTable1_id_;
    TWideStringField *ADOTable1_name_;
    TWideStringField *ADOTable1_surname_;
    TIntegerField *ADOTable1_int_;
    TDBNavigator *DBNavigator1;
    TComboBox *ComboBox1;
    void __fastcall DBGrid1DrawColumnCell(TObject *Sender, const TRect &Rect, int DataCol,
          TColumn *Column, TGridDrawState State);
    void __fastcall SpeedButton1Click_(TObject *Sender);// - це я добавив оголошення 
private:    // User declarations

public:        // User declarations
    __fastcall TForm1(TComponent* Owner);


};

а обробник подій OnClick чомусь робити не хоче,
[ilink32 Error] Error: Unresolved external '__fastcall TForm1::SpeedButton1Click_(System::TObject *)
а чому ?

2 Востаннє редагувалося Betterthanyou (14.11.2015 22:57:34)

Re: Builder C++ Динамічне створення кнопки

Прихований текст

Допоможіть

3

Re: Builder C++ Динамічне створення кнопки

Ви проголосили нову функцію SpeedButton1Click_, а не TForm1::SpeedButton1Click_. Треба ось так:
Unit1.cpp

void __fastcall TForm1::SpeedButton1Click_(TObject *Sender)
{
    //
}
Подякували: Betterthanyou, leofun012

4

Re: Builder C++ Динамічне створення кнопки

koala написав:

Ви проголосили нову функцію SpeedButton1Click_, а не TForm1::SpeedButton1Click_. Треба ось так:
Unit1.cpp

void __fastcall TForm1::SpeedButton1Click_(TObject *Sender)
{
    //
}

Дякую, тепер працює