| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C++ Builder > Создание компонента |
| Автор: SerK 29.12.2009, 13:15 |
| Добрый день, создал свой компонент на основе имеджика, нужно сделать так, чтобы на нем была надпись. Как вариант - думаю динамически создавать лабел, чтобы он помещался на моем компоненте. Вопрос, как сделать так, чтобы этот лабел перемещался вместе с моим компонентом ? |
| Автор: sawfish 29.12.2009, 16:27 |
| Имеджика - это TImage? ИМХО лучше использовать TGraphicControl и в его OnDraw на его канве выводить любые надписи, которые будут (без каких-либо дополнительных усилий) перемещаться вместе с ним. |
| Автор: SerK 29.12.2009, 20:21 | ||
| sawfish, я ставил цель перед собою, чтобы можно было загружать рисунки любых форматов, поэтому Image подходит лучше всех, а TGraphicControl может работать только с битмапами. Нет, конечно, можно все форматы преобразовать к bmp, но тогда овчинка выделки не стоит, нужно создавать компонент аналогичный Image. А так класc TPicture в Image с этим отлично справляется. Я тут покопался в интернете и нашел делфийский код на эту тему, да не могу его перевести.
Как перевести inherited;? |
| Автор: artsb 29.12.2009, 20:29 | ||
Это вроде вызов стандартного обработчика события. Добавлено через 2 минуты и 12 секунд Т.е. получается, сдвигаем сам компонент, а потом тащим то что нужно:
Добавлено через 4 минуты и 53 секунды http://cppbuilder.ru/articles/0100.php |
| Автор: SerK 29.12.2009, 21:24 |
| artsb, спасибо, пол проблемы решено. Про inherited: Там написано: TForm::Dispatch(&Message);, но ведь компонент еще не на форме, поэтому TForm здесь не уместно. Как быть? Может просто - Dispatch(&Message)? Перевод хелпа функции Dispatch: Вызывает управляющие методы сообщения для объектов, которые базируются на содержимом параметра Message. То есть это родительский метод? |
| Автор: artsb 29.12.2009, 21:55 | ||
Ага. Может попробовать:
|
| Автор: SerK 30.12.2009, 00:13 |
| artsb, попробую, спасибо. |
| Автор: SerK 3.1.2010, 10:34 |
| WMMove(var Msg: TWMMove) работает только для оконных компонентов, поэтому мой вариант не подходит. Нужно за основу брать TCustomControl. |
| Автор: artsb 3.1.2010, 17:28 |
| Ну вы же обрабатываете это событие у своего компонента, а метку просто тащите за собой. Или я что-то не так понял... |
| Автор: SerK 16.1.2010, 03:33 |
| artsb, Проблема в том, что метка закрывает собою оконный компонент (родителя), на котором находится, поэтому не знаю как обработать сообщеня мыши. |
| Автор: artsb 16.1.2010, 12:14 |
| Не знаю конечно... Но что если при создании метки, назначать её родителем не ваш компонент, а родителя вашего компонента (т.е. myLabel->Parent = this->Parent)? Тогда метка будет за пределами вашего компоненте, но вы сможете ей управлять. Сам я этого не проверял |