Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 08.08.2014, 09:45   #1
avd
Пользователь
 
Регистрация: 06.06.2010
Сообщений: 79
По умолчанию Класс TGraphicControl

Здравствуйте!
Можно ли сделать что-то подобное:

Код:
TElips = class(TGraphicControl)
public
  procedure Paint; override;
  constructor Create(AOwner: TComponent); override;
end;

constructor TElips.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  Width := 16;
  Height := 16;
  Top := 20;
  Left := 20;
  Visible := true;
end;

procedure TElips.Paint;
var
  R: TRect;
begin
  Canvas.Brush.Color := clRed;
  R := ClientRect;
  Canvas.Ellipse(R.Left, R.Top, R.Right, R.Bottom);
end;

procedure TForm1.FormActivate(Sender: TObject);
var
  Elips: TElips;
begin
  Elips := TElips.Create(self); // self - ??? или что ???
  Elips.Paint;
end;
Другими словами заинтересовал такой вопрос - можно ли вывести на форму визуальный компонент (например PaintBox) программным способом.
avd вне форума Ответить с цитированием
Старый 08.08.2014, 09:54   #2
StriderX
Форумчанин
 
Регистрация: 21.04.2014
Сообщений: 115
По умолчанию

Цитата:
Сообщение от avd Посмотреть сообщение
Здравствуйте!
Можно ли сделать что-то подобное:
...
Другими словами заинтересовал такой вопрос - можно ли вывести на форму визуальный компонент (например PaintBox) программным способом.
Ммм... если верно понял вопрос, то очень сильно будет зависеть от реализации этого компонента. Сама идеология винды подразумевает не рисовать лишнего, поэтому если компонента нет на экране, то он нигде и не рисовался => не с чего "снять изображение" для "программной отрисовки". Дальше начинаются пляски с WM_PRINT\WM_PRINTCLIENT и т.п.
Если компонент на экране есть и он не оверлейный, то можно его отобрать стандартным блиттингом.
PS: ну и бесконечно создавать объекты при активации формы - не лучшее решение.

Последний раз редактировалось StriderX; 08.08.2014 в 09:55. Причина: оверквотинг
StriderX вне форума Ответить с цитированием
Старый 08.08.2014, 12:07   #3
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,542
По умолчанию

Цитата:
Другими словами заинтересовал такой вопрос - можно ли вывести на форму визуальный компонент (например PaintBox) программным способом.
отрисовкой "ведает" TControl.Parent: TWinControl
Create(owner: TComponent) [собственник/хозяин] отвечает за управление временем жизни. При разрушении собственника все его дети также будут автоматически(без участия программиста!) разрушены.

Код:
 Elips := TElips.Create(self); 
 Elips.Parent:=self;
 Elips.Parent:=self.Panel2;
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Cоздать класс жидкость. определить конструкторы деструкторы и функцию печати. создать публик производный класс. (С++) Динар Габбасов Помощь студентам 0 28.05.2012 18:44
Добавить класс в проект2,похожий на класс из проекта1!оба проекта есть! xeops C# (си шарп) 0 15.05.2012 20:31
Класс запускает поток, который заполняет этот класс. Обмен класс <=> поток. Человек_Борща Общие вопросы Delphi 8 27.02.2012 23:24
Компонент график функции y=ax² в качестве исходного класса выбрать класс TGraphicControl Veterok0587 Фриланс 4 21.06.2010 16:18
Как повернуть изображение в TGraphicControl на 180 градусов? NeonSimfi Win Api 1 06.05.2009 21:20