Главная страница
    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
3-73571
bib
2002-09-02 18:49
2002.09.23
Помогите?


3-73526
denimas
2002-09-02 08:26
2002.09.23
Месяц


1-73699
ResTec
2002-09-11 05:38
2002.09.23
Ка создать прозрачного родителя?


3-73566
Starter2
2002-09-03 14:56
2002.09.23
BDE + BCD поля


1-73615
@Ujin
2002-09-12 11:52
2002.09.23
C: TMetafileCanvas - как бы его грамотно масштабировать...





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский