Недавно добавленные исходники

•  DeLiKaTeS Tetris (Тетрис)  4 268

•  TDictionary Custom Sort  6 313

•  Fast Watermark Sources  6 108

•  3D Designer  9 023

•  Sik Screen Capture  6 428

•  Patch Maker  6 845

•  Айболит (remote control)  6 830

•  ListBox Drag & Drop  5 704

•  Доска для игры Реверси  96 525

•  Графические эффекты  7 044

•  Рисование по маске  6 339

•  Перетаскивание изображений  5 218

•  Canvas Drawing  5 586

•  Рисование Луны  5 290

•  Поворот изображения  4 844

•  Рисование стержней  3 429

•  Paint on Shape  2 686

•  Генератор кроссвордов  3 568

•  Головоломка Paletto  2 862

•  Теорема Монжа об окружностях  3 671

•  Пазл Numbrix  2 403

•  Заборы и коммивояжеры  3 084

•  Игра HIP  2 043

•  Игра Go (Го)  1 970

•  Симулятор лифта  2 331

•  Программа укладки плитки  2 032

•  Генератор лабиринта  2 487

•  Проверка числового ввода  2 175

•  HEX View  2 503

•  Физический маятник  2 120

 
скрыть

  Форум  

Delphi FAQ - Часто задаваемые вопросы

| Базы данных | Графика и Игры | Интернет и Сети | Компоненты и Классы | Мультимедиа |
| ОС и Железо | Программа и Интерфейс | Рабочий стол | Синтаксис | Технологии | Файловая система |



Delphi Sources

Проблема с освобождением ресурсов Notebook



Автор: Mike Scott

Проблема с использованием ресурсов в компоненте Notebook? Вы можете обойти это, освобождая дескрипторы окон невидимых страниц компонента. Следующий код поясняет как это можно сделать - я создал обработчик события компонента OnClick, освобождающий дескрипторы невидимых страниц при каждом изменении видимой страницы:


procedure TForm1.TabSet1Click(Sender: TObject);
var 
  i: integer;
begin
  Notebook1.PageIndex := TabSet1.TabIndex ;
  with Notebook1, Pages do 
    for i := 0 to Count - 1 do
      if (i <> PageIndex) then 
        TForm1(Objects[i]).DestroyHandle;
end;

Как вы могли заметить, я привел тип страницы notebook (Objects[ i ]) к объектам TForm1, что на самом деле не так. Тем не менее, эта небольшая хитрость позволяет иметь доступ к защищенным членам извне метода класса, где они определены, в данном случае DestroyHandle - защищенный метод TWinControl.

Это работает, поскольку TForm1 является наследником TWinControl, и позволяет иметь доступ к защищенным членам TForm1 и ее наследникам. Быстро и грязно, но это работает! <g>

Не волнуйтесь, если вы видите, что невидимая страница показывается снова. VCL - довольно умная штука, поскольку захватывает данные от дескриптора окна и сохраняет это непосредственно в объекте. Затем, всякий раз, когда дескриптор требуется снова, то есть тогда, когда вы делаете страницу видимой, дескриптор окна пересоздается, туда снова копируются данные, и оп-ля, как будто ничего и не произошло - магия!

Я надеюсь это поможет.





Похожие по теме исходники

Notebook Battery Info




Copyright © 2004-2025 "Delphi Sources" by BrokenByte Software. Delphi World FAQ

Группа ВКонтакте