Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.09.23;
Скачать: [xml.tar.bz2];

Вниз

Задам Вопрос Иначе - Как Упорядочить присвоение Свойствам   Найти похожие ветки 

 
Демонов Е.В.   (2002-09-11 13:47) [0]

FActive:Boolean;
procedure SetActive(VAlue:Boolean);

FWinControl:TWinControl;

Property Active:Boolean read FActive Write SetActive;
Property WinControl:TWinControl read FWinControl set FWinControl;

procedure fff.SetActive(VAlue:Boolean);
begin
if assigned(FWinControl) then
begin
ФункцияWinApi(FWinControl.Handle,......)
fActive:=VAlue;
end
else
fActive:=False;


end;

Но программа сначало читает из дфм значение свойства проперти, когда ещё FWinControl=nil, а уж потом свойство WinControl
В Итоге всё работает не так как задуманно;

Как мне сделать чтобы сначало читалось свойство WinControl, а потом Active?

кстати может есть способ програмно читать свойство из дфм,
тогда и ComponentState можно Использовать


 
Демонов Е.В.   (2002-09-11 13:54) [1]

имел в виду
Property WinControl:TWinControl read FWinControl Write WinControl;

Ну Где Же Вы : Ученик, Старый Паскалист ?



 
Демонов Е.В.   (2002-09-11 14:07) [2]

Кто нибудь ответьте!!!!!!!!!!!!!!!!


 
Старый Паскалист   (2002-09-11 14:07) [3]

Мы кушаем!!!

Используй Loaded:

procedure fff.SetActive(VAlue:Boolean);
begin
if csReading in ComponentState then
FActive := Value;
// откладываем выполнение значащего кода до Loaded;
else
IndeedSetActive(Value);
end;

procedure fff.Loaded; // override;
begin
inherited;
if FActive then IndeedSetActive(True);
//...и может быть, что-нибудь ещё.
end;


 
SEM   (2002-09-11 14:08) [4]

procedure fff.SetActive(VAlue:Boolean);
begin
if assigned(FWinControl) then
begin
if not (csLoading in ComponentState) then
ФункцияWinApi(FWinControl.Handle,......)
fActive:=VAlue;
end
else
fActive:=False;
end;

procedure MyControl.Loaded;
begin
inherited;
if FActive and Assigned(FWinControl) then ФункцияAPI...
end;



 
Демонов Е.В.   (2002-09-11 14:13) [5]

Спасибо, Это уже то что надо!!!!!


 
Lord Warlock   (2002-09-11 14:18) [6]

По-моему, чтобы свойство не сохраняло свое значение в dfm, нужно написать так:

Property Active:Boolean read FActive Write SetActive stored False;


 
Демонов Е.В.   (2002-09-11 14:30) [7]

>>Lord Warlock

Уже в десятый раз говорю, мне нужно чтобы свойство сохранялось в
dfm и что бы свойства потом читались из dfm в некотором порядке, который я хочу.


 
Макс Черных   (2002-09-11 17:01) [8]

>Как мне сделать чтобы сначало читалось свойство WinControl, а >потом Active

Cвойства записываются в dfm, и соответственно потом читаются
именно в том порядке в котором они объявлены.
Так что, достаточно просто поменять местами Active и WinControl:

Property WinControl:TWinControl read FWinControl set FWinControl;
Property Active:Boolean read FActive Write SetActive;


 
Демонов Е.В.   (2002-09-11 18:03) [9]

>>Макс Черных

>>Cвойства записываются в dfm, и соответственно потом читаются
>>именно в том порядке в котором они объявлены.
>>Так что, достаточно просто поменять местами Active и WinControl

Помоему Ты Неправ
Приду Домой, проверю


 
Макс Черных   (2002-09-11 20:54) [10]

>Помоему Ты Неправ
>Приду Домой, проверю

Да тут и проверять то нечего.
1. При записи в dfm TWriter просто перебирает свойства
в том порядке как они объявлены, и записывает.
2. При чтении, сначала читается наименование свойства
потом оно находится через GetPropInfo и ему присваивается
считанное значение.

Это есть азбучная истина, в чем можно убедиться посмотрев
Classes.pas

Хотелось бы обратить внимание вот на что, считается хорошим
стилем писать код так, чтобы работоспособность не зависела
от порядка следования/присвоения свойств. Хотя это удается не всегда. Как то в конференции на Borland в ответ на эту рекомендацию переспросили - а как же тогда быть с:
TTreeView = class(TCustomTreeView)
...
published
...
property OnStartDrag;
{ Items must be published after OnGetImageIndex and OnGetSelectedIndex }
property Items;
end;


Борландовцы ответили - ну, так из каждого правила есть исключения :)



 
vuk   (2002-09-11 20:59) [11]

to Макс Черных:
Добавлю еще, что стоит помнить о свойствах предка...



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2002.09.23;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.007 c
14-73881
VictorT
2002-08-28 17:54
2002.09.23
опять про *.bat файлы


1-73683
гость23
2002-09-10 22:59
2002.09.23
Кубический корень....


1-73721
Степан
2002-09-11 13:20
2002.09.23
Имя компьютера и пользователя


1-73690
eaprit_bel
2002-09-11 02:36
2002.09.23
Инсталятор


3-73481
Bishop
2002-08-30 12:52
2002.09.23
FIB





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский