TMenuItem - kliknięcie

dział ogólny

TMenuItem - kliknięcie

Nowy postprzez Koziol » Å›roda, 7 października 2009, 08:25

Jak jestesśmy wstanie sprawdzić który element menu został kliknięty? Mam na myśli sytuację że dla każdego TMenuItem mamy jedno zdarzenie Click i w tym momencie jak jestem wstanie pobrać np. wartość Name klikniętego elementu?
Avatar użytkownika
Koziol
Intelektryk
Intelektryk
 
Posty: 144
Dołączył(a): niedziela, 13 lipca 2008, 17:36
PodziÄ™kowaÅ‚ : 8
OtrzymaÅ‚ podziÄ™kowaÅ„: 2
System operacyjny: Windows XP Pro SP2
Kompilator: C++ Builder
    NieznanyNieznana

Re: TMenuItem - kliknięcie

Nowy postprzez Corvis » Å›roda, 7 października 2009, 09:24

Nie wiem czy dobrze cie rozumiem,

W zdarzeniu OnClick MenuItem1 dajesz :

Kod: Zaznacz cały
String ItemName=MenuItem1->Name;


Ja też mam pytanie co ty chcesz zrobić wogóle ??
"Sukcesy trwają, dopóki ich ktoś nie spieprzy. Porażki są wieczne"

Dr Gregory House
Avatar użytkownika
Corvis
Programista I
Programista I
 
Posty: 880
Dołączył(a): sobota, 26 lipca 2008, 00:31
PodziÄ™kowaÅ‚ : 80
OtrzymaÅ‚ podziÄ™kowaÅ„: 30
System operacyjny: WINDOWS 7 64-bity
Kompilator: Praca - C++ Builder XE2 ENTERPRISE - Update 4, Dom - C++ Builder XE4 - Uddate 1
Gadu Gadu: 0
    NieznanyNieznana

Re: TMenuItem - kliknięcie

Nowy postprzez Cyfrowy Baron » Å›roda, 7 października 2009, 09:28

Wytłumaczę to bardzo dokładnie, gdyż Twoje pytanie jest nieprecyzyjne.
By jednak lepiej zrozumieć mechanizm przeczytaj w serwisie Cyfrowy Baron w dziale teoria, artykuł: rzutowanie typów, przypisanie polimorficzne.



Przykład wykorzystujący polimorfizm:
Tworzysz kilka elementów w MainMenu lub PopupMenu, dla przykładu będą to: Element_1, Element_2, Element_3, są to nazwy obiektów TMenuItem, a wartości Caption niech będą tak przypisane:

Element_1 = Otwórz
Element_2 = Zapisz
Element_3 = Zamknij

Nazwy elementów i wartość Caption są nieistotne, to tylko przykład.

Tworzysz zdarzenie OnClick dla TMenuItem o nazwie: Element_1:
Kod: Zaznacz cały
//---------------------------------------------------------------------------
void __fastcall TForm1::Element_1Click(TObject *Sender)
{
String nazwa    = dynamic_cast<TMenuItem* >(Sender)->Name;
String etykieta = dynamic_cast<TMenuItem*>(Sender)->Caption;

ShowMessage("Element: " + nazwa + " ma etykietÄ™: " + etykieta);
}
//---------------------------------------------------------------------------


Następnie w Object Inspector na zakłądce Events dla TMenuItems o nazwie Element_2 dla zdarzenia OnClick wybierasz Element_1Click i tak samo dla Element_2:

menuitem.png


i to wszystko, sprawdź jak to teraz działa.
Nie masz wystarczających uprawnień, aby zobaczyć pliki załączone do tego postu.

Za ten post autor Cyfrowy Baron otrzymał podziękowanie od:
Koziol
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
PodziÄ™kowaÅ‚ : 12
OtrzymaÅ‚ podziÄ™kowaÅ„: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    NieznanyNieznana

Re: TMenuItem - kliknięcie

Nowy postprzez Koziol » Å›roda, 7 października 2009, 17:36

i to wszystko, sprawdź jak to teraz działa.


