Odwołanie sie do metody(zdarzenia) obrazka stworzonego dyn.

0

witam!
mam na razie taki kod:

 TImage *tab[10][10],*p;
 p = new TImage(this);
 p->Parent=this;
 tab[i][j]=p;
 tab[i][j]->Picture->LoadFromFile("grafika\\back.bmp");  ....

moge wiec tworzyc obrazki , nadawac im wlasciwości ale jak odwołac sie do kliknięcia na dany, konkretny obrazek????

0
 TImage *tab[10][10],*p;
 p = new TImage(this);
 p->Parent=this;
 tab[i][j]=p;
 tab[i][j]->Picture->LoadFromFile("grafika\\back.bmp");  ....
 tab[i][j]->OnClick=jakisOnClickEventHandler;

dalej.....

void __fastcall FormXXX::jakisOnClickEventHandler(System::TObject* Sender)
{
  TImage *pImg=(TImage*)Sender; //<--- kliknięty image
...
...
}

W celu określenia współrzędnych (indeksowych w tablicy)

TImage

możesz przeszukiwać tablice tab

 i porównywać adresy z <code class="cpp">pImg

lub użyć TImage::Tag

 (przy tworzeniu tablicy i w handlerze).
0

dzieki za odpowiedz. tylko ze wyskakuje mi w linijce:

tab[i][j]->OnClick=Klik;

'Undefind symbol Klik'

czy ma znaczenie czy czy fukcja
void __fastcall TForm1::Klik(System::TObject* Sender)
jest przed czy po
tab[i][j]->OnClick=Klik; ??

0

A dodałeś w pliku nagłówkowym deklaracje tej metody?

class TForm1 : public TForm
{
__published:
  ...
  ...
private:
  ...
  ...
 void __fastcall Klik(System::TObject* Sender); //<--- tak jak tu
public:
        __fastcall TForm1(TComponent* Owner);
};


0

ok dodałem to ale chyba cos poknociłem bo mi wywala linking error:

[Linker Error] Unresolved external '__fastcall TForm1::Image1Click(System::TObject *)' referenced from D:\PROGRAM FILES\BORLAND\CBUILDER6\PROJECTS\PK GRA KULKI\KULKI.OBJ

??

0
murek napisał(a)

ok dodałem to ale chyba cos poknociłem bo mi wywala linking error:

[Linker Error] Unresolved external '__fastcall TForm1::Image1Click(System::TObject *)' referenced from D:\PROGRAM FILES\BORLAND\CBUILDER6\PROJECTS\PK GRA KULKI\KULKI.OBJ

??

Prawdopodobnie metoda <cpp>Image1Click<cpp> nigdzie nie jest zdefiniowana lub źle ją dodałeś. Sprawdź czy jest w sekcji __published i jeśli tak, to zobacz czy jest też jej definicja (plik *.cpp).

0

ok poprawiłem to ,tyle teraz przestal mi wyswietlac obrazki . mam taki kod:...

void __fastcall TForm1::FormCreate(TObject *Sender)
{

TImage *tab[10][10],*p;
int i=0,j=0;
int f=0,t=0;
for (i=0;i<10;i++){
        for (j=0;j<10;j++){
                p = new TImage(this);
                p->Parent=this;
                tab[i][j]=p;
                tab[i][j]->Picture->LoadFromFile("grafika\\0.bmp");
                tab[i][j]->OnClick=Klik;

                f+=50;
                tab[i][j]->Left=f;
                tab[i][j]->Top=t;
                }
         f=0;t+=50;
        }
int kolor;
String s1,s2,s3;
Randomize;
kolor=random(8);            //tu przyokazji random zawsze zwraca mi 5 ..... ??? :)

s1="grafika\\";
s2=IntToStr(kolor);
s3=".bmp";

tab[5][7]->Picture->LoadFromFile(s1+s2+s3);
}

void __fastcall TForm1::Klik(System::TObject* Sender)
{
  TImage *pImg=(TImage*)Sender; //<--- kliknięty image

}

wiec zanim dopisalem te metode, wyswietlam mi siatke obrazkow, tak jak w tych petelkach... teraz mam czystą forme... ?? pewnie mam jakis głupi błąd.... sory ze sie z tym tak mecze ale dopiero zaczalem pisac w C....

0
void __fastcall TForm1::FormCreate(TObject *Sender)
{
 TImage *tab[10][10],*p; <--- po co ta tablica jeżeli jest używana w tylko w tej funkcji? 
 int i=0,j=0;
 int f=0,t=0;
 ...
 ...

A tak w ogóle to nie wiem po co robisz tyle tych

TImage

przecież możesz zrobić jeden duży i odpowiednio na nim narysować bitmapy.

[...] teraz przestal mi wyswietlac obrazki

 tab[i][j]->OnClick=Klik;

<--- no to raczej nie jest tego przyczyną ;)

0

ok juz sobie poradziłem.. wlasciwości formy mie sie pozmieniały ..nie wiem czemu...randomize tez juz obczaiłem... dzieki za pomoc!!! a z tą tablicą to jeszcze bede kombinował.... pozdro

0

no to mam jeszcze jedno pytanko.. do wspolrzednych z tablicy mozna sie odwolac poprzez Tag. to jakos mi sie udało zrobic ale nie wiem jak odczytac sciezke do pliku po kliknieciu na dany image... chodzi mi o plik ktory do danego imaga był wczesniej załadowany... ??

0
murek napisał(a)

no to mam jeszcze jedno pytanko.. do wspolrzednych z tablicy mozna sie odwolac poprzez Tag. to jakos mi sie udało zrobic ale nie wiem jak odczytac sciezke do pliku po kliknieciu na dany image... chodzi mi o plik ktory do danego imaga był wczesniej załadowany... ??

Z tego co mi wiadomo to z

TImage

ścieżki (do pliku bitmapy) nie wyciągniesz. Pytanie: po co ci ta ścieżka??

1 użytkowników online, w tym zalogowanych: 0, gości: 1