Форум: "Основная";
Текущий архив: 2003.06.26;
Скачать: [xml.tar.bz2];
ВнизEInvalidOperation Найти похожие ветки
← →
Makhanev A.S. (2003-06-12 15:20) [0]История следующая: при создании/отображении формы появляется сабж. Новая форма может быть как модальной, так и немодальной. Самое страшное - это то, что ошибка вылетает не всегда. Проект может 2-3 раза скомпилироваться нормально, а на 4-ый: сабж. Ошибка не критична, после сообщения всё работает нормально.
Привожу код:
//создание самой формы в главной форме
with TfrmOptions.Create(Application) do
try
ShowModal; //ошибка возникает при отображении
finally
Free;
end;
// формы frmOptions в auto-create нет.
procedure TfrmOptions.FormActivate(Sender: TObject);
begin
//в зависимости от того, есть нижеприведённые строки - или нет, ошибка может появляться, а может - и нет. Причём особой разницы куда их писать (OnCreate, OnShow) - нет.
//ошибка возникает при самых разнообразных сочетаниях данного кода, т.е. например, если закомментировать 1-ую часть, ошибка может исчезнуть, а через несколько перекомпиляций опять появиться - и наоборот. Всё достаточно хаотично. Пока ясно только одно - если закомментировать обе части - ошибка исчезает.
PageControl1.ActivePageIndex := 0; //1-ая часть
if ReadSep = "" then //ReadSep - строковая переменная
rgpRead.ItemIndex := 0 // if..else.. - 2-ая часть
else // rgp - RadioGroup
rgpRead.ItemIndex := 1;
end;
В чём я не прав? Привести более полный листинг? Или есть подводные камни?
Использую: D6 - update pack #2, кое-где (но не в этом модуле) JVCL, RxLib.
Пока пробовал только в WinXP.
Буду очень благодарен за помощь.
← →
Sandman25 (2003-06-12 15:36) [1]Попробуйте добавить ActiveControl := rgpRead; перед второй частью. Если спросите: "Почему?", то у меня нет готового ответа.
Посмотрите вот это, может поможет.
http://delphimaster.net/view/15-1055403287/
← →
Makhanev A.S. (2003-06-12 15:57) [2]Есть подозрение, что здесь замешан PageControl...
Без него проблем нет.
Все компоненты лежат на нём в трёх TabSheet"ах.
← →
Makhanev A.S. (2003-06-12 16:02) [3]Кажется, я понял. в чём причина:
RadioGroup лежит на неактивном (индекс=1) TabSheet.
RadioGroup не имеет фокуса, как следствие своих особенностей(? имеется ввиду ссылка от Sandman25) - он глючит.
← →
Sandman25 (2003-06-12 16:10) [4]То есть если переключать индекс у видимого RadioGroup, то EInvalidOperation не выскакивает? Хотя судя по сообщению об ошибке, этого следовало ожидать.
← →
Makhanev A.S. (2003-06-12 17:02) [5]
> Sandman25 © (12.06.03 16:10)
Да, так и есть. На невидимом TabSheet АйтемИндексом невидимого RadioGroup"а нельзя управлять. Остальные свойства вроде работают...
Теперь приходится специально менять ActiveTabsheetIndex... ("туда и обратно"). Неудобно, наверное, придётся юзать RadioButton...
← →
Sandman25 (2003-06-12 17:14) [6]>Неудобно, наверное, придётся юзать RadioButton...
Так и с RadioButton"ом то же самое. Именно из-за него и RadioGroup не работает.
← →
Makhanev A.S. (2003-06-12 17:36) [7]
> Sandman25 © (12.06.03 17:14)
Жаль. А есть варианты? D7, или сторонний компонент... или может, кто посоветует как править этот?
← →
Sandman25 (2003-06-12 17:49) [8]Посмотрите в исходниках, может и можно это исправить.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.06.26;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.03 c