Вниз
Скачать: CL | DM;

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

← →
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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.024 c
15-1139605590
Стыдно
2006-02-11 00:06
2006.03.05
IO Completion Port


15-1139641505
Интересующийся
2006-02-11 10:05
2006.03.05
Архив форума за 2004


2-1138816063
Дмитрий_177
2006-02-01 20:47
2006.03.05
Компоненты на api (или еще как-нибудь)


10-1115098982
zafar
2005-05-03 09:43
2006.03.05
Помогите с OLE !!!!


2-1139979251
Risk
2006-02-15 07:54
2006.03.05
Глюк ADODataSet




   Наверх