Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.016 c
2-1193392869
Delphi_Beginer
2007-10-26 14:01
2007.11.18
Массив как возвращаемый параметр


15-1192118907
Kolan
2007-10-11 20:08
2007.11.18
Еще раз вопрос про BugTracking, старая ветка пропала&amp;#133


15-1191588720
Vlad Oshin
2007-10-05 16:52
2007.11.18
Шахматы. Система Тайманова в сицилианской


2-1193378132
cvg
2007-10-26 09:55
2007.11.18
Как обратиться к графику по имени?


15-1192360899
asker
2007-10-14 15:21
2007.11.18
turbo basic for windows




   Наверх