Einzelnen Beitrag anzeigen

globetrotter77

Registriert seit: 16. Jan 2009
Ort: Nürnberg
236 Beiträge
 
Delphi 10.3 Rio
 
#11

Re: 2 Formulare Variabeln Übergabe

  Alt 10. Feb 2009, 17:29
Delphi-Quellcode:
procedure TFMain.BtnAuswahlClick(Sender: TObject);
var FAuswahl:TFAuswahl;
begin
  FAuswahl:=TFAuswahl.Create(Self); (*init*)
  try
    FAuswahl.SetAuswahlText(EdAuswahl.Text);
    if FAuswahl.ShowModal = mrOK then
      EdAuswahl.Text:=FAuswahl.GetAuswahlText;
  finally (*Darunter immer ausfuehren*)
    FAuswahl.Release; (*Abschnitt(Form) aufrufbar*)
  end;
end;
das kann nicht gehen!
FAuswahl ist ja bereits im 2. Unit vorhanden (das ist das 2. Formular)
Wenn du nun innerhalb einer procedure nochmal eine Variable gleichen Namens definierst, kennt die procedure nur die interne Variable und weiß nicht, dass du die aus der 2. Unit meinst.

Also alles raus, was
var FAuswahl:TFAuswahl heißt

Außerdem:
Ich nehme mal an, dass du das Formular ganz normal mit Datei|Neu|Formular erzeugt hast.
Dann übernimmt das Hauptprogramm auch das Create desselben und du brauchst dich nicht drum zu kümmern.

Also TFAuswahl.Create auch raus! (und entsprechend auch FAuswahl.Release)

Dann bleibt übrig:
Delphi-Quellcode:
procedure TFMain.BtnAuswahlClick(Sender: TObject);
begin
  with FAuswahl do
  begin
    SetAuswahlText(EdAuswahl.Text);
    ShowModal;
    if ModalResult=mrOk then
    begin
      EdAuswahl.Text:=FAuswahl.GetAuswahlText;
      ... // weitere Statements
    end;
  end;
end;

procedure TFMain.Button1Click(Sender: TObject);
var a:integer;
begin
  a:=FAuswahl.test;
  Label1.Caption:=inttostr(a);
end;

usw.
Statt SetAuswahlText(..) und GetAuswahlText könnte man auch
FAuswahl.CoAuswahl.ItemIndex
bzw.
FAuswahl.CoAuswahl.Text
direkt ansprechen.

Hast du bei den beiden Buttons in Formular 2 (FAuswahl) das ModalResult richtig belegt oder Default/Cancel=True gesetzt?
  Mit Zitat antworten Zitat