Hej!
Cyfrowy Baron napisał(a):Funkcja nie należy do klasy formularza, znajduje się w zupełnie innym pliku i nie ma pojęcia jakie obiekty znajdują się na formularzu. Jedyny jej kontakt z formularzem to ta funkcja.
Trochę niejasno napisane, ale mniemam że chodzi o to aby wysłać do funkcji 6 obiektów naraz.
Jeżeli tak to można to zrobić na dwa sposoby:
1. Stworzyć tablicę:
- Kod: Zaznacz cały
TImage** tab[] = {Image1, Image2, Image3, Image4, Image5, Image6}
a później napisać funkcję:
- Kod: Zaznacz cały
void func(TImage** tab)
{
for(int i=0;i<6;++i)
{
//operacje na kazdym Image. Odnosimy siÄ™ poprzez tab[i] np.
tab[i]->Left = 0;
}
}
Funckję oczywiście można łatwo uogólnić dla dowolnej liczby komponentów. Jeżeli zamierzamy przesyłać tablicę o różnej wielkości to trzeba podać jej rozmiar np:
- Kod: Zaznacz cały
void func(int size, TImage** tab)
{
for(int i=0;i<size;++i)
{
//operacje na kazdym Image. Odnosimy siÄ™ poprzez tab[i] np.
tab[i]->Left = 0;
}
}
2. Stworzyć funkcję o zmiennej liczbie argumentów:
- Kod: Zaznacz cały
#include <stdarg.h>
...
void func(int liczba, ...)
{
va_list vl;
va_start(vl, liczba);
for(int i=0;i<liczba;++i)
{
TImage* img = va_arg(vl, TImage*);
img->Left = 0;
}
va_end(vl);
}
No i funckje teraz możemy wywołać tak:
- Kod: Zaznacz cały
func(6, Image1, Image2, Image3, Image4, Image5, Image6)
Mam nadzieje że to rozwiązuje problem. Jeżeli źle zrozumiałem powyższe Twoje zdanie to opisz dokładniej o co chodzi.
If a machine is expected to be infallible, it cannot also be intelligent.
-- A.Turing