Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.11.18;
Скачать: CL | DM;

Вниз

Текущий элемент меню   Найти похожие ветки 

 
de.   (2007-10-15 09:43) [0]

Как вернуть например Caption у текущего элемента меню на котором я кликнул...?
Пробовал так: GetItem(GetMenuIndex).Caption не получается пишет типа индекс меню выходит за допустимый диапазон.....
Как быть???


 
de.   (2007-10-15 09:49) [1]

Делаю так:

type
{ TMyMenuItem }
 TMyMenuItem = class(TMenuItem)
 private
   { Private declarations }
 protected
   { Protected declarations }
 public
   { Public declarations }
   procedure Click; override;
 published
   { Published declarations }
 end;



procedure TMyMenuItem.Click;
begin
 if GetItem(GetMenuIndex) <> nil then
   if GetMenuIndex >0 then
   frmMain.Caption := GetItem(GetMenuIndex).Caption;
end;


 
Kolan ©   (2007-10-15 09:49) [2]

У меню нет текущего индекса, обрабатывай OnClick


 
de.   (2007-10-15 09:52) [3]


> Kolan ©   (15.10.07 09:49) [2]

Ну чтотож по идеи должно вернуть интерфейс TMenuItem...?
Или нет.? В чем моя ошибка.?


 
de.   (2007-10-15 10:01) [4]

Вот родительский обработчик (не переписанный).
procedure TMenuItem.Click;
begin
 if Enabled then
 begin
   if (not Assigned(ActionLink) and AutoCheck) or (Assigned(ActionLink) and
       not (ActionLink.IsAutoCheckLinked) and AutoCheck) then
     Checked := not Checked;
   { Call OnClick if assigned and not equal to associated action"s OnExecute.
     If associated action"s OnExecute assigned then call it, otherwise, call
     OnClick. }
   if Assigned(FOnClick) and (Action <> nil) and (@FOnClick <> @Action.OnExecute) then
     FOnClick(Self)
   else if not (csDesigning in ComponentState) and (ActionLink <> nil) then
     FActionLink.Execute(Self)
   else if Assigned(FOnClick) then
     FOnClick(Self);
 end;
end;

Чего полезного можно отсюда извлеч.?


 
Kolan ©   (2007-10-15 10:02) [5]

> procedure TMyMenuItem.Click;

Во-первых где inherited?

Во-вторых MenuIndex(а зачем ты используешь геттер?) возвращает Integer, а не интерфейс.


> Или нет.? В чем моя ошибка.?

А чему равно MenuIndex, ты отладил?


 
Kolan ©   (2007-10-15 10:06) [6]

> if GetItem(GetMenuIndex) <> nil then
>   if GetMenuIndex >0 then
>   frmMain.Caption := GetItem(GetMenuIndex).Caption;

Да и наверно нада сначала проверить что индекс валидный, а уж потом GetItem(GetMenuIndex)(опть же нафи геттер?)


 
Игорь Шевченко ©   (2007-10-15 10:32) [7]


> procedure TMyMenuItem.Click;
> begin
>  if GetItem(GetMenuIndex) <> nil then
>    if GetMenuIndex >0 then
>    frmMain.Caption := GetItem(GetMenuIndex).Caption;
> end;


procedure TMyMenuItem.Click;
begin
 frmMain.Caption := Caption;
 inherited;
end;

?


 
de.   (2007-10-15 10:54) [8]


> Игорь Шевченко ©   (15.10.07 10:32) [7]

8-O
Все генеальное просто... :-)))
Спасибо большое...!


 
Юрий Зотов ©   (2007-10-15 16:23) [9]

И еще убрать амперсанды. Функция называется Strip-что-то-там, находится в Menu.pas.


 
Игорь Шевченко ©   (2007-10-15 16:29) [10]


> Функция называется Strip-что-то-там, находится в Menu.pas.


Что-то там - это tease ?


 
Юрий Зотов ©   (2007-10-15 17:50) [11]

> Игорь Шевченко ©   (15.10.07 16:29) [10]

Игорь, щас тя Розыч забанит - будешь знать!
:о)


 
Palladin ©   (2007-10-15 18:02) [12]

:))) Ща Розыч покажет кто тут главный по тизам :)


 
Германн ©   (2007-10-15 18:08) [13]

Да Розыча тут с полудня пятницы не проходило! :-)



Страницы: 1 вся ветка

Текущий архив: 2007.11.18;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.017 c
6-1174461755
snake77
2007-03-21 10:22
2007.11.18
Copy in TWebBrowser


15-1192097399
TUser
2007-10-11 14:09
2007.11.18
Американский капитализм пал


15-1192519969
Александр
2007-10-16 11:32
2007.11.18
Автоматическое копирование обновлённой версии программы


15-1192303418
ProgRAMmer Dimonych
2007-10-13 23:23
2007.11.18
Вопрос по русскому языку


3-1183804321
Senya-mariupol
2007-07-07 14:32
2007.11.18
Delphi и БД Microsoft Access