A dziękuje dokładnie mi o to chodziło :)
Niewiedziałem, że nazywa się to rzutowaniem, a tak to bym głowy nie zawracał :) (wiele spraw to ułatwia :) )



takie pytanie jeszcze mi się nasuwa odnośnie całego tematu - gdzieś w sieci znalazłem że można do tego wykorzystać właściwość Action ale nigdzie nie znalazłem co i jak na ten temat. Czy mógł bym prosić o wyjaśnienie za co odpowiada właściwość Action, do czego dokładnie służy, i co najważniejsze jak ją "napisać"?
Avatar użytkownika
Koziol
Intelektryk
Intelektryk
 
Posty: 144
Dołączył(a): niedziela, 13 lipca 2008, 17:36
PodziÄ™kowaÅ‚ : 8
OtrzymaÅ‚ podziÄ™kowaÅ„: 2
System operacyjny: Windows XP Pro SP2
Kompilator: C++ Builder
    NieznanyNieznana

Re: TMenuItem - kliknięcie

Nowy postprzez Cyfrowy Baron » Å›roda, 7 października 2009, 18:08

Ja osobiście nie wiem jak dokładnie działa Action, kiedyś próbowałem, ale nie było mi to potrzebne.
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
PodziÄ™kowaÅ‚ : 12
OtrzymaÅ‚ podziÄ™kowaÅ„: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    NieznanyNieznana

Re: TMenuItem - kliknięcie

Nowy postprzez banita » Å›roda, 7 października 2009, 19:28

Action sluzy do zdefiniowania metody/metod ktore mozna podpisac pod kilka komponentow np masz 4 buttony i pod kazdy podpinasz ta sama akcje(metode). istanieje wiele predefiniowanych akcji (gotowych) np otwieranie pliku itd...
ogolnie nie daje to niczego czego nie mozna zrobic bez uzyca akcji.

akcje odnosza sie tylko do obslugi zdarzen onclick
Avatar użytkownika
banita
Kreacjusz
Kreacjusz
 
Posty: 283
Dołączył(a): poniedziałek, 28 lipca 2008, 20:07
PodziÄ™kowaÅ‚ : 1
OtrzymaÅ‚ podziÄ™kowaÅ„: 18
System operacyjny: Windows 7 Professional
Kompilator: C++Builder 2010 Update 5,
Delphi 2010 Update 5,
NetBeans 6.9(MinGw + Qt),
Visual Studio 2008 + Qt
Gadu Gadu: 0
    NieznanyNieznana

Re: TMenuItem - kliknięcie

Nowy postprzez Cyfrowy Baron » Å›roda, 7 października 2009, 19:42

Czyli tylko taki komponent oferujÄ…cy gotowy polimorfizm, z ograniczeniem do zdarzenia OnClick. :roll:
Avatar użytkownika
Cyfrowy Baron
Administrator
Administrator
 
Posty: 4716
Dołączył(a): niedziela, 13 lipca 2008, 15:17
PodziÄ™kowaÅ‚ : 12
OtrzymaÅ‚ podziÄ™kowaÅ„: 442
System operacyjny: Windows 7 x64 SP1
Kompilator: Embarcadero RAD Studio XE2
C++ Builder XE2 Update 4
SKYPE: cyfbar
Gadu Gadu: 0
    NieznanyNieznana

Re: TMenuItem - kliknięcie

Nowy postprzez wargo » czwartek, 8 października 2009, 15:10

Właściwość action ustawia funkcję która została zdefiniowana w komponencie "ActionsList"
Avatar użytkownika
wargo
Mądrosław
Mądrosław
 
Posty: 389
Dołączył(a): niedziela, 13 lipca 2008, 16:44
PodziÄ™kowaÅ‚ : 12
OtrzymaÅ‚ podziÄ™kowaÅ„: 3
System operacyjny: Windows 7
Kompilator: C++ Builder 6 Personal
Gadu Gadu: 6259515
    NieznanyNieznana


  • Podobne tematy
    Odpowiedzi
    Wyświetlone
    Ostatni post

Powrót do Ogólne problemy z programowaniem

Kto przeglÄ…da forum

Użytkownicy przeglądający ten dział: Brak zalogowanych użytkowników i 6 gości