[bcb]Indeksowanie komponentów

0

Nie chodzi mi o samo indeksowanie ale o blad, ktory pojawia mi sie w ponizszej funkcji... Jesli ktos moglby mnie oswiecic to bede wdzieczny bo teraz z rana nie moge dojsc co ten kompilator chce :P Dzieki z gory za wszelka pomoc :)

TComponent TForm1::Komponent(AnsiString Nazwa)
{
        int x;
        for(x=0;x<ComponentCount-1;x++)
         if(Components[x]->Name==Nazwa)
         {
          Kompo=Components[x];
          return Components[x];
         }
}

A tu w public deklaracje :

class TForm1 : public TForm
{
(...)
public:		// User declarations
        TComponent *Kompo;
        TComponent Komponent(AnsiString Nazwa);
(...)
};

A to komunikaty:

[C++ Error] Unit1.cpp(213): E2459 VCL style classes must be constructed using operator new
[C++ Warning] Unit1.cpp(215): W8070 Function should return a value
0
  1. Zwracaj
TComponent *
  1. Co zwracasz gdy nie znajdzie?
for(x=0; x<ComponentCount; x++)
FindComponent()
0

Piekne dzieki :) Okazuje sie, ze nie musialem robic wcale tej funkcji...

Jesli mozesz zerknij jeszcze ponizej. W calej sprawie chodzi o to, ze mam komponent Image1 i opisane dla niego zdarzenia :

void __fastcall TForm1::Image11MouseDown(TObject *Sender,
      TMouseButton Button, TShiftState Shift, int X, int Y)
{
        pos_x=X;
        pos_y=Y;
}

oraz :

void __fastcall TForm1::Image1MouseUp(TObject *Sender, TMouseButton Button,
      TShiftState Shift, int X, int Y)
{
        Image1->Left+=X-pos_x;
        Image1->Top+=Y-pos_y;
}

i teraz chcialem dla wszystkich innych kolejnych dynamicznie tworzonych TImage, nazwanych: "Image2", "Image3", ... itd. dac takie same zdarzenia tylko zeby zdarzenie odwolywalo sie do innych TImage. Sadzilem ze taka funkcja jaka opisalem na poczatku pomoze mi w odwolaniu sie do kolejnych TImage i opisanie dla nich tych samych zdarzen. Czy jest sens robic to w ten sposob i czy w ogole to wyjdzie oraz czy mozna to zrobic prosciej? Dzieki.

0

Wskaznik do obiektu, ktorego dotycza funkcje jest przekazywany jako

 Sender

, wiec rzutuj na TImage *

 i mozesz dzialac.
0

Po raz kolejny dziekuje slicznie.

Zrobilem tak :

void __fastcall TForm1::iCzujka1MouseUp(TObject *Sender, TMouseButton Button,
      TShiftState Shift, int X, int Y)
{
        TImage *img = (TImage*)Sender;
        img->Left+=X-pos_x;
        img->Top+=Y-pos_y;
}

i swietnie dziala :)

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