AGB  ·  Datenschutz  ·  Impressum  







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

2 Formulare Variabeln Übergabe

Offene Frage von "thomasku"
Ein Thema von thomasku · begonnen am 29. Jan 2009 · letzter Beitrag vom 10. Feb 2009
Antwort Antwort
Seite 2 von 2     12   
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
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.540 Beiträge
 
Delphi 11 Alexandria
 
#12

Re: 2 Formulare Variabeln Übergabe

  Alt 10. Feb 2009, 17:35
Zitat von globetrotter77:
FAuswahl ist ja bereits im 2. Unit vorhanden (das ist das 2. Formular)
Trotz Brilleputzen habe ich das im geposteten Code nirgends entdecken können.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
globetrotter77

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

Re: 2 Formulare Variabeln Übergabe

  Alt 10. Feb 2009, 18:01
Zitat von DeddyH:
Zitat von globetrotter77:
FAuswahl ist ja bereits im 2. Unit vorhanden (das ist das 2. Formular)
Trotz Brilleputzen habe ich das im geposteten Code nirgends entdecken können.
Sapperlot!
Da hätte ICH mir lieber mal die Brille putzen sollen!
Dann stimmt das alles natürlich nicht mehr, was ich geschrieben habe!

Außer, man nutzt den Weg, wie er normalerweise von Delphi bereits erzeugt wird über Datei|Neu|Formular (da war ich wohl ein bisschen zu sehr drauf fixiert)

Edit:
Und das halte ich für jemanden, der sich noch nicht so richtig sicher ist, auch für den besseren Weg.

@thomasku:
Zum besseren Verständnis:
Wenn du ein neues Formular entwirfst, ist es normalerweise nicht sofort sichtbar, sondern es gibt ein Hauptformular, das zum Start angezeigt wird.
Die eigentliche Programmdatei (xy.dpr) enthält die Aufrufe, die für die Erzeugung erforderlich sind.

Wenn du aus dem Hauptformular das zweite Formular mit ShowModal aufrufst, wird dieses 2. Formular sichtbar und kann bearbeitet werden. Wenn es geschlossen wird, ist es wieder unsichtbar, d.h. das, was du ursprünglich beabsichtigt hast, nämlich Visible ein- und auszuschalten, kannst du dir sparen.

Du landest so automatisch wieder in Formular 1.
  Mit Zitat antworten Zitat
thomasku

Registriert seit: 4. Jan 2009
31 Beiträge
 
#14

Re: 2 Formulare Variabeln Übergabe

  Alt 10. Feb 2009, 20:11
Hallo Globetrotter77 und Deddy H und vielen Dank für eure Antworten.

Das gepostete Programm ist wie gesagt eine Erweiterung und Kommentierung des Programms welches mir Omata in Beitrag #4 gegeben hat.

Der von euch diskutierte Teil ist von Omata geschrieben, meine Erweiterungen sind dann jeweils die
Funktionen und Prozeduren i),ii),iii) bzw. die Globale Variable.

Persönlich würde ich auch wie beschrieben Grundsätzlich ein neues Formular erzeugen.
(Also Datei|Neu|Formular bzw den Button benutzen)

Zitat von globetrotter77:
Hast du bei den beiden Buttons in Formular 2 (FAuswahl) das ModalResult richtig belegt oder Default/Cancel=True gesetzt?
Dazu am besten das Programm von Omata downloaden, sehe derzeit nicht das ich diese Frage beantworten kannst.

LG
  Mit Zitat antworten Zitat
globetrotter77

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

Re: 2 Formulare Variabeln Übergabe

  Alt 10. Feb 2009, 20:36
Zitat von thomasku:
Zitat von globetrotter77:
Hast du bei den beiden Buttons in Formular 2 (FAuswahl) das ModalResult richtig belegt oder Default/Cancel=True gesetzt?
Dazu am besten das Programm von Omata downloaden, sehe derzeit nicht das ich diese Frage beantworten kannst.

LG
Sorry, das mit Default/Cancel war auch ein Unsinn von mir ... vergiss das wieder!
Aber ModalResult sollte gesetzt werden, jedenfalls dann, wenn das Formular nach Knopfdruck tatsächlich geschlossen werden soll!
Und du kannst das selber feststellen, indem du beim Entwurf das 2. Formular aufmachst, den jeweiligen Button anklickst und dann im Object Inspector die Eigenschaft ModalResult suchst. Markier sie einfach mal und drück dann F1.
  Mit Zitat antworten Zitat
thomasku

Registriert seit: 4. Jan 2009
31 Beiträge
 
#16

Re: 2 Formulare Variabeln Übergabe

  Alt 10. Feb 2009, 21:11
Hallo Globetrotter77 und vielen Dank für die Antwort.

Sollte natürlich kann heißen (nicht kannst)

Bin derzeit noch bei den ersten Anfängen und wollte nur die Grundlagen der Formularübergabe verstehen.
Werde mich sicher noch mit den Modul- result und Show auseinandersetzen allerdings sehe ich derzeit noch nicht diese Stufe.

Zitat von thomasku:
Zu diesen Programm hatte ich nun, eigentlich meine Fragen (siehe auch #5)
1.)
{ TFAuswahl } Hat dieser Kommentar eine Bedeutung für die Übergabe?
2.)Der globalen Variable wird kein Wert zugewiesen bzw. bekomme ich einen beliebigen ( i) )
3.)Werteparameter wird nicht übergeben dafür aber der Referenzparameter ( ii) und iii) )
(Werteparameter bekommt beliebigen aus Speicher - Referenz wird übergeben)

Aufgrund, das dies nun mehere Fragen sind bin ich wie bereits erwähnt, unsicher bezüglich meheren Threads.
Lg
  Mit Zitat antworten Zitat
globetrotter77

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

Re: 2 Formulare Variabeln Übergabe

  Alt 10. Feb 2009, 21:43
Zitat von thomasku:
Zu diesen Programm hatte ich nun, eigentlich meine Fragen (siehe auch #5)
1.)
{ TFAuswahl } Hat dieser Kommentar eine Bedeutung für die Übergabe?
Nein!
Alle Angaben in geschweiften Klammern werden als Kommentar gewertet,
es sei denn, sie beginnen mit {$...}
Zitat aus der Online-Hilfe (Compiler-Direktiven (Delphi)):
Zitat:
Eine Compiler-Direktive ist ein Kommentar mit einer speziellen Syntax. Compiler-Direktiven können deshalb überall dort verwendet werden, wo Kommentare erlaubt sind. Eine Compiler-Direktive beginnt mit einem $ als erstem Zeichen nach dem Kommentarzeichen. Darauf folgt der Name der Direktive (bestehend aus einem oder mehreren Buchstaben). Auf den Namen und die erforderlichen Parameter können Kommentare folgen.
Zitat:
2.)Der globalen Variable wird kein Wert zugewiesen bzw. bekomme ich einen beliebigen ( i) )
3.)Werteparameter wird nicht übergeben dafür aber der Referenzparameter ( ii) und iii) )
(Werteparameter bekommt beliebigen aus Speicher - Referenz wird übergeben)
Wenn du keinen Wert zuweist, ist das Ergebnis i.a. unbestimmt oder zumindest nicht auswertbar ... eigentlich logisch!
i)
Hier wird einer Procedure-internen Variablen a ein Wert zugewiesen, nämlich der, der aktuell in FAuswahl in der Variablen test steht.
Dieser wird dann als Text in Label1 angezeigt. Wenn allerdings die Variable test noch nicht belegt wurde, ist das Ergebnis auch unbestimmt.
ii) Hier wird die Procedure-interne Variable a als Parameter an eine Routine im anderen Formular übergeben. Nachdem sie nicht gesetzt wurde, ist das Ergebnis unbestimmt. Dies würde auch gelten, wenn du sie an eine lokale Procedure übergeben würdest.
iii) dto.


Und unbestimmt heißt meistens "richtiger Schrott"! Was halt gerade an dieser Speicherstelle war ...
  Mit Zitat antworten Zitat
thomasku

Registriert seit: 4. Jan 2009
31 Beiträge
 
#18

Re: 2 Formulare Variabeln Übergabe

  Alt 10. Feb 2009, 22:10
Hallo Globetrotter77 und vielen Dank für deine Antwort.


Das mit dem Kommentar ist mir nun klar, Danke.
(Also noch nicht das mit § aber ich hoffe das dies irgendwann noch kommt )

zu i) Ich dachte das ich in Form2 (Auswahl) durch den Button1 'test' den Wert 1 zuweisen kann nur dieser Wert wird leider nicht übergeben.

zu ii) Wie meinen Sie/(Du) das diese nicht gesetzt wurde?
Gerade verwirrend für mich an dieser Variante ist das es als Referenzparameter ( iii) )
funktioniert allerdings nicht als Werteparameter.
Wenn ich procedure test2 bzw function test2b aufrufe bekomme ich einen beliebigen Wert, jedoch
test3 sowie test3b liefern ihre Werte.

Lg

//edit

letzte Zeile überlesen!
Ich dachte nun gerade das ich mit den Funktionen und Prozeduren die Werte setze?
Also zu mind mit test2 und test2b
  Mit Zitat antworten Zitat
globetrotter77

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

Re: 2 Formulare Variabeln Übergabe

  Alt 10. Feb 2009, 22:40
Zitat von thomasku:
(Also noch nicht das mit § aber ich hoffe das dies irgendwann noch kommt )
kein Paragraph, sondern Dollar!!! siehe Hilfe!
Zitat:
Wenn ich procedure test2 bzw function test2b aufrufe bekomme ich einen beliebigen Wert, jedoch
test3 sowie test3b liefern ihre Werte.

letzte Zeile überlesen!
Ich dachte nun gerade das ich mit den Funktionen und Prozeduren die Werte setze?
Also zu mind mit test2 und test2b
es ist eigentlich egal, ob es manchmal funktioniert oder nicht.
man sollte grundsätzlich keine Parameter übergeben, die nicht 100%ig initialisiert wurden!
deshalb sollte man auch niemals darauf hoffen, dass an anderer Stelle dafür gesorgt wurde (z.B. durch ButtonClick)!
  Mit Zitat antworten Zitat
thomasku

Registriert seit: 4. Jan 2009
31 Beiträge
 
#20

Re: 2 Formulare Variabeln Übergabe

  Alt 10. Feb 2009, 22:53
Hallo und vielen Dank wieder.

Mmh leider verstehe ich nicht, warum diese nicht initialisiert wurden sind?
Ich Weise doch in jeder Prozedur bzw Funktion welche ich Aufrufe, den Parametern einen festen Wert zu.

Sorry für die dummen Fragen...

Lg
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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 18:16 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