Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
Delphi 12 Athens
|
AW: Verschiedene Controls an Procedur übergeben
27. Okt 2011, 12:09
Du musst wohl dafür sorgen, dass die gesuchte Property published ist, das ist der Nachteil (zumindest in Delphi < 2010) dabei. Ein Test mit Delphi 2007:
Delphi-Quellcode:
type
TLabel = class(StdCtrls.TLabel)
published
property Canvas;
end;
TPanel = class(ExtCtrls.TPanel)
published
property Canvas;
end;
TForm8 = class(TForm)
Label1: TLabel;
Button1: TButton;
Panel1: TPanel;
Button2: TButton;
...
uses TypInfo;
function CompHasProp(AClass : TObject; PropName: string): Boolean;
var
MyPropInfo: PPropInfo;
begin
MyPropInfo := GetPropInfo(AClass.ClassInfo, PropName);
Result := Assigned(MyPropInfo);
end;
procedure DrawOnCanvas(Control: TControl);
var
aCanvas: TCanvas;
begin
if CompHasProp(Control, 'Canvas') then
begin
aCanvas := GetObjectProp(Control, 'Canvas') as TCanvas;
if Assigned(aCanvas) then
begin
aCanvas.Brush.Color := clRed;
aCanvas.FillRect(Rect(0, 0, Control.Width, Control.Height));
end;
end;
end;
procedure TForm8.Button1Click(Sender: TObject);
begin
DrawOnCanvas(Label1);
end;
procedure TForm8.Button2Click(Sender: TObject);
begin
DrawOnCanvas(Panel1);
end;
Detlef "Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
|