Einzelnen Beitrag anzeigen

Ferber

Registriert seit: 9. Mär 2005
Ort: Wien Umgebung
155 Beiträge
 
Delphi 2006 Architect
 
#10

Re: Zentrale Komponenten Verwaltung?

  Alt 4. Feb 2006, 16:27
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 !
Otto
  Mit Zitat antworten Zitat