AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Zentrale Komponenten Verwaltung?

Ein Thema von Tau · begonnen am 2. Feb 2006 · letzter Beitrag vom 6. Feb 2006
Antwort Antwort
Seite 1 von 2  1 2      
Tau

Registriert seit: 17. Mär 2003
Ort: Bludenz
221 Beiträge
 
Delphi 7 Enterprise
 
#1

Zentrale Komponenten Verwaltung?

  Alt 2. Feb 2006, 23:12
Hallo Leute

Würde auch mal wieder etwas Hilfe brauchen.

Ich versuche gerade wieder einmal eine Komponente mit folgenden Ansprüchen zu erstellen.

Ich habe einen menge Komponenten die immer den Selben Eigenschaften haben. Für diesen fall möchte ich
eine Komponente schreiben. Die mir die Eigenschaften der Komponente verwaltet. Eine Komponente die egal
ob die Komponente auf einen Form oder Datenmodul oder auf einen Frame liegt. So auf die art einer
Zentralen Verwaltung der einzelnen Komponenten sein ( nur TEdit ) oder ( nur TPanel z.B. ).
Es geht mir nicht darum wie ich die einzelnen Eigenschaften Erstellen muss, sondern wie ich eine
Verbindung z.B. zu allen TEdit herstellen kann um die Eigenschaften zu Ändern sei’s jetzt
in Designtime als auch zur Laufzeit im Programm.

Währe sehr froh wenn mir da jemand, ein bar hilfreiche Tipps oder Anregungen geben könnte.

Oder gibt es da schon irgendeine Thema darüber zum nachlesen?

Tau
http://www.quad-offroad.com
wer kämpft kann verlieren aber wer nicht kämpft hat verloren
( Delphi 7 )
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.197 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: Zentrale Komponenten Verwaltung?

  Alt 3. Feb 2006, 08:10
ElPack -> Style Manager
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
r2c2

Registriert seit: 9. Mai 2005
Ort: Nordbaden
925 Beiträge
 
#3

Re: Zentrale Komponenten Verwaltung?

  Alt 3. Feb 2006, 08:59
Hallo Tau
guck dir mal Delphi-Referenz durchsuchenFindComponent, [oh]Components[][/oh] und [oh]Controls[][/oh] an...

mfg

Christian
Kaum macht man's richtig, schon klappts!
  Mit Zitat antworten Zitat
Tau

Registriert seit: 17. Mär 2003
Ort: Bludenz
221 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: Zentrale Komponenten Verwaltung?

  Alt 3. Feb 2006, 15:31
Hallo Leute

@Bernhard
ich möchte eine eigene Komponente erstellen und keine Kaufen.

@Christian
Zur Laufzeit suchen und ändern ist nicht das Problem.

Ich möchte zu einer Komponente Eigenschaften hinzufügen so auf
die art wie z.B. Font mit einigen Eigenschaften.

Hab schon einiges ausprobiert aber leider mit mäßigen erfolg.

Tau
http://www.quad-offroad.com
wer kämpft kann verlieren aber wer nicht kämpft hat verloren
( Delphi 7 )
  Mit Zitat antworten Zitat
r2c2

Registriert seit: 9. Mai 2005
Ort: Nordbaden
925 Beiträge
 
#5

Re: Zentrale Komponenten Verwaltung?

  Alt 3. Feb 2006, 17:28
Zitat von Tau:
Ich möchte zu einer Komponente Eigenschaften hinzufügen so auf
die art wie z.B. Font mit einigen Eigenschaften.
Ich bin mir noch nicht ganz sicher wo dein Problem liegt. Ich schreib einfach mal waas zu allen Möglichkeiten:
1.) Du willst ne Komponente mit Eigenschaften und "Untereigenschaften" --> ne Klasse als property nehmen
2.) Du willst solche Eigenschaften zuweisen --> Delphi-Referenz durchsuchenAssign
3.) Du willst überprüfen, welche Eigenschaften eine Klasse hat --> Delphi-Referenz durchsuchenRTTI
4.) Du willst ner vorhandenen Komponente ne neue Eigenschaft verpassen --> neue Kompunente ableiten
5.) ... ...

Ich rate mal es war Punkt 3, oder? Wenn ich das, was du meinst, gar nicht aufgeführt habe, musst du dein Problem noch etwas genauer und... eindeutiger beschreiben. Dann muss ich auch keine Fallunterscheidungen mehr machen...

mfg

Christian
Kaum macht man's richtig, schon klappts!
  Mit Zitat antworten Zitat
Tau

Registriert seit: 17. Mär 2003
Ort: Bludenz
221 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: Zentrale Komponenten Verwaltung?

  Alt 3. Feb 2006, 21:57
Hallo Leute

@Christian
Danke für die Anregungen.

Habe etwas rumgebastelt währe froh wenn mir jemand
erklären könnte wo ich meinem Fehler habe. Bin, was
Komponenten Entwicklung anbelangt quasi ein Neuling.

Habe ein kleines Demo beigefügt.

Tau
Angehängte Dateien
Dateityp: zip demo_komponenten_213.zip (4,0 KB, 15x aufgerufen)
http://www.quad-offroad.com
wer kämpft kann verlieren aber wer nicht kämpft hat verloren
( Delphi 7 )
  Mit Zitat antworten Zitat
r2c2

Registriert seit: 9. Mai 2005
Ort: Nordbaden
925 Beiträge
 
#7

Re: Zentrale Komponenten Verwaltung?

  Alt 4. Feb 2006, 10:06
Zitat:
Habe etwas rumgebastelt währe froh wenn mir jemand
erklären könnte wo ich meinem Fehler habe.
Tut mir Leid, aber meine Glaskugel ist etwas eingerostet... *Glaskugel putzt* ...hm......äh... ich glaub, da musst du mir helfen. Ich kann seinbar nur im Dunkeln hellsehen...

Also jetzt mal im Ernst: Wenn du uns sagst, wo dein Problem genau liegt und dieses auch so beschreibst, dass wir uns was darunter vorstellen können, helfen wir gerne. Ohne einen Anhaltspunkt wird das aber schwierig...

mfg

Christian
Kaum macht man's richtig, schon klappts!
  Mit Zitat antworten Zitat
Tau

Registriert seit: 17. Mär 2003
Ort: Bludenz
221 Beiträge
 
Delphi 7 Enterprise
 
#8

Re: Zentrale Komponenten Verwaltung?

  Alt 4. Feb 2006, 12:14
Hallo Christian

ich bekomme eine Abstrakten Fehler wenn ich die Komponente TDemoControll Lösche (Designtime)
und sie ist noch mit der TDemoAdoQuery verbunden.

Tau
http://www.quad-offroad.com
wer kämpft kann verlieren aber wer nicht kämpft hat verloren
( Delphi 7 )
  Mit Zitat antworten Zitat
r2c2

Registriert seit: 9. Mai 2005
Ort: Nordbaden
925 Beiträge
 
#9

Re: Zentrale Komponenten Verwaltung?

  Alt 4. Feb 2006, 14:54
Zitat:
ich bekomme eine Abstrakten Fehler wenn ich die Komponente TDemoControll Lösche (Designtime)
und sie ist noch mit der TDemoAdoQuery verbunden.
Ah! Jetzt wird das ganze doch etwas klarer... Jetzt mal ehrlich: Guck dir mal deinen ersten Post an und sag mir, ob irgendjemand außer dir auch nur den Hauch einer Chance haben konnte, zu verstehen, was dein Problem ist...

Ich hoffe nun - d.h. ich weiß es immer noch nicht 100%ig - herausgefunden zu haben, wo das Problem liegt:
Delphi-Quellcode:
  published
    property LookControll: TcwDemoControl read FLookControll write FLookControll;{1}
    { Published-Deklarationen }
  end;
...
constructor TcwDemoADOQuery.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);

  FLookControll := TcwDemoControl.Create(Self);{2}
end;
...
destructor TcwDemoADOQuery.Destroy;
begin
// FLookControll.Free;{3}

  inherited Destroy;
end;
Es gibt 2 Möglichkeiten, wie du 2 Komponenten "verbinden" kannst: Entweder du machst ne published property({1}) und lässt das den User im ObjektInspektor machen. Oder du erstellst die Komponente oder Klasse selbst({2}) und gibst sie im Destruktor wieder frei({3}). Aber bitte nicht beide Versionen mischen.

Also entweder du nimmst Zeile {1} oder {2} und {3}(letzteres natürlich nicht auskommentiert)...

mfg

Christian
Kaum macht man's richtig, schon klappts!
  Mit Zitat antworten Zitat
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
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:50 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz