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

Вниз

Как заставить компонент выглядеть, как невизуальный?   Найти похожие ветки 

 
TStas ©   (2005-09-08 00:27) [0]

Написал компонент, он визуальный, потомок TCustomControl. Другого предка у него быть не может, поскольку он должен быть Parent’ом для других 8 объектов и иметь канву. Он рамочка – resizer. У него одно свойство – объект, размеры которого надо изменять. Создается он невидимым. Вопрос:
Как сделать, если это вообще возможно, чтобы он в designtime’е выглядел, как невизуальный? Просто дизайнер ведь начинает обращаться с ним, как с обычным компонентов, а это нежелательно.


 
jack128 ©   (2005-09-08 01:07) [1]

ИМХО, не в ту сторону капаешь. Я так понимаю, тебя не устраивает, чтот в DesignTime можно изменить размеры и местоположение твоего компонента? Но пойми, если это можно сделать в DT, то так же просто это можно сделать в RT. Причем если IDE ты еще как нить хакнуть можешь(например заставить её не отображать некоторые published свойста в инспекторе объектов) то проконтролировать действия другого программиста, который захочет изменить размеры твоего компонента у тя нет никакой возможности..


 
TStas ©   (2005-09-08 13:40) [2]

>jack128
Может тогда написать совсем невизуальный компонент, у которого имеющийся будет просто свойством? И не создавать имеющийся конструктором сразу, а по мере необходимости? Его центральнтральное и, по замыслу, единиственное свойство - компонент, на который рамка должна натянуться и управлять изменение его размеров.


 
TStas ©   (2005-09-08 14:05) [3]

>jack128
Решил добавить еще одно свойство - ManualResize и установил его по умолчанию true. Теперь при программном изменении размера он все равно выполняет свою функциональность - меняет размер назначенного компонента и не отрывается от него, что и требовалось.

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


 
jack128 ©   (2005-09-08 23:26) [4]

TStas ©   (08.09.05 14:05) [3]
Пока только не удается сделать его прозрачным, почему-то попытка скопировать кусок канвы родителя на нужное место, то есть, чтобы середина выглядела прозрачной никчему не приводит.


флаг WS_EX_TRANSPARENT + F1

TStas ©   (08.09.05 13:40) [2]
Может тогда написать совсем невизуальный компонент, у которого имеющийся будет просто свойством?

Вообще я интересовался в свое время подобной задачей(в несколько более общем варианте, мне нужно было полностью контролировать контрол, а не только его размеры) и вот к чему пришел. Для начала нужно опеределиться с постановкой задачи: ресайзер чего тебе нужен? TControl"а или TWinControl"a ? Во втором случае задача резко упрощается, достаточно поставить локальный хук... а в первом случае перехватить изменения размеров этого контрола можно только реализовав интерфейсы IDesignerNotify, IDesignerHook.. По крайней мере другого способа для НЕ визуального компонента я не нашел.


 
TStas ©   (2005-09-09 15:52) [5]

>jack128
Вообще-то я хотел решить задачу как можно шире. Идея, откуда взялся сам рисайзер такая - сделать настраиваемый бланк вообще, а там приспосабливать его для самых разных целей. В идеале, конечно, можно и только TWinControl"ы растягивать. Понятно, что менять надо не только размеры, но уж другие вещи другими способами.  
Слово "локальный хук" слышал только на форуме, нигде про это не читал, поэтому не знаю даже, что это.



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

Форум: "Компоненты";
Текущий архив: 2006.03.05;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.012 c
2-1140010647
ButtonExplorer
2006-02-15 16:37
2006.03.05
Правильно ли так проверять, создан ли компонент?


2-1140188665
KyRo
2006-02-17 18:04
2006.03.05
TStringList


15-1139563333
Shelezjaka
2006-02-10 12:22
2006.03.05
Где есть хорошие железячные форумы или как узнать что это


15-1139605590
Стыдно
2006-02-11 00:06
2006.03.05
IO Completion Port


10-1114854261
zafar
2005-04-30 13:44
2006.03.05
Как выделить часть или весь документ....





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