Builder Zdjęcia

Krzysztof Miller
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 10
0

Witam, problem jest taki, chciałbym zrobić na przykład 10 takich samych zdjęć w builderze, po kliknięciu w jedno z nich zdjęcie się zmieni na inne i drugi raz nie będzie można w nie kliknąć.

Kopiuj
void __fastcall TForm1::Image1Click(TObject *Sender)
{
Form1->Image1->Enabled=false;
Form1->Image1->Picture->LoadFromFile("drugie.png");
}

Tylko że zdjęć jest dużo i kodu w środku będzie więcej, chciałbym zrobić jakąś funkcje do której wpisywał bym numer zdjęcia i po uruchomieniu robiła by to samo co tamten void click wyżej.

Kopiuj
void kilk(int x)
{
Form1->Image[x]->Enabled=false;
Form1->Image[x]->Picture->LoadFromFile("drugie.png");
}

I bym po prostu podstawił tą funkcje pod Kliknięcie na zdjęcie i wstawił do niej numer zdjęcia i wystarczyło by teoretycznie gdyby wystąpił błąd naprawić tylko tego jednego void'a, czy da się takie cuda zrobić? Dopiero się uczę buildera, niewiele jeszcze ogarniam więc każde objaśnienie bedzie dobre

AK
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 3561
2

Nie jest jasne to, o co pytasz (dla mnie w ogóle).

ale pewno rozmowa się skończy na JAKIEJŚ strukturze danych i będzie potrzebny JAKIŚ prosty algorytm i JAKAŚ abstrakcja (uogólnienie)

generalnie tzw "borlandy" robią wielką krzywdę swoim adeptom sugerując, że tu chodzi o proste klikanie, ODDALAJĄC od kodowania, znajomości języka C 1) tworzenia dobrze zorganizowanego oprogramowania (tzw makaron rozszyty na GUI - zupełny brak koncepcji/projektowania obiektowego {tak, wiem, w oficjalnych folderach to jest programowanie obiektowe} czy przynajmniej dobrego rzemiosła strukturalno-proceduranego ).

Prawdopodobnie, gdybyś sobie nie zrobił krzywdy klikaniem w Builderze, byś umiał wyrazić to, co chcesz, w jakiś normalnych programistycznych kategoriach (kij z tym, proceduralnych czy obiektowych). A tak, to posiadasz tylko koncept OnClicka.

Mam swoje nieoficjalne mgliste przypuszczenie, że chodzi o słowo kluczowe na 'f'. Ale ponieważ samochody na 'f' są złe, nie będę tego rozwijał ;)

vpiotr
  • Rejestracja: dni
  • Ostatnio: dni
1

Podaj wersję Buildera bo to "__fastcall" trochę dziwnie wygląda (jakby z poprzedniego wieku).

vpiotr
  • Rejestracja: dni
  • Ostatnio: dni
1

Niedokładnie to o co pytasz, ale w tej samej technologii (przeglądarka obrazków):
http://www.functionx.com/bcb/controls/imagelist.htm

_13th_Dragon
  • Rejestracja: dni
  • Ostatnio: dni
0
Kopiuj
void Form1::kilk(int x)
{
	if(Image[x]->Tag==0) Image[x]->Picture->LoadFromFile("drugie.png");
	Image[x]->Tag=1;
}
MY
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 1107
0

Ale po co takie kombinacje alpejskie? Przecież w zdarzeniu OnClick mamy już wskaźnik na TImage na którym odbywa się kliknięcie, wystarczy tylko zrzutować... Można to zrobić w ten sposób:

Kopiuj
void __fastcall TForm1::Image1Click(TObject *Sender)
{
  Timage* Image = (Image*)Sender;
  klik(Image);
}

void kilk(Timage* Image)
{
  Image->Enabled=false;
  Image->Picture->LoadFromFile("drugie.png");
}

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.