Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Создание компонента 
:(
    Опции темы
SerK
Дата 29.12.2009, 13:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 263
Регистрация: 31.3.2007

Репутация: нет
Всего: нет



Добрый день,

создал свой компонент на основе имеджика, нужно сделать так, чтобы на нем была надпись.
Как вариант - думаю динамически создавать лабел, чтобы он помещался на моем компоненте.
Вопрос, как сделать так, чтобы этот лабел перемещался вместе с моим компонентом ?


--------------------
Пусть будет миру хорошо!
PM MAIL   Вверх
sawfish
Дата 29.12.2009, 16:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 150
Регистрация: 30.7.2008
Где: Новосибирск

Репутация: 8
Всего: 8



Имеджика - это TImage?
ИМХО лучше использовать TGraphicControl и в его OnDraw на его канве выводить любые надписи, которые будут (без каких-либо дополнительных усилий) перемещаться вместе с ним.
PM MAIL   Вверх
SerK
Дата 29.12.2009, 20:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 263
Регистрация: 31.3.2007

Репутация: нет
Всего: нет



sawfish,

я ставил цель перед собою, чтобы можно было загружать рисунки любых форматов, поэтому Image подходит лучше всех, а TGraphicControl может работать только с битмапами. Нет, конечно, можно все форматы преобразовать к bmp, но тогда овчинка выделки не стоит, нужно создавать компонент аналогичный Image. А так класc TPicture в Image с этим отлично справляется.
Я тут покопался в интернете и нашел делфийский код на эту тему, да не могу его перевести.

Код

procedure TLabelEdit.WMMove(var Msg: TWMMove);

begin
  inherited;

  { заставляем TLabel 'прилипнуть' к верху TEdit }
  if FLabel <> nil then
    with FLabel do
      SetBounds(Msg.XPos, Msg.YPos - Height, Width, Height);
end;



Как перевести inherited;?


--------------------
Пусть будет миру хорошо!
PM MAIL   Вверх
artsb
Дата 29.12.2009, 20:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2280
Регистрация: 17.7.2007
Где: центр Вселенной

Репутация: 39
Всего: 64



Цитата(SerK @  29.12.2009,  20:21 Найти цитируемый пост)
Как перевести inherited;? 

Это вроде вызов стандартного обработчика события.

Добавлено через 2 минуты и 12 секунд
Т.е. получается, сдвигаем сам компонент, а потом тащим то что нужно:
Код

  if(FLabel)
    FLabel->SetBounds(Msg->XPos, Msg->YPos - Height, Width, Height);


Добавлено через 4 минуты и 53 секунды
Про inherited.


--------------------
Чем отличается умный человек от мудрого?
Умный - выпутается из любой ситуации.
Мудрый - просто в неё не попадёт.
PM MAIL   Вверх
SerK
Дата 29.12.2009, 21:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 263
Регистрация: 31.3.2007

Репутация: нет
Всего: нет



artsb,
спасибо, пол проблемы решено.

Про  inherited:

Там написано:  TForm::Dispatch(&Message);, но ведь компонент еще не на форме, поэтому TForm здесь не уместно. Как быть? Может просто - Dispatch(&Message)?

Перевод хелпа функции  Dispatch:
Вызывает управляющие методы сообщения для объектов, которые базируются на содержимом параметра Message. То есть это родительский метод?


--------------------
Пусть будет миру хорошо!
PM MAIL   Вверх
artsb
Дата 29.12.2009, 21:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2280
Регистрация: 17.7.2007
Где: центр Вселенной

Репутация: 39
Всего: 64



Цитата(SerK @  29.12.2009,  21:24 Найти цитируемый пост)
То есть это родительский метод? 

Ага.
Может попробовать:
Код

TImage::Dispatch(&Message);



--------------------
Чем отличается умный человек от мудрого?
Умный - выпутается из любой ситуации.
Мудрый - просто в неё не попадёт.
PM MAIL   Вверх
SerK
Дата 30.12.2009, 00:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 263
Регистрация: 31.3.2007

Репутация: нет
Всего: нет



artsb,
попробую, спасибо.


--------------------
Пусть будет миру хорошо!
PM MAIL   Вверх
SerK
Дата 3.1.2010, 10:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 263
Регистрация: 31.3.2007

Репутация: нет
Всего: нет



WMMove(var Msg: TWMMove) работает только для оконных компонентов, поэтому мой вариант не подходит. Нужно за основу брать TCustomControl.


--------------------
Пусть будет миру хорошо!
PM MAIL   Вверх
artsb
Дата 3.1.2010, 17:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2280
Регистрация: 17.7.2007
Где: центр Вселенной

Репутация: 39
Всего: 64



Ну вы же обрабатываете это событие у своего компонента, а метку просто тащите за собой. Или я что-то не так понял...


--------------------
Чем отличается умный человек от мудрого?
Умный - выпутается из любой ситуации.
Мудрый - просто в неё не попадёт.
PM MAIL   Вверх
SerK
Дата 16.1.2010, 03:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 263
Регистрация: 31.3.2007

Репутация: нет
Всего: нет



artsb,
Проблема в том, что метка закрывает собою оконный компонент (родителя), на котором находится, поэтому не знаю как обработать сообщеня мыши.


--------------------
Пусть будет миру хорошо!
PM MAIL   Вверх
artsb
Дата 16.1.2010, 12:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2280
Регистрация: 17.7.2007
Где: центр Вселенной

Репутация: 39
Всего: 64



Не знаю конечно... Но что если при создании метки, назначать её родителем не ваш компонент, а родителя вашего компонента (т.е. myLabel->Parent = this->Parent)? Тогда метка будет за пределами вашего компоненте, но вы сможете ей управлять. Сам я этого не проверял smile Но теоретически, должно работать. Если попробуете, отпишитесь потом.


--------------------
Чем отличается умный человек от мудрого?
Умный - выпутается из любой ситуации.
Мудрый - просто в неё не попадёт.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0496 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.