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

Вниз

Disable Enable MenuItem in MainMenu   Найти похожие ветки 

 
Wital   (2004-07-26 03:01) [0]

Здравствуйте!
Проясните пожалуйста ситуацию. На форме имеется компонент MainMenu, и четыре кнопки которые откл. и вкл. пункт в меню.
Если пользоваться только VCL или API методами то проблем не возникает. Но если скрестить то получается непонятная ситуация.
Например: Если я блокирую пункт test.Enabled := False;, то при включении его с помощью API, пункт приобретает нормальный цвет, но отваливается его событие. Если откл. с помощью API, то включить этот пункт через VCL неполучается. (Надо вначале откл. через VCL, а только затем он включится).
В чем причина ???

procedure TForm1.VclDisableClick(Sender: TObject);
begin
test.Enabled := False;
end;

procedure TForm1.VclEnableClick(Sender: TObject);
begin
test.Enabled := True;
end;

procedure TForm1.ApiDisableClick(Sender: TObject);
begin
EnableMenuItem(MainMenu1.Handle, 4, MF_BYCOMMAND Or MF_DISABLED Or MF_GRAYED);
end;

procedure TForm1.ApiEnableClick(Sender: TObject);
begin
EnableMenuItem(MainMenu1.Handle, 4, MF_BYCOMMAND OR MF_ENABLED);
end;

procedure TForm1.testClick(Sender: TObject);
begin
ShowMessage("___OK___");
end;


 
Wital   (2004-07-28 02:54) [1]

Приветствую.
Я что-то непонятно написал или никто с такими проблемами не сталкивался?


 
Кириешки ©   (2004-07-28 04:14) [2]

"никто с такими проблемами не сталкивался?"
Скорее всего нет. Посмотрите в FAQ или покапайтесь в инете, дабы "сайтов" подобно этому - полно.


 
Alex44   (2004-07-28 15:11) [3]

Prichina ochevidna: ne nuzhno smeshivat" nesmeshivaemoe.
VCL hranit informatsiyu (enabled/disabled) otdel"no i polagaetsya na nee. T.e., VCL dumaet, chto on disabled, i ne vyzyvaet sootvetstvuyushij method. Sootvetstvenno, lyuboy SetSomething(Value) method nachnaetsya, obychno, so stroki

if Value <> FEnabled then
...


 
Wital   (2004-07-29 06:57) [4]


> if Value <> FEnabled then
> ...

Исходя из этого предположения получается что присутствуют два значения FEnabled?!?
Если я откл/вкл или на vcl или на api то всё нормально работает, если смешиваешь отваливается событие.
Получается неубедительно ...


 
Cobalt ©   (2004-07-29 09:11) [5]

2 Wital   (29.07.04 06:57) [4]

Ну так тебе же сказали - не надо смешивать.
Ты в VCL поставил свойство Enabled (FEnabled) в false.
Затем разрешил пункт. На него нажимают, и вызывается метод
procedure TMenuItem.Click;
begin
 if Enabled then {Означает if FEnabled then}
 begin


А он-то у тебя - false.



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

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

Наверх




Память: 0.48 MB
Время: 0.027 c
4-1090796515
Wital
2004-07-26 03:01
2004.09.12
Disable Enable MenuItem in MainMenu


14-1093328675
Ega23
2004-08-24 10:24
2004.09.12
А что с основной конфой лучилось?


14-1093385158
ИМХО
2004-08-25 02:05
2004.09.12
Кто работал с Lotus Notes?


4-1090323812
STiTCH
2004-07-20 15:43
2004.09.12
Как отловить попытку запуска приложения


1-1093862827
TEXHAPb
2004-08-30 14:47
2004.09.12
Как запретить редактировать текст ячейки в TStringGrid