Einzelnen Beitrag anzeigen

JoPa55

Registriert seit: 24. Okt 2016
4 Beiträge
 
#7

AW: OnCalcFields zur Laufzeit zuweisen

  Alt 12. Apr 2017, 08:03
Vielen Dank für die schnellen Antworten, leider komme ich damit aber nicht zurecht. Hier kommt mal ein Auszug aus meinem Code (ich hoffe, dass der Kontext reicht):

Delphi-Quellcode:
unit MyDBUnit

type
  TMyCDS = class (TClientDataSet)
  ...
  public
    constructor Create(AOwner : TComponent); override;
    ...
  end;

  
  TWzg = class (TMyCDS)
  const
    CDSFileName : string = 'Wzg.cds';
    
  public
    constructor Create(AOwner : TComponent): override
    ...
  end;

  
constructor TMyCDS.Create(AOwner : TComponent);
begin
  inherited;
    ...
end;
  
  
constructor TWzg.Create(AOwner: TComponent);
begin
  inherited;

  FileName := ProgInstPath + 'data\' + CDSFileName;

  if FileExists(FileName) then
    Open
  else
    CreateNewCDSFile;

  with IndexDefs do begin
    with AddIndexDef do begin
      Name := 'IdxMain';
      Fields := 'ArtNr;Farbe;Dicke';
      Options := [ixCaseInsensitive];
    end;
  end;

  IndexName := 'IdxMain';

end;


unit WzgMgrFU

interface

uses MyDBUnit ...;

type
  TWzgMgrF = class(TForm)
  ...
    procedure FormCreate(Sender: TObject);
  ...
  public
    procedure CDSWzgCalcFlds;
  
end;


implementation

var
  CDSWzg : TWzg;
  
  
procedure TWzgMgrF.FormCreate(Sender: TObject);
begin
  ...
  CDSWzg := TWzg.Create(Self);

// -> CDSWzg.OnCalcFields := CDSWzgCalcFlds;
  
end;


procedure TWzgMgrF.CDSWzgCalcFlds;
begin
  ...
  
end;

Leider führt die Zuweisung an OnCalcFields zum Fehler: E2009 Inkompatible Typen: 'Liste der Parameter ist unterschiedlich', was ja auch klar ist, da OnCalcFields einen Parameter vom Typ TDataSet erwartet. Jetzt weiß ich nicht mehr weiter
  Mit Zitat antworten Zitat