void __fastcall TForm3::Image1MouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y){ xx=X; yy=Y; }//--------------------------------------------------------------------------- void __fastcall TForm3::Image1MouseMove(TObject *Sender, TShiftState Shift, int X, int Y){ if(!Shift.Contains(ssLeft)) return; ScrollBox1->VertScrollBar->Position=ScrollBox1->VertScrollBar->Position+(yy-Y); ScrollBox1->HorzScrollBar->Position=ScrollBox1->HorzScrollBar->Position+(xx-X);}
... //добавляю обработчик события двойной клик левой кнопкой Pict->OnDblClick=PictDblClick; ...
dynBtn = new TButton(this); btnMap[btnCounter] = dynBtn; dynBtn->OnClick = DynBtnClick;
в *.hppclass TForm1 : public TForm{...private: void __fastcall DynBtnClick(TObject *Sender);....}; в *.сррvoid __fastcall TForm1::DynBtnClick(TObject *Sender){ TButton *btn = dynamic_cast<TButton*>(Sender); ShowMessage (btn->Name);}
void __fastcall PictDblClick(TObject *Sender);
map <int, TImage*> ImMap; //отображение TImage *Pict; //собственно Image
for(int i=0;i<k;i++) //к- это количество картинок { Pict = new TImage (this); //родители Pict->Parent =ScrollBox1; .... Pict->Name = "Image_" + IntToStr(i);//имя очередного созданного Image //загрузка картинки Pict->Picture->LoadFromFile(IntToStr(i+1)+".jpg"); .... //добавляю обработчик события двойной клик левой кнопкой //обработчик получается один на все элементы Pict->OnDblClick=PictDblClick; //засовываю все в отображение ImMap[i]=Pict; }
void __fastcall TForm2::PictDblClick(TObject *Sender){ TImage *im = dynamic_cast<TImage*>(Sender); // преобразование в нужный обьект ShowMessage(im->Name); //вывод на экран имени Image на котором сделан двойной клик}
ImMap[inum]->Picture->Bitmap->Canvas->FrameRect(Rect(1,1,ImMap[inum]->Width-1,ImMap[inum]->Height-1));
void __fastcall TForm2::ScrollBox1MouseMove(TObject *Sender, TShiftState Shift, int X, int Y){ ScrollBox1->BorderStyle=bsSingle;}
void __fastcall TForm2::PictMouseMove (TObject *Sender,TShiftState Shift, int X, int Y){ ScrollBox1->BorderStyle=bsNone;}
void __fastcall TForm1::Panel1MouseMove(TObject *Sender, TShiftState Shift, int X, int Y){ if (Panel1->BorderStyle != bsSingle)Panel1->BorderStyle = bsSingle;}//--------------------------------------------------------------------------- void __fastcall TForm1::FormMouseMove(TObject *Sender, TShiftState Shift, int X, int Y){ if (Panel1->BorderStyle != bsNone)Panel1->BorderStyle = bsNone;}
for(int i=0;i>k;i++) //к- это количество картинок { Pict = new TImage (this); Panel= new TPanel (this); //родители Panel->Parent=ScrollBox1; Pict->Parent=Panel; Panel->Name="Panel_"+ IntToStr(i); Pict->Name = "Image_" + IntToStr(i); //номер картинки (вспомогательный параметр) Pict->Tag=i+1; //ширина и высота картинки, соответственно Pict->Width = w; Pict->Height = h; Panel->Caption=""; Panel->Width=w; Panel->Height=h; Panel->Top=....;//тут каждый пишет свои координаты Panel Panel->Left=....;//это координаты Panel на которой будет картинка //координаты Pict не нужны так как она привязана теперь к Panel Panel->BevelInner=bvNone; Panel->BevelOuter=bvNone; Pict->Stretch=true; Pict->Proportional=true; Pict->Center; .... //загрузка картинки Pict->Picture->LoadFromFile(Form1->tmpdir+"\\datatemp"+IntToStr(i+1)+".jpg"); .... //добавляю обработчик события перемещение мышки на объекте Pict->OnMouseMove=PictMouseMove; ImMap[i]=Pict; //отображение хранящее картинки ImPanel[i]=Panel; //отображение зранящее Panel .... }
void __fastcall TForm2::PictMouseMove (TObject *Sender,TShiftState Shift, int X, int Y){ //узнаем, какую картинку выделять TImage *im = dynamic_cast<TImage*>(Sender); // преобразование в нужный обьект if (!im) return; //проверка на валидность inum=im->Tag-1; //во вспомогательной переменной хранится номер картинки //собственно условие, выделять if (ImPanel[inum]->BorderStyle != bsSingle)ImPanel[inum]->BorderStyle = bsSingle;}
void __fastcall TForm2::ScrollBox1MouseMove(TObject *Sender, TShiftState Shift, int X, int Y){ if (ImPanel[inum]->BorderStyle != bsNone) ImPanel[inum]->BorderStyle = bsNone;}