Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2004.09.12;
Скачать: [xml.tar.bz2];

Вниз

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 вся ветка

Форум: "WinAPI";
Текущий архив: 2004.09.12;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.037 c
1-1093628527
Lord de Mon
2004-08-27 21:42
2004.09.12
Авторан и регистр.


1-1093542801
Maverick
2004-08-26 21:53
2004.09.12
Подскажите поажлуйста, как узнать, создана форма или нет?


1-1093626070
Lord de Mon
2004-08-27 21:01
2004.09.12
Как после клика на пункте меню открыть определённую страницу в бр


14-1092761103
KaLLeKa
2004-08-17 20:45
2004.09.12
Подскажите плийз, я в железе ничего не понимаю...


14-1093095857
Nick Denry
2004-08-21 17:44
2004.09.12
Библиотека Qt





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский