Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Probleme mit showModal (https://www.delphipraxis.net/66095-probleme-mit-showmodal.html)

ksh 24. Mär 2006 16:45


Probleme mit showModal
 
Hallo!

nachdem ich jetzt allmählich am verzweifeln bin... habe eine Delphi-Projekt als Vorlage bekomme, was ich jetzt dementsprechend den neuen Anforderungen verändere.

Habe meine Mainunit mit meinem MainWindow (im Projekt Project)- inkl. Menü etc. Wenn ich jetzt auf den Menüpunkt Neu gehe, soll mein Dialogfenster erscheinen - aus der Unit Dialog mit Fenster names Eingabe.
Habe folgenden Quellcode übernommen:
Delphi-Quellcode:
procedure TMainWindow.NeuClick(Sender: TObject);
begin
  // ...
  if Eingabe.ShowModal = mrOK then
  begin
    RechnePersDaten(AngDaten.EinDaten,AngDaten.PersDaten);
    RechneRentDaten(AngDaten.EinDaten,AngDaten.PersDaten,AngDaten.RentDaten);
    ShowTab;
    SpeichernUnter.Enabled:=True;
    Speichern.Enabled:=False;
    Bearbeiten.Enabled:=True;
    Drucken.Enabled:=True;
  end;
end;
Leider kommt immer, sobald ich den Menüpunkt ausführen will: Access violation at address 00471686 in module' Project.exe'. Read of address 00000000.
Danach immer ein Verweis auf diese Zeile.

Heißt das jetzt, dass ein Verweis in dem Project fehlt oder wie?

mkinzler 24. Mär 2006 16:48

Re: Probleme mit showModal
 
Wurde Eingabe instantiiert? ( Eingabe = TEingabe.Create oder createForm )

ManuMF 24. Mär 2006 16:50

Re: Probleme mit showModal
 
Hallo,

hast du die Unit Dialog unter uses (ganz oben) aufgelistet?

Gruß,
ManuMF

shmia 24. Mär 2006 16:51

Re: Probleme mit showModal
 
Modale Formulare sollte man im Programmcode erzeugen, benützen und gleich wieder zerstören,
denn man ist ja fertig mit dem Formular.
Hier das immer gleiche Grundgerüst:
Delphi-Quellcode:
var
   frm : TEingabeForm;
begin
   frm := TEingabeForm.Create(Self);
   try
      if frm.ShowModal = mrOK then
      begin
         //mach was damit
      end;
   finally
      frm.Free;
   end;
end;

ksh 24. Mär 2006 17:06

Re: Probleme mit showModal
 
also, der Dialog wird instantiiert mit FormCreate und ist natürlich auch in der main bei den uses mit drin!

bei TEingabe.Create(Self) (entsprechend angepasst) meckert er rum, dass es nur für Klassenmethoden erlaubt ist...

mkinzler 24. Mär 2006 17:08

Re: Probleme mit showModal
 
Poste mal die Klassendefinition.

ksh 24. Mär 2006 17:11

Re: Probleme mit showModal
 
sorry, steh grad völlig auf dem schlauch! welche denn? :oops:

mkinzler 24. Mär 2006 17:14

Re: Probleme mit showModal
 
TEingabe.

ksh 24. Mär 2006 17:17

Re: Probleme mit showModal
 
Meinst du das??

Delphi-Quellcode:
unit Dialog;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Grids, DBGrids, DB, ADODB, StdCtrls, ObjEin, HiType, HiFunc,
  Buttons;

type
  TEingabe = class(TForm)
    TabelleEinlesen: TButton;
    ADOConnection1: TADOConnection;
    ADOQuery1: TADOQuery;
    DataSource1: TDataSource;
    DBGrid1: TDBGrid;
    OpenDialog1: TOpenDialog;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    Label8: TLabel;
    Label9: TLabel;
    Label10: TLabel;
    Bilanztermin: TEdit;
    Rechnungszins: TComboBox;
    PA_Maenner: TComboBox;
    PA_Frauen: TComboBox;
    Rentendynamik: TComboBox;
    ARKZ: TComboBox;
    IRKZ: TComboBox;
    WRKZ: TComboBox;
    RZahlunsweise: TComboBox;
    WRArtKz: TComboBox;
    Beenden: TButton;
    OK: TBitBtn;
    Abbruch: TBitBtn;


    {****************** Beenden bzw. Abbrechen **********************}
    procedure AbbruchClick(Sender: TObject);
    {***************** Einlesen der Eingangstabelle *****************}
    procedure TabelleEinlesenClick(Sender: TObject);
    {********************* Zuweisen der Daten ***********************}
    procedure OKClick(Sender: TObject);
   
    procedure FormCreate(Sender: TObject);


  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Eingabe : TEingabe;
  OKCLicked : boolean;

implementation

{$R *.dfm}

uses Main;
.....

procedure TEingabe.FormCreate(Sender: TObject);

var JJ,MM,TT : word;

function datumtostr(d : datum) : string;

var s : string;
   {t,m,j : integer;}

begin
  s:=inttostr(d.TT)+'.'+inttostr(d.MM)+'.'+inttostr(d.JJ);
  datumtostr:=s;
end;

begin
  {Standard-Werte setzten}
  ARKz.ItemIndex := 2;
  IRKz.ItemIndex := 1;
  WRKz.ItemIndex := 0;
  Rentendynamik.ItemIndex := 0;
  WRArtKz.ItemIndex := 0;
  DecodeDate(Date,JJ,MM,TT);
  Bilanztermin.Text := '31.12.'+inttostr(JJ);
  PA_Maenner.ItemIndex := 5;
  PA_Frauen.ItemIndex := 3;

  with angdaten.eindaten do
    begin
      Eingabe.Bilanztermin.Text := datumtostr(EinBil);
      Eingabe.Rechnungszins.Text := floattostr(EinRechZins);
      Eingabe.ARKz.ItemIndex := EinARKz;
      Eingabe.IRKz.ItemIndex := EinIRKz;
      Eingabe.WRKz.ItemIndex := EinWRKz;
      Eingabe.Rentendynamik.Text := floattostr(EinDynRenWert);
      Eingabe.WRArtKz.ItemIndex := EinWRArtKz;
      Eingabe.PA_Maenner.ItemIndex := EinPensAlter;
      Eingabe.PA_Frauen.ItemIndex := EinPensAlter;
    end;
end;

end.

mkinzler 24. Mär 2006 17:24

Re: Probleme mit showModal
 
In welcher Unit ist angdaten deklariert?


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:20 Uhr.
Seite 1 von 3  1 23      

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