Главная страница
    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
15-1139495181
BFG9k
2006-02-09 17:26
2006.03.05
Проблемы с удаленной отладкой


15-1139377858
БарЛог
2006-02-08 08:50
2006.03.05
Вот все хотят, чтоб "наши дети жили лучше чем мы"


15-1139678202
Ученик чародея
2006-02-11 20:16
2006.03.05
Как разрядить бумагу, после ее печати на лазерном принтере?


2-1139933356
Yeg
2006-02-14 19:09
2006.03.05
БД для Интернета


4-1134610489
sergey1
2005-12-15 04:34
2006.03.05
почему моя программа нехочет работать нормально 3-я часть





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