Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Kommunikation zwischen Forms problem (https://www.delphipraxis.net/187435-kommunikation-zwischen-forms-problem.html)

bahu 29. Nov 2015 17:37

Delphi-Version: 5

Kommunikation zwischen Forms problem
 
Hallo,

ich versuche gerade zwei Eingabewerte über eine zweite Form, die per ShowModal von der Main Form aufgerufen wird einzulesen.
Leider mangelt es bei mir an Wissen oder Kreativität das ganze sauber umzusetzen.

Ich zeige mal auf was ich bereits habe und wo es nicht weitergeht:

Main Form:

Delphi-Quellcode:
procedure TEinstellungen.CreateSettings;
var
  SetupDlg : TFormSetup;
  Setupdata : TSettingsData;
begin
  m_Inifile := TIniFile.Create(SETTINGS);
  SetupDlg := TFormSetup.Create(FormSetup, Setupdata);
  SetupDlg.ShowModal;
Hier sieht man einmal meine zweite Form TFormSetup und ein Record TSettingsdata, das die Eingabewerte enthält.

Den TCustomForms Constructor habe ich überladen:

Delphi-Quellcode:
Constructor TFormSetup.CreateWith(AOwner: TComponent; data : TSettingsdata);
begin
  m_SettingsData := data;
  inherited Create(AOwner);
end;
Ich habe später wenn das Hauptproblem gelöst wurde vor, data per Pointer zu übermitteln.
In der TFormSetup gibt es die procedure Setup, die ausgelöst wird, sobald der Nutzer alle Daten eingegeben hat.

Delphi-Quellcode:
procedure TFormSetup.Setup;
begin
  // Verschiedene Prüfungen, irrelevantes Zeug.

  MessageBox(0, 'Saved!', 'Success', 64);

  // WAS HIER ?
  // RELEASE; ?
end;

Nun soll die Form sich selbst releasen, so dass der Mainthread weiter macht (also das Hauptprogramm bei Showmodal weiter ausgeführt wird).

Ich weiß leider nicht wie ich das am besten mache.


Danke im voraus!

Perlsau 29. Nov 2015 17:42

AW: Kommunikation zwischen Forms problem
 
Delphi-Quellcode:
procedure TEinstellungen.CreateSettings;
var
  SetupDlg : TFormSetup;
  Setupdata : TSettingsData;
begin
  m_Inifile := TIniFile.Create(SETTINGS);
  SetupDlg := TFormSetup.Create(FormSetup, Setupdata);
  SetupDlg.ShowModal;
  SetupDlg.Free;

Sir Rufo 29. Nov 2015 18:03

AW: Kommunikation zwischen Forms problem
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ich mag das
Delphi-Quellcode:
TPersistent.Assign
, dann reduziert sich der Code auf
Delphi-Quellcode:
procedure TMainForm.Button1Click( Sender: TObject );
var
  lSettingDialog: TForm;
begin
  lSettingDialog := TSetupForm.Create( nil );
  try
    // Daten an die Form übergeben
    lSettingDialog.Assign( FSettings );
    // Form als Dialog aufrufen
    if lSettingDialog.ShowModal = mrOk
    then
      // Daten von der Form lesen
      FSettings.Assign( lSettingDialog );
  finally
    lSettingDialog.Free;
  end;
end;
Kompletter Source und EXE im Anhang

bahu 29. Nov 2015 19:09

AW: Kommunikation zwischen Forms problem
 
@Sir Rufo:

Vielen Dank!
Das Projekt hat mir sehr gut weitergeholfen und ich hab was neues dazugelernt.

Grüße

EDIT:// Echt super gelöst - nochmals vielen Dank ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:51 Uhr.

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