AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Kommunikation zwischen Forms problem

Ein Thema von bahu · begonnen am 29. Nov 2015 · letzter Beitrag vom 29. Nov 2015
Antwort Antwort
bahu

Registriert seit: 19. Nov 2015
7 Beiträge
 
#1

Kommunikation zwischen Forms problem

  Alt 29. Nov 2015, 17:37
Delphi-Version: 5
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!
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#2

AW: Kommunikation zwischen Forms problem

  Alt 29. Nov 2015, 17:42
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;
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

AW: Kommunikation zwischen Forms problem

  Alt 29. Nov 2015, 18:03
Ich mag das 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
Angehängte Dateien
Dateityp: zip dp_187435.zip (836,1 KB, 20x aufgerufen)
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
bahu

Registriert seit: 19. Nov 2015
7 Beiträge
 
#4

AW: Kommunikation zwischen Forms problem

  Alt 29. Nov 2015, 19:09
@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

Geändert von TBx (29. Nov 2015 um 23:45 Uhr) Grund: Full Quote entfernt
  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 04:03 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