Toon posts:

2 events moeten 1 worden. (C++ Builder)

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb een form waar twee image componenten staan, die ik door met de muis te slepen, over de form kan bewegen.
Mijn probleem is nu dat ik dit heb gedaan door voor elk image component dezelfde source heb gebruikt.
Dit wil ik nu zo hebben dat dit via 1 event gaat.
Als iemand dit weet hoor ik het graag.

C++ Builder

Alvast bedankt...

  • The hunting Hunter994
  • Registratie: April 2000
  • Laatst online: 22-03-2023
In de Events-tab dezelfde functie toekennen aan 'OnDrag' of 'OnMouseDown' of zoiets. Je kunt dan met de Sender bepalen welke je aan het slepen bent (code waarschijnlijk iets aanpassen dus).

Love is difficult to find, easy to lose and hard to forget.


Verwijderd

Topicstarter
void __fastcall TForm1::Image1MouseDown(TObject *Sender,
TMouseButton Button, TShiftState Shift, int X, int Y)
{
drag=true;
oldx=X;
oldy=Y;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Image1MouseMove(TObject *Sender, TShiftState Shift,
int X, int Y)
{
if(drag){
Image1->Left=Image1->Left+(X-oldx);
Image1->Top=Image1->Top+(Y-oldy);
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Image1MouseUp(TObject *Sender, TMouseButton Button,
TShiftState Shift, int X, int Y)
{
drag=false;
}

Dit is de source.
Ik heb de events van Image2 door gelinkt naar die van Image1
maar nu heb ik het probleem dat als ik op Image2 klik, Image1
gaat verschuiven.
Hoe krijg ik het voor elkaar dat waar nu Image1->Left etc. staat dat daar automatisch wordt gezien of het om Image1 of Image2 gaat.

  • Expecho
  • Registratie: Januari 2001
  • Laatst online: 12-09 14:07
Is er niet iets als raise event in C++ Builder ofzo? bijna elke taal kan wel een event simuleren door een bepaaklde aanroep.. in pseudo code krijg je dan zoiets:

on event of button1
{
raise-event event to button2
}

on event of button2
{
<code>
}

  • mulder
  • Registratie: Augustus 2001
  • Laatst online: 16-09 23:21

mulder

ik spuug op het trottoir

Ken (nog) geen c++, maar moet je niet zoiets doen:
code:
1
2
3
4
  with TImage(Sender) do  
    ->Left = ..
    ->Top = ..
  end;

of
code:
1
2
3
  TIMAGE img
  img = *Sender
  img->Left = ...

En dan beide naar een bv ImageMouseMove laten wijzen, dit kan in Delphi wel, en de opbouw van code ziet er ongeveer hetzelfde uit.

oogjes open, snaveltjes dicht


Verwijderd

Topicstarter
{
if(drag){
TImage* img = dynamic_cast<TImage*>(Sender);
img->Left=Image1->Left+(X-oldx);
img->Top=Image1->Top+(Y-oldy);
}
}

Zo ben ik er uitgekomen en hetwerkt!

Hartelijk bedankt...>:)
Pagina: 1