Форум: "Основная";
Текущий архив: 2003.08.25;
Скачать: [xml.tar.bz2];
ВнизКогда ComponentState=csLoading? Найти похожие ветки
← →
Bless (2003-08-13 15:59) [0]Любой компонент (то бишь наследник TComponent)имеет свойство ComponentState.
В каком случае ComponentState=csLoading?
В хелпе написано
csLoading
A filer object is currently loading the component. This flag is set when the component is first created and not cleared until the component and all its children are fully loaded (when the Loaded method is called).
Что значит
...the component and all its children are fully loaded...
Откуда куда загружены? В память? Или куда?
← →
VMcL (2003-08-13 16:01) [1]>Откуда куда загружены? В память? Или куда?
Из ресурса формы в ОЗУ.
← →
Vuk (2003-08-13 16:02) [2]to Bless:
Флаг csLoading показывает, что в данный момент идет загрузка свойств компонента из файла формы или из соответствующего ресурса. Как только загрузка завершена, флаг сбрасывается.
← →
Юрий Федоров (2003-08-13 16:03) [3]Из потока. Из ресурса. Из *.dfm
Окончание загрузки означает что все св-ва компонента соответствуют тем, которые в Design-Time были выставлены в инспекторе объектов
← →
Bless (2003-08-13 16:05) [4]Нифига себе оперативность :)
Спасибо.
← →
Bless (2003-08-13 16:22) [5]А компонент получает события, когда ComponentState=csLoading?
← →
Vuk (2003-08-13 16:26) [6]to Bless:
>А компонент получает события, когда ComponentState=csLoading?
События он получать не может, т.к. еще не загрежены обаботчики. А после загрузки вызывается виртуальный метод Loaded.
← →
Bless (2003-08-13 17:08) [7]>События он получать не может, т.к. еще не загрежены обаботчики. А
>после загрузки вызывается виртуальный метод Loaded.
А може ли быть видимым компонент, пока он в состоянии загрузки?
← →
Bless (2003-08-13 17:12) [8]Если ответ на мой последний вопрос - не может быть видимым(как я предполагаю), то в таком случае какой смысл в строчках
procedure TCustomDBGrid.DrawCell(ACol, ARow: Longint; ARect: TRect; AState: TGridDrawState);
...
if csLoading in ComponentState then
begin
Canvas.Brush.Color := Color;
Canvas.FillRect(ARect);
Exit;
end;
...
(взято из модуля DBGrids)
← →
Vuk (2003-08-13 17:15) [9]to Bless:
>А може ли быть видимым компонент, пока он в состоянии загрузки?
Вполне. Никто же не мешает загружать свойства компонента в любой момент времени.
← →
Bless (2003-08-13 17:23) [10]>Вполне. Никто же не мешает загружать свойства компонента в любой
>момент времени.
Кажется, я опять чего-то не понимаю. Что значит "загружать свойства"? Изменять их значения?
← →
Vuk (2003-08-13 17:32) [11]to Bless:
>Что значит "загружать свойства"?
Загрузка из потока, в котором хранится форма. см. TStream.ReadComponent
← →
Bless (2003-08-14 09:18) [12]А можно кусочек кода на загрузку какого-нибудь свойства из потока формы? И что такое поток формы?
И еще, происходит ли когда-нибудь такая загрузка неявно,
уже после того, как он был полностью загружен?
Может кто знает ссылки на литературу о подобных вещах, подкиньте плз.
← →
Vuk (2003-08-14 10:44) [13]to Bless:
>что такое поток формы?
.dfm видели? Так вот, этот файл хранит данные о свойствах формы (фрейма, модуля данных). При компиляции эти данные помещаются в ресурсы исполняемого модуля (если .dfm хранится в текстовом виде, то предварительно производится преобразование в двоичный формат .dfm). Во время выполнения программы форма читает из ресурсов данные и компоненты соответствующим образом инициализируются.
>И еще, происходит ли когда-нибудь такая загрузка неявно,
>уже после того, как он был полностью загружен?
Неявно для кого? Для компонента загрузка является процессом, который, как правило, инициируется снаружи компонента. Исключением явлются, пожалуй, только компоненты-контейнеры (формы, фреймы, модули данных), которые инициируют процесс загрузки самостоятельно - в конструкторе. Но сохранить в поток и загрузить оттуда данные можно для любого компонента.
С кодом прямо сейчас помочь не могу...
← →
bless (2003-08-14 11:49) [14]Ладно. Спасибо.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.08.25;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.01 c