[C++][Builder] Dynamiczne tworzenie i usuwanie TShape

0

Witam !

Nie jestem biegły w programowaniu i prosilbym o pomoc w rozwiazaniu mojego problemu, otoz stworzylem oplikacje gdze wczytuje do TImage obraz bmp lub jpg, ustawilem dla tego TImage a w moim przypadku Image1 zdarzenie DblClick tak aby dynamicznie tworzylo TShape na Image1 w miejscu klikniecia. Chcialbym aby po utworzeniu TShape ustawic zdazanie na PopUpMenu->Usun dla konkretnego TShape na ktorego kilknolem oraz zdarzenie OnClick - ktore jak sie orientuje jest niedostepne =/

fragmenty kodu cpp:

TShape *light[255];
int i=0;

//////////////////////////////////////////////////////////////////

void __fastcall TForm12::Image1DblClick(TObject *Sender)
{

	light[i] = new TShape(Image1);
	 light[i]->Parent=Form12;
	 light[i]->Shape=stCircle;
	 light[i]->Width=15;
	 light[i]->Height=15;
	 light[i]->Left=pozycja_myszy_x+40;
	 light[i]->Top=pozycja_myszy_y+168;
	 light[i]->Brush->Color=clSkyBlue;
	 i++;

}

Jesli jakies niejasnosc sa w moim zapytaniu to piszcie z gory podziekowal za pomoc.

0

Nie ma OnClick, ale jest OnMouseDown.

Tworzysz sobie funkcję:

void __fastcall TFPlaylist::ShapeMouseDown(TObject *Sender,
	  TMouseButton Button, TShiftState Shift, int X, int Y)
{
    // Sender to TShape z którego przychodzi zdarzenie
    // i tu możesz np: jeśli przycisk to prawy przycisk - wywołać popup menu dla danego TShape'a i coś tam zrobić
    //                      : zapamiętać sobie w jakimś zewnętrznym wskaźniku tego TShape'a jako ostatnio klikniętego
}


// przy tworzeniu TShape'ów ustawiasz:

light[i]->OnMouseDown = ShapeMouseDown;
0

OK dzieki -=mAkAbrAs=-

Dodalem jeszcze przy tworzeniu dynamicznym :

light[i]->Tag=i;

lecz zawsze wpisuje mi tam 0 niezaleznie od wartosci i =/ nie wiem co jest grane,

I jeszcze jedno pytanie jak odwolac sie do tego Tag w ShapeMouseDown ?

0

((TShape*)Sender)->Tag

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