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

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.006 c
14-27207
Igor_thief
2002-08-14 17:05
2002.09.09
Скины


14-27197
Malder
2002-08-13 23:44
2002.09.09
Delphi - как оболочка для написаня СУБД


4-27277
Andrey Fomin
2002-07-18 10:44
2002.09.09
Определение правильного Charset


4-27255
Maksim
2002-07-06 12:28
2002.09.09
Универсальный Thread !!!


1-27002
lipskiy
2002-08-27 10:59
2002.09.09
Это у меня глюки, или действительно глюки? (TToolBar и сепаратор)





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