Форум: "Прочее";
Текущий архив: 2007.11.18;
Скачать: [xml.tar.bz2];
ВнизТекущий элемент меню Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.044 c