Witam
Piszę pewien testowy program i natrafiłem na problem z wykorzystywaniem zarówno tablicy obiektów jak i pojedynczego obiektu jako argumentu napisanej przeze mnie funkcji. Sprawy mają się tak:
Przycisk 1 tworzy tablicę przycisków btn[] i nadaje im odpowiednie położenie, zaś przycisk 2 ma za zadanie przesuwać te utworzone przyciski. Po naciśnięciu przycisku 2 wywołuje się funkcja przesuwanie,która powinna zmieniać atrybut Left każdego z przycisków (na które wskazuje tablica) o określoną wartość, oraz zmieniać atrybut Caption na przycisku 2.
Problem polega na tym, że podczas kompilacji Builder generuje błąd "E2451 Undefined symbol 'btn'". Co mogę zrobić, aby funkcja działała poprawnie?
Oto kod źródłowy:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
x=true;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
if (x)
{
for (int i=0; i<5;i++)
{
btn[i]= new TButton(this);
btn[i]->Parent = this;
}
for (int i=0; i<5;i++)
{
btn[i]->Top=50+i*100;
}
x=false;
}
else
Form1->Close();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
void __fastcall przesuwanie(btn,Button2);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::przesuwanie(TButton btn[],TButton Button2)
{
for (int i=0; i<5;i++)
{
btn[i].Left+=20;
}
Button2.Caption="dziala";
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
{
for(int i =0; i<5;i++)
delete btn[i];
}
//---------------------------------------------------------------------------
Oraz kod nagłówkowy:
//---------------------------------------------------------------------------
#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <ExtCtrls.hpp>
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published: // IDE-managed Components
TButton *Button1;
TButton *Button2;
TPanel *Panel1;
void __fastcall Button1Click(TObject *Sender);
void __fastcall FormClose(TObject *Sender, TCloseAction &Action);
void __fastcall Button2Click(TObject *Sender);
void __fastcall FormCreate(TObject *Sender);
private: // User declarations
public: // User declarations
TButton * btn[5];
bool x;
__fastcall TForm1(TComponent* Owner);
void __fastcall przesuwanie(TButton btn[],TButton Button2);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif
Z góry dziękuję za wszelką pomoc :)