AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi OnCalcFields zur Laufzeit zuweisen
Thema durchsuchen
Ansicht
Themen-Optionen

OnCalcFields zur Laufzeit zuweisen

Ein Thema von JoPa55 · begonnen am 11. Apr 2017 · letzter Beitrag vom 12. Apr 2017
Antwort Antwort
nahpets
(Gast)

n/a Beiträge
 
#1

AW: OnCalcFields zur Laufzeit zuweisen

  Alt 11. Apr 2017, 12:39
Sowas?
Delphi-Quellcode:
uses
  Unit_Mit_TDeinClienDataSetNachfolgerTyp;

type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
  private
    { Private-Deklarationen }
    function CreateClientDataSet(AOwner : TComponent) : TDeinClienDataSetNachfolgerTyp;
  public
    { Public-Deklarationen }
    MyClienDataSet : TDeinClienDataSetNachfolgerTyp;
  end;

...

function TForm1.CreateClientDataSet(AOwner : TComponent) : TDeinClienDataSetNachfolgerTyp;
begin
  Result := TDeinClienDataSetNachfolgerTyp.Create(Sender);
  Result.OnCalcFields := DeineEreignisRoutineFuerCalcFields;
end;

procedure TForm1.Create(Sender: TObject);
begin
  MyClienDataSet := CreateClientDataSet(Self);
end;
  Mit Zitat antworten Zitat
JoPa55

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

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
Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.458 Beiträge
 
Delphi 12 Athens
 
#3

AW: OnCalcFields zur Laufzeit zuweisen

  Alt 12. Apr 2017, 08:12
Hallöle...
Delphi-Quellcode:
unit WzgMgrFU

interface

uses MyDBUnit ...;

type
  TWzgMgrF = class(TForm)
  ...
    procedure FormCreate(Sender: TObject);
  ...
  private // besser
    procedure DoCDSWzgCalcFlds(DataSet: TDataSet); // Mit Do als Präfix kann man die Eventhander besser auseinanderhalten.
  public
 
  end;

implementation

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


procedure TWzgMgrF.DoCDSWzgCalcFlds(DataSet: TDataSet);
begin
  ...
  
end;

Geändert von haentschman (12. Apr 2017 um 08:15 Uhr)
  Mit Zitat antworten Zitat
JoPa55

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

AW: OnCalcFields zur Laufzeit zuweisen

  Alt 12. Apr 2017, 08:26
Danke,

die Fehlermeldung kommt nicht mehr - leider wird TWzgMgrF.DoCDSWzgCalcFlds aber nicht aufgerufen ...
  Mit Zitat antworten Zitat
Antwort Antwort

 

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 19:20 Uhr.
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