Thema: Delphi Mit Datenmodul arbeiten

Einzelnen Beitrag anzeigen

Walter Landwehr

Registriert seit: 28. Mär 2006
Ort: 32816 Schieder-Schwalenberg
384 Beiträge
 
Delphi 10.4 Sydney
 
#1

Mit Datenmodul arbeiten

  Alt 26. Apr 2016, 13:56
Hallo, ich glaube das mit dem Datenmodul habe ich noch nicht richtig gecheckt.

Also ich habe ein Formular nennen wir es frmMitglieder ( die Unit heißt: Mitglieder ) Dazu habe ich einen Datenmodul dmMitglieder (Unitname: Datamod_Mitglieder).

auf dem Formular frmMitglieder habe ich ein Label lblAlter. Nun möchte ich beim OnChange Ereignis die Farbe des Labels wechseln. Leider bekomme ich eine Zugriffsverletzung weil mein frmMitglieder Nil ist. Weis jemand was ich machen muss damit es funktioniert.

Hier mal der Code aus dem Datamodul:
Delphi-Quellcode:
unit Datamod_Mitglieder;

interface

uses
  System.SysUtils, System.Classes, Data.DB, IBODataset, Vcl.Graphics;

type
  TdmMitglieder = class(TDataModule)
    LookupQry: TIBOQuery;
    LookupSrc: TDataSource;
    MitgliederQry: TIBOQuery;
    dscMitglieder: TDataSource;
    AnredeQry: TIBOQuery;
    dscAnrede: TDataSource;
    dscTitel: TDataSource;
    dscBerufe: TDataSource;
    BerufeQry: TIBOQuery;
    TitelQry: TIBOQuery;
    PLZQry: TIBOQuery;
    procedure dscMitgliederDataChange(Sender: TObject; Field: TField);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  dmMitglieder: TdmMitglieder;

implementation

{%CLASSGROUP 'Vcl.Controls.TControl'}

uses Mitglieder, ToolsOperation;

{$R *.dfm}

procedure TdmMitglieder.dscMitgliederDataChange(Sender: TObject; Field: TField);
begin
   if MitgliederQry.FieldByName('GEBURTSDATUM').AsString <> 'then
    frmMitglieder.lblAlter.Caption := 'Alter: ' + IntToStr(ToolsOperation.CalcYearsInPeriod(MitgliederQry.FieldByName('GEBURTSDATUM').AsDateTime, Date));
  if CalcBirthday(dmMitglieder.MitgliederQry.FieldByName('GEBURTSDATUM').AsDateTime) then
    frmMitglieder.lblAlter.Font.Color := clRed
  else
    frmMitglieder.lblAlter.Font.Color := clBlack;
  if (MitgliederQry.FieldByName('GEBURTSDATUM').AsString <> '') then
    frmMitglieder.lblAlter.Visible := True
  else
    frmMitglieder.lblAlter.Visible := False;
end;

end.
Das Datenmodul wird im OnCreate des Formulars frmMitglieder erzeugt.
Delphi-Quellcode:
procedure TfrmMitglieder.FormCreate(Sender: TObject);
begin
  dmMitglieder := TdmMitglieder.Create(frmMitglieder);
  ToolsForm.RestoreWindowPosition(Self);
end;

Wer weiß Abhilfe.
Walter Landwehr
Mfg

Walter
  Mit Zitat antworten Zitat