Главная страница
    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.01 c
2-1139832537
VikSel
2006-02-13 15:08
2006.03.05
Запуск приложения на других машинах


15-1139408138
DillerXX
2006-02-08 17:15
2006.03.05
Слушайте, срочно нужен загран паспорт, help me ;(


3-1136875648
neat
2006-01-10 09:47
2006.03.05
Дата в DBGrid


2-1140325625
delphi-oracle
2006-02-19 08:07
2006.03.05
Как изменить файл Read-Only?


1-1138624499
tytus
2006-01-30 15:34
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский