| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Для новичков > Определение отображаемого фрейма |
| Автор: le0ne 29.1.2010, 17:00 | ||
| Имеется следующая ситуация: Форма, на форме PageControl с несколькими TabSheet'ами. На 1-м из tabsheet'ов в зависимости от выбора в listbox нужно отображать соответствующий Frame. Фреймы создаю динамически:
и так для нескольких кадров. Иногда валится эксепшн "acces violation". Как правильно уничтожать старый frame и создавать новый? И Как можно узнать отображаемый кадр без применения curFr; |
| Автор: shmelina 30.1.2010, 01:04 |
| Ты переменные frWz и frWp не обнуляешь (не присваиваешь им nil). У тебя, случаем, это не процедура с локальными переменными? |
| Автор: le0ne 31.1.2010, 18:44 |
| Нет, все переменные глобальные... |
| Автор: kami 1.2.2010, 01:19 |
| Может, не стоит так "бросаться" созданием-уничтожением фреймов на каждый "чих" пользователя? Создать по экземпляру каждого 1 раз при инициализации приложения, хранить их в приватных_полях_формы/чего_нибудь_еще/в_глобальных_переменных. При необходимости - "старому" фрейму делаем Parent:=nil, а новому - Parent:=то_что_нужно. При закрытии приложения - всем фреймам делаем Parent:=nil и уничтожаем их не боясь ничего, кроме одного - форма будет уничтожена раньше, чем мы вызовем деструкторы фреймов (в результате фрейм, который имел Parent<>nil будет уничтожен, и когда мы попытаемся убить его вторично, будет больно...) Вот без CurrentFrame как-то неособо получается, имхо - не стоит от него избавляться. |
| Автор: le0ne 1.2.2010, 13:45 |
| Kami, shmelina, спасибо за ответы. |