Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

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


Шустрый
*


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

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



Подскажите пожалуйста из-за чего может быть такой глюк (или не глюк вовсе). Я объявляю два класса от TCustomControl. Один содержит в себе другой. TMapCanvas я регистрирую и добавляю его как компонент на форму. А TMapScreen  создается на TMapCanvas динамически.
Код

TMapScreen = class(TCustomControl)
  public
    constructor Create(AOwner:TComponent); override;
  protected
    procedure Paint; override;
  end;

TMapCanvas = class(TCustomControl)
  private
    FScreen : TMapScreen;
  public
    constructor Create(AOwner:TComponent); override;
    ...
  protected
    procedure Paint; override;
  published
    // -- Видимые свойства --
    property Align;
    property Visible;
    property Enabled;
    ...
  end;


Так вот чтобы прорисовался динамически создаваемый компонент не достаточно в конструкторе задать его размеры и точку прорисовки, а приходится, например, в paint вызывать такую же фигню ещё раз
Код

constructor TMapCanvas.Create(AOwner:TComponent);
begin
  inherited Create(AOwner);
  FScreen := TMapScreen.Create(Self);
  FScreen.Parent := Self;
  FScreen.Left := 0;
  FScreen.Top := 0;
  FScreen.Width := Width - VScrollWidth;
  FScreen.Height := Height - HScrollHeight;
  FScreen.Visible := True;
end;

procedure TMapCanvas.Paint;
begin
  FScreen.Left := 0;
  FScreen.Top := 0;
  FScreen.Width := Width - VScrollWidth;
  FScreen.Height := Height - HScrollHeight;
end;


А в TMapScreen не происходит ничего особенного только закрашивание одним фоном, а в конструкторе настраивается цвет заливки и все)))
Код

procedure TMapScreen.Paint;
begin
  Canvas.FillRect(Rect(0,0,Width,Height));
end;


Почему не достаточно задать габариты в конструкторе???
PM MAIL   Вверх
bems
Дата 26.12.2007, 18:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 3400
Регистрация: 5.1.2006

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



в AfterConstruction делай


--------------------
Обижено школьников: 8
PM MAIL   Вверх
mhalion
Дата 26.12.2007, 19:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Ещё такой вопрос:
Есть ли событие которое наступает после изменения размера, т.е. после того как пользователь перетащил мышь и от пустил кнопку, т.к. OnResize не подходит из-за того что он происходит до фактического изменения размеров окна???
PM MAIL   Вверх
ivan219
  Дата 26.12.2007, 19:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1121
Регистрация: 19.11.2005
Где: Планета земля

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



Paint; для того и сущёствует чтобы внём рисовать а в Сreate ты не рисуешь а только создаёшь заготовку с ночальными пораметрами.
Цитата(mhalion @  26.12.2007,  19:11 Найти цитируемый пост)
OnResize не подходит

 smile разве???
Ну тогда пройдись по классам предков smile и там найдёш ответ с одноимённым методом Resize smile да и вобще если что нужно сночало поищи в исходниках VCL там много чего есть.
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

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

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

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

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


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

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


 




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


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

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