Акжан в сети - На уровень вверх(VCL) Как рисовать на органе управления, например, на TPanel?

У всех компонентов, порожденных от TCustomControl, имеется свойство Canvas типа TCanvas.

Грубо говоря, это аналог TDC из OWL. Те операции, которые нельзя выполнить с помощью методов TCanvas, можно выполнить с помощью WinAPI. Для этого у обьектов класса TCanvas имеется свойство Handle - это и есть Хэндл Дисплейного Контекста ОС Windows (HDC), который необходим графическим функциям WinAPI.

Если свойство Canvas недоступно, Вы можете достучаться до него созданием потомка и переносом этого свойства в раздел Public.

{ Example. We recommend You to create this component through Component Wizard.
  In Delphi 1 it can be found as 'File|New Component...', and can be found
  as 'Component|New Component...' in Delphi 2 or above. }
type
  TcPanel = class(TPanel)
  public
    property Canvas;
  end;

Akzhan Abdulin


У меня есть маленькое замечание.

Если у объекта нет свойства CanvasTDBEdit вpоде-бы нет), то, по кpайней меpе в D3, можно использовать класс TControlCanvas. Пpимеpное использование:

var
  cc: TControlCanvas;
...
  cc := TControlCanvas.Create;
  cc.Control := yourControl;
...

и далее как обычно можно использовать методы Canvas.

Andrew Velikoredchanin

(2:5026/29.3)