Hi Tau !
IMHO wäre es sinnvoll du würdest dir Komponenten ableiten, den Constructor überschreiben,
und dort die nötigen Eigenschaften einstellen.
Das was du dir wünschst sieht etwa so aus.
Delphi-Quellcode:
unit MasterCompo;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TMasterComponent =
class(TComponent)
private
FMasterEdit:TEdit;
procedure SetMasterEdit(
const Value: TEdit);
protected
procedure Notification(AComponent: TComponent; Operation: TOperation);
override;
public
procedure UpdateComponents(Parent:TComponent);
published
property MasterEdit:TEdit
read FMasterEdit
write SetMasterEdit;
end;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents('
MyCtrls', [TMasterComponent]);
end;
{ TMasterComponent }
procedure TMasterComponent.Notification(AComponent: TComponent; Operation: TOperation);
begin
inherited;
if (Operation = opRemove)
then
if (AComponent = FMasterEdit)
then
FMasterEdit :=
nil;
end;
procedure TMasterComponent.SetMasterEdit(
const Value: TEdit);
begin
if Value=FMasterEdit
then exit;
FMasterEdit := Value;
UpdateComponents(Owner);
// nur in diesem Formular
// UpdateComponents(Application) // in der ganzen Anwendung
end;
procedure TMasterComponent.UpdateComponents(Parent:TComponent);
var i:Integer; Compo:TComponent;
// Compo:TComponent - nur wegen der Rekursion / Compo:TEdit - keine Rekursion möglich
begin
if FMasterEdit=nil
then exit;
for i:=0
to Parent.ComponentCount-1
do
begin
Compo:=Parent.Components[i];
if Compo
is TEdit
then
if Compo<>FMasterEdit
then
begin
TEdit(Compo).Color:=FMasterEdit.Color;
// ... hier gewünschte Eigenschaften kopieren - Bitte nicht den Namen :mrgreen:
end;
if Compo.ComponentCount>0
then // rekursion
UpdateComponents(Compo);
end;
end;
end.
Ist blos ein Beispiel für TEdit und die Eigenschaft Color.
Wichtig beim Bezug auf andere Komponenten ist
Notification !!!
PS: Schade dass die
s nicht im Quellcode funzen !