Форум: "Компоненты";
Текущий архив: 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