Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Borland 6 Popup naziv pozivaoca

[es] :: C/C++ programiranje :: Borland 6 Popup naziv pozivaoca

[ Pregleda: 2074 | Odgovora: 1 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

tokajac

Član broj: 93240
Poruke: 123
*.dynamic.sbb.co.yu.



+5 Profil

icon Borland 6 Popup naziv pozivaoca14.02.2008. u 02:01 - pre 197 meseci
Dinamicki kreiram sve item-e PopUp-a.
Desnim klikom pozivam popUp na BitBtn6.

Kako da u dogadjaju, koji se izvrsava kada se odabere(klikne) neka od opcija popUp-a, ochitam naziv (Name) komponente pozivaoca?
Ako treba da prosledjujem parametar, treba mi detaljan primer.


Code:


itemOpcija->OnClick = Dogadjaj;          //kada se klikne na item da bude Dogadjaj
.
.
.
.
.

void __fastcall  Form1::Dogadjaj(TObject *Sender)
{
   AnsiString TMenuItem *item = ((TMenuItem*)Sender);
   AnsiString staPisheNaKliknutomItemu = item->Caption;    //Ovo se ochita OK

   AnsiString imePozivaoca = ???????;  //treba mi Name dugmeta koje je otvorilo popUp, u ovom slucaju BitBtn6
}



Pozdrav!
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4902
*.tekostolac.co.yu.

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: Borland 6 Popup naziv pozivaoca14.02.2008. u 07:02 - pre 197 meseci
Ne mogu da se setim da li postoji neki lepši/prirodniji način da se obavi identifikovanje kontrole iz koje je pozvan taj PopupMenu (jer se Sender u funkciji odnosi na TMenuItem objekat), ali evo jedno rešenje koje bi trebalo da radi.

Recimo da imaš jedan TPopupMenu (PopupMenu1) i nekoliko stavki TMenuItem (MenuItem1, MenuItem2, ...) i da imaš dva TBitBtn (BitBtn1 i BitBtn2). BitBtn1 i BitBtn2 su povezani sa PopupMenu1 preko TBitBtn::PopupMenu. Dakle, dva tastera pokazuju na isti popup meni.

Kada klikneš na recimo prvu stavku popup menija (ti si dinamički napravio i dodelio kod) hoćeš da znaš koji taster (BitBtn1 ili BitBtn2) je pozvao tu stavku menija.

Ideja je da se iskoristi TBitBtn::OnBitBtnContextPopup događaj:

--- H ---
Code:

// ...
AnsiString KojiBitBtn;
// ...

Zatim napraviš ZAJEDNIČKI OnBitBtnContexPopup događaj. Selektuješ sve BitBtn koje želiš da uključiš u proveru, zatim klikneš na Events, klikneš na OnBitBtnContexPopup događaj i dodaš kod. Možeš i da preimenuješ u ObjectInspectoru naziv događaja da sugeriše da se radi o zajedničkom.

--- CPP ---
Code:

// ...
void __fastcall TForm1::ZajednickiBitBtnContextPopup(TObject *Sender,
      TPoint &MousePos, bool &Handled)
{
   KojiBitBtn = (dynamic_cast <TBitBtn *> (Sender))->Caption;           
}
// ...


Kod neke stavke samog menija:
Code:

void __fastcall TForm1::DogadjajZaStavkuJedanPopupMenija(TObject *Sender)
{
   // ...
   // koja stavka
   TMenuItem *MenuItem = dynamic_cast <TMenuItem*> (Sender);
   if ( MenuItem )
      ShowMessage( MenuItem->Caption );

   // koji bitbtn
   ShowMessage( KojiBitBtn );
   // ...
}



P.S.

Ovaj deo koda mozes malo i da zategnes, radi svake eventualnosti:
Code:

// ...
void __fastcall TForm1::ZajednickiBitBtnContextPopup(TObject *Sender,
      TPoint &MousePos, bool &Handled)
{
   TBitBtn *BitBtn = dynamic_cast <TBitBtn*> (Sender);
   if ( BitBtn )
      KojiBitBtn = BitBtn->Caption;           
}
// ...

 
Odgovor na temu

[es] :: C/C++ programiranje :: Borland 6 Popup naziv pozivaoca

[ Pregleda: 2074 | Odgovora: 1 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.