Comandant,
Cita:
Empezado por Comandant
Como puedo obtener las propiedas de un objeto por ej. un panel en donde se despliege mi popmenu
|
Las propiedades de un objeto pueden ser obtenidas y modificadas en Runtime por medio de
RTTI (Run-Time Type Information)
Revisa este código:
Código Delphi
[-]
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, TypInfo, Grids;
type
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Memo1: TMemo;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
BitBtn3: TBitBtn;
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure ActiveControlChanged(Sender: TObject);
private
public
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.ActiveControlChanged(Sender: TObject);
var
PropInfo: PPropInfo;
i: Integer;
begin
for i := 0 to ControlCount - 1 do
begin
if TWinControl(Controls[i]).Focused then
begin
PropInfo := GetPropInfo(Self.Controls[i].ClassInfo,'Color');
if Assigned(PropInfo) then
SetOrdProp(Controls[i], PropInfo, ord(clYellow));
end
else
begin
PropInfo := GetPropInfo(Self.Controls[i].ClassInfo,'Color');
if Assigned(PropInfo) then
SetOrdProp(Controls[i], PropInfo, ord(clWindow));
end;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Screen.OnActiveControlChange := ActiveControlChanged;
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
Screen.OnActiveControlChange := nil;
end;
end.
El código anterior cambia en Runtime el color del componente activo que tenga definida la propiedad
Color.
Revisa estos links:
Espero sea útil
Nelson.