#pas
procedure TXPMenu._work_doIdxCheck;
var
Idx: integer;
begin
Idx := ReadInteger(_Data,_data_Index,_prop_Index);
if (Menu.Count > 0) and (Idx >= 0 ) and (Idx < Menu.Count) then
if Menu.ItemChecked[Idx] then
Menu.ItemChecked[Idx] := ReadBool(_Data);
end;
Этот топик читают: Гость
|
Разработчик
Ответов: 4698
Рейтинг: 426
|
|||
|
Нужно было сделать свое главное меню в программе, решил сделать с помощью компонента MenuEx. В скрытых точках нашел пункт doIdxCheck (ставитснимает флажок с индексом ARG(Index,State) ), решил проверить его работу таким образом: code_19164.txt, на что оно мне ответило фигой, сначала думал я что-то не так делаю, полез в коды XPMenus.pas, нашел нужный метод:
|
|||
| карма: 10 |
| ||
| файлы: 1 | code_19164.txt [917B] [222] | ||
| Голосовали: | nesco |
|
Администрация
Ответов: 15295
Рейтинг: 1519
|
|||
|
похоже на ошибку
|
|||
| карма: 26 |
|
|
Разработчик
Ответов: 26324
Рейтинг: 2147
|
|||
|
Dilma писал(а): похоже на ошибкуДействительно, в упор не помню, зачем я его там поставил ------------ Дoбавленo в 16.25: Исправлено |
|||
| карма: 22 |
|
|
Администрация
Ответов: 15295
Рейтинг: 1519
|
|||
|
ошибки подобного рода как правило получаются путем копирования кусков кода из других мест. Ну к примеру простым поиском находим еще один столько же загадочный метод:
|
|||
| карма: 26 |
|
|
Разработчик
Ответов: 4698
Рейтинг: 426
|
|||
|
Dilma, там в описании этой точки сказано, что он изменяется состояние на противоположное и загадочен здесь метод после else, а не после then
------------ Дoбавленo в 16.32: Хотя это тоже интересно, все решается простым способом |
|||
| карма: 10 |
|
|
Разработчик
Ответов: 26324
Рейтинг: 2147
|
|||
|
Dilma писал(а): еще один столько же загадочный методТам обычный триггер стоит, если "ДА", то сделать "НЕТ", а RadioCheck(idx) стоит для класса флажкак RadioCheck ------------ Дoбавленo в 16.34: Assasin, на радиокнопках попробуй |
|||
| карма: 22 |
|
|
Разработчик
Ответов: 4698
Рейтинг: 426
|
|||
|
nesco писал(а): Там обычный триггер стоит, если "ДА", то сделать "НЕТ", а RadioCheck(idx) стоит для класса флажкак RadioCheckНо как-то неправильно делать вывод о том, что это радиокнопка, если не стоит флажок |
|||
| карма: 10 |
|
|
Разработчик
Ответов: 26324
Рейтинг: 2147
|
|||
|
Assasin писал(а): Но как-то неправильно делать вывод о том, что это радиокнопка, если не стоит флажокЕсли я не ошибаюсь, то на обычную кнопку это никак не влияет, а вот радио переключает нормально, иначе, радиокнопка отказывалась переключаться. Ты вот проверь, а потом расскажешь, работает или нет |
|||
| карма: 22 |
|
|
Администрация
Ответов: 15295
Рейтинг: 1519
|
|||
|
nesco писал(а): Там обычный триггер стоит, если "ДА", то сделать "НЕТ",тригер это замечательно, но "not Menu.ItemChecked[Idx]" в контексте указанного метода тождественно равен false и ничему более. + Assasin писал(а): Но как-то неправильно делать вывод о том, что это радиокнопка, если не стоит флажок |
|||
| карма: 26 |
|
|
Разработчик
Ответов: 4698
Рейтинг: 426
|
|||
|
некогда мне сейчас проверять
|
|||
| карма: 10 |
|
|
Разработчик
Ответов: 26324
Рейтинг: 2147
|
|||
|
Dilma писал(а): но "not Menu.ItemChecked[Idx]" в контексте указанного метода тождественно равен false и ничему болееОчень интересно, а почему же это тогда работает |
|||
| карма: 22 |
|
|
Администрация
Ответов: 15295
Рейтинг: 1519
|
|||
|
nesco писал(а): а почему же это тогда работает всмысле? никто и не утверждал, что строка "Menu.ItemChecked[Idx]:= not Menu.ItemChecked[Idx]" не работает. Утверждалось, что ее можно сделать короче и проще: "Menu.ItemChecked[Idx]:= false" |
|||
| карма: 26 |
|
|
Разработчик
Ответов: 26324
Рейтинг: 2147
|
|||
|
Исправил. Но RadioCheck(idx) убирать нельзя, иначе, радиокнопки переключаться не будут, а отдельного метода для определения принадлежности флажка к радио или обычному чеку нет
|
|||
| карма: 22 |
|
13



Поиск
Друзья
Администрация