• 15 апреля стартует «Курс «SQL-injection Master» ©» от команды The Codeby

    За 3 месяца вы пройдете путь от начальных навыков работы с SQL-запросами к базам данных до продвинутых техник. Научитесь находить уязвимости связанные с базами данных, и внедрять произвольный SQL-код в уязвимые приложения.

    На последнюю неделю приходится экзамен, где нужно будет показать свои навыки, взломав ряд уязвимых учебных сайтов, и добыть флаги. Успешно сдавшие экзамен получат сертификат.

    Запись на курс до 25 апреля. Получить промодоступ ...

Передача канваса формы компоненту

  • Автор темы Dock1100
  • Дата начала
D

Dock1100

Пишу компонент, он должен рисовать на своем и чужом канвасе. Так вот как компоненту передать чужой Canvas компоненту?
 
E

etc

Вы больше про компонент расскажите. По ним DimaBr специалист, правда он лет семь тут не появлялся, но если вдруг его заинтересует, он подскажет как правильно.
 
E

etc

Правильнее, скорее всего, это через свойство(а) делать. Пусть пользователь сам укажет где чего рисовать.
 
D

Dock1100

Правильнее, скорее всего, это через свойство(а) делать. Пусть пользователь сам укажет где чего рисовать.
Это понятно, но как прописать само свойство?
Код:
property OtherCanvas: TCanvas read fothercanvsa write fothercanvas;
Выдаст ошибку поскоку Canvas only read
Пробовал вместо кавас Handle использовать но не рисует
 
E

etc

На сколько я понимаю, тут нужен редактор свойства. И в нем показываете все контролы, на которых можно рисовать, т.е. есть канва.
Человек просто выбирает тот который нужен, и в свойство прописывается имя того того контрола.
Ну а при рисовании по имени определять контрол и его канву.

примерно так, ... может чего можно и по хитрее

Добавлено: Если вы делаете компонент, то это подразумевает что его свойства можно редактировать и в дизайн-тайм. Можно конечно и нет...
 
D

Dock1100

ТАДА!:
Код:
fdc := GetWindowDC(FOtherWindow); //FOtherWindow - Handle нужного окна(не канвы)
bitblt(fdc,50,50,width,height,fbmp_draw.Canvas.Handle,0,0,srccopy);
ReleaseDC(fotherWindow, fdc);
 
E

EdgarWine

Канва (Canvas) - это VCL-ская обёртка просто... =\\

Form1.Handle - это HWND окна
Form1.Canvas.Handle - это HDC окна
fdc:=GetDC(Form1.Handle) - тоже самое что и Form1.Canvas.Handle...
fdc:=GetWindowDC(Form1.Handle) - примерно тоже самое что и Form1.Canvas.Handle, только включая рамку окна...

И не надо делать GetDC лишний раз... Просто помнить старый, а при изменении переполучать его...
Ну а перед рисованием проверять существование его...
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!