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

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



Память: 0.46 MB
Время: 0.022 c
1-1093522536
gonzales
2004-08-26 16:15
2004.09.12
Достучаться до Scrollboxa


1-1093386476
3APA3A
2004-08-25 02:27
2004.09.12
2 дополнительных потока при использовании TActionManager


3-1092729499
dolmat
2004-08-17 11:58
2004.09.12
Месяц и год


1-1093442096
Anderson
2004-08-25 17:54
2004.09.12
Изменение глубины цвета у TIcon...ПОМОГИТЕ


1-1093674631
GrayFace
2004-08-28 10:30
2004.09.12
Есть ли в Delphi какие-нибудь средства макроподстановки?




   Наверх