Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Zentrale Komponenten Verwaltung? (https://www.delphipraxis.net/62328-zentrale-komponenten-verwaltung.html)

Tau 4. Feb 2006 15:28

Re: Zentrale Komponenten Verwaltung?
 
@Christian
erstmals Danke das du soviel geduld mit mir hast. Ich weis es ist ab und zu schwierig jemanden was zu erklären wenn man selber nicht mal weis wie das ganze funktionieren soll.

Ich habe mich für die Variante {1} entschieden.

habe da immer noch das Problem das wenn ich die Komponente (TDemoControll)
von der Form lösche das ein Fehler auftritt.

Tau
:hi:

Tau 4. Feb 2006 16:49

Re: Zentrale Komponenten Verwaltung?
 
Hallo zusammen

@Ferber
habe mir dein Beispiel angeschaut ist nicht so ganz das richtige.
Aber ist eine sehr interessanter Ansatz währe zum überlegen.

Ich glaube ich bin schon etwas weiter gekommen.
Trotzdem habe ich immer noch einen Fehler.

z.B. 1) = OK
Form1 ich habe beide Komponenten auf der form da ist alles OK.
Auch beim entfernen von den einzelnen Komponenten.
Egal in welcher Reihenfolge die Komponenten entfernt werden.

z.B. 2) = Fehler
Auf der Form1 ist die Komponente TcwDemoADOQuery und
im DatenModul ist eine Komponente TcwDemoControl dise zwei sind miteinander verbunden.

Ich lösche die Komponente aus dem DatenModul dann entsteht der Fehler.
Zugriffsverletzung bei Adresse....

Der Code schaut momentan so aus
Delphi-Quellcode:
unit cwDemoADOQuery;

interface

uses
  SysUtils, Classes, DB, ADODB, cwDemoControl, Controls, Forms;

type
  TcwDemoADOQuery = class(TADOQuery)
  private
    FLookControl: TcwDemoControl;
    procedure SetFocusControl(const Value: TcwDemoControl);
  protected
    procedure Notification(AComponent: TComponent; Operation: TOperation); override;
  public
  published
    property LookControl: TcwDemoControl read FLookControl write SetFocusControl;
  end;

procedure Register;

implementation

procedure Register;
begin
  RegisterComponents('Eigene', [TcwDemoADOQuery]);
end;

procedure TcwDemoADOQuery.Notification(AComponent: TComponent; Operation: TOperation);
begin
  inherited;
  if (Operation = opRemove) then
    if (AComponent = FLookControl) then
      FLookControl := nil;
end;

procedure TcwDemoADOQuery.SetFocusControl(const Value: TcwDemoControl);
begin
  if Value = FLookControl then Exit;
  FLookControl := Value;
end;

end.
Bin mir sicher es ist nur eine kleinnichkeit aber mit großer Wirkung

Tau
:hi:

Ferber 4. Feb 2006 17:13

Re: Zentrale Komponenten Verwaltung?
 
Hi Tau !

Hab mir deinen code genau angesehen, ist Ok.
Der Fehler muss irgendwoanders sein, falls ich nicht doch was übersehen habe. :?

Poste mal den Rest (evtl. als Anhang) vielleicht sitzt der Wurm dort !? :?

Tau 4. Feb 2006 18:29

Re: Zentrale Komponenten Verwaltung?
 
Hallo zusammen

@Ferber

Der Code für TcwDemoControl schaut momentan so aus
Delphi-Quellcode:
unit cwDemoControl;

interface

uses
  SysUtils, Classes, Graphics, Controls;

type
  TcwDemoControl = class(TComponent)
  private
    FFocusControl: TWinControl;
    FFont: TFont;
    FZahl1: Integer;
    FZahl2: Integer;
    procedure SetFocusControl(Value: TWinControl);
  protected
    procedure Notification(AComponent: TComponent; Operation: TOperation); override;
    property FocusControl: TWinControl read FFocusControl write SetFocusControl;
  public
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;
  published
    property Font: TFont read FFont write FFont;
    property Zahl1: Integer read FZahl1 write FZahl1;
    property Zahl2: Integer read FZahl2 write FZahl2;
  end;

procedure Register;

implementation

procedure Register;
begin
  RegisterComponents('Eigene', [TcwDemoControl]);
end;

constructor TcwDemoControl.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);

  FFont := TFont.Create;
end;

destructor TcwDemoControl.Destroy;
begin
  FFont.Free;

  inherited Destroy;
end;

procedure TcwDemoControl.Notification(AComponent: TComponent; Operation: TOperation);
begin
  inherited;
  if (Operation = opRemove) and (AComponent = FFocusControl) then
    FFocusControl := nil;
end;

procedure TcwDemoControl.SetFocusControl(Value: TWinControl);
begin
  FFocusControl := Value;
  if Value <> nil then Value.FreeNotification(Self);
end;

end.
Tau
:hi:

Tau 4. Feb 2006 21:27

Re: Zentrale Komponenten Verwaltung?
 
Hallo Ferber

Habe einiges getestet. Der Fehler tritt auch dann
auf wenn ich den Code bis auf das Minimum reduziere. :wall: :wall: :wall:

[Edit]Es ist immer noch der gleiche Fehler[Edit]

Code Beispiel:
Delphi-Quellcode:
unit cwDemoControl;

interface

uses
  SysUtils, Classes, Graphics, Controls;

type
  TcwDemoControl = class(TComponent)
  private

  protected

  public

  published

  end;

procedure Register;

implementation

procedure Register;
begin
  RegisterComponents('Eigene', [TcwDemoControl]);
end;

end.
Tau
:hi:

Tau 6. Feb 2006 09:30

Re: Zentrale Komponenten Verwaltung?
 
Hallo Leute

Hat keiner einen Tipp für mich? :wall: :wall: :wall:

Oder kann jemand bitte überprüfen ob der Fehler
bei ihm auch auftritt oder nur bei mir. :gruebel: :gruebel:

würde mir schon etwas weiter helfen.

Tau
:hi:


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:59 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz