Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.09.09;
Скачать: CL | DM;

Вниз

Невизуальный компонент   Найти похожие ветки 

 
Oleg_Gashev ©   (2002-08-28 01:14) [0]

Здравствуйте!

Создаю невизуальный компонент. На execute компонент должен вывести диалог. Для расположения диалога создал property Left и Top. Появилась интерестная деталь. Когда я бросаю на форму этот компонент и изменяю значения Left и Top, ярлык компонента двигается по форме в design time в зависимости от значений Left и Top. Вот и возник вопрос, как избавиться от этого эффекта.

С уважением, Олег.


 
Юрий Зотов ©   (2002-08-28 09:52) [1]

Все правильно. Вы меняете кординаты самого компонента - вот он и двигается. А надо менять не их, а координаты диалогового окна, которое компонент должен динамически создать, показать и убить в своем Execute.

Left и Top не нужно трогать. Это неявные свойства TComponent и невизуальным компонентам они необходимы для поддержки design-time. Создайте свойства с другими именами и завяжите их на координаты окна, а не компонента.


 
MrBeer ©   (2002-08-28 20:30) [2]

> Юрий Зотов

otvet ochevidnii, pravda otvet na vopros eto ne dayot.


 
Старый паскалист   (2002-08-28 20:51) [3]

Переименуй св-ва в
DialogLeft и DialogRight
(или как нибудь ещё)


 
MrBeer ©   (2002-08-28 21:17) [4]

>Старый паскалист
vopros bil kak izbavitsja ot effekta a ne naiti obhodnoi put".


 
vuk ©   (2002-08-28 21:42) [5]

Путь не обходной, а правильный.


 
Oleg_Gashev ©   (2002-08-28 21:53) [6]

Найти обходной путь не проблема. Достаточно добавить два метода: SetPosition, GetPosition. Проблема стала выглядеть интерестнее, когда я предопределил property Left и Top. Они работают с property Left и Top самой формы, которая должна выскачить на Execute. Эффект все равно был. Просто не понятно почему Delphi добавляет в мой обработчик свой код. Я ведь переопределяю свойства. Не логично вроде.


 
vuk ©   (2002-08-28 22:03) [7]

Delphi "свой" код никуда не добавляет. У TComponent в методе DefineProperties определяются два "виртуальных" свойства, которые нужны для того, чтобы у невизуального компонента сохранялось его положение на форме. В файл формы они пишутся как Left и Top, а загружаются в свойство DesignInfo. В Вашем случае получается следующее: вы объявляете(явно) два свойства и их значения нормально читаются(насколько я понял), но при этом они также влияют на значение DesignInfo.


 
Набережных С.   (2002-08-28 22:14) [8]

Что-то не верится.


 
Oleg_Gashev ©   (2002-08-28 22:18) [9]

Спасибо всем. Ветку считаю закрытой.



 
Юрий Зотов ©   (2002-08-29 01:07) [10]

> MrBeer
Так "cоздайте свойства с другими именами" - это ответ на вопрос "kak izbavitsja ot effekta", или нет? А фраза "это неявные свойства TComponent" объясняет причину, или нет?


> pravda otvet na vopros eto ne dayot
Смотря кому.


> Набережных С. (28.08.02 22:14)
> Что-то не верится.
И не надо верить. Надо проверить. Можно посмотреть исходники TComponent и все станет ясно. Еще способ - бросить на форму любой невизуальный компонент, просмотреть форму в виде текста и убедиться в том, что у этого компонента сохраняются свойства Left и Top, хотя их, вроде бы, у компонента нет. Это и есть работа DefineProperties по сохранению этих двух неявных свойств. Открыв форму на следующий день, мы увидим компонент на прежнем месте - вот зачем это нужно.


 
Набережных С.   (2002-08-29 14:17) [11]


> Юрий Зотов © (29.08.02 01:07)

Мой пост относился к Oleg_Gashev © (28.08.02 21:53),
конкретно к замечанию "Я ведь переопределяю свойства." Приношу извинения за допущенную неоднозначность.
А что касаемо DefineProperties, то, перечитав еще раз Oleg_Gashev © (28.08.02 01:14), можно заметить, что к вопросу этот метод не имеет ни малейшего отношения:
"Когда я бросаю на форму этот компонент и изменяю значения Left и Top, ярлык компонента двигается по форме в design time в зависимости от значений Left и Top. "
По поводу-же сохранения Left и Top в DFM - спасибо, но я в курсе :).



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

Текущий архив: 2002.09.09;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.01 c
3-26858
Igr
2002-08-19 11:12
2002.09.09
Sql и независимость от регистра символов


14-27225
grinn
2002-08-14 19:58
2002.09.09
Delphi и dll


1-27083
Ahmad
2002-08-28 01:33
2002.09.09
Мастера! Помогите!


14-27155
msalex
2002-08-12 22:02
2002.09.09
Мастера Delphi: Анкета.


1-27018
SergeyKnyazev
2002-08-29 12:03
2002.09.09
Как в RBuildere или другом отчете добавить линии под углом.