Hallo mr_emre_d und Danke für deine Antwort!
Mit Messages habe ich leider noch überhaupt keine Erfahrung werde es mir aber in den nächsten Tagen anschauen.
Zu deiner Frage jein, mein Programm benötigt eigentlich nur diese Funktion, allerdings habe ich versucht es etwas allgemeiner zu halten, da ich mit höher Wahrscheinlichkeit es in Zukunft noch öfter brauchen werde.
Bisher habe ich das wie oben mit den Zugriffsmethoden so verstanden das diese nur benötigt werden wenn Formularübergreifend die Variable geändert werden soll.
(Allerdings ist es Sinnvoll für evtl. spätere Erweiterungen dies Grundsätzlich zu tun.)
Da mein Programm erst 1x downgeloadet wurde stelle ich mal den Code rein.
(Ich denke es ziemlich schnell ersichtlich welche meine Veränderungen sind und welches das original von omata
)
Form1
Delphi-Quellcode:
unit MainU;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TFMain =
class(TForm)
BtnAuswahl: TButton;
EdAuswahl: TEdit;
(* i) *)
Label1: TLabel;
Button1: TButton;
Label2: TLabel;
(* ii) *)
Label3: TLabel;
Button2: TButton;
Label4: TLabel;
Button3: TButton;
(* iii) *)
Label5: TLabel;
Label6: TLabel;
Button4: TButton;
Button5: TButton;
(* Clear*)
Button6: TButton;
procedure BtnAuswahlClick(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure Button6Click(Sender: TObject);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
var
FMain: TFMain;
implementation
{$R *.dfm}
uses FAuswahlU;
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;
(* i) *)
procedure TFMain.Button1Click(Sender: TObject);
var FAuswahl:TFAuswahl;
a:integer;
begin
a:=FAuswahl.test;
Label1.Caption:=inttostr(a);
end;
(* ii) *)
procedure TFMain.Button2Click(Sender: TObject);
VAR FAuswahl:TFAuswahl;
a:integer;
begin
FAuswahl.test2(a);
Label4.Caption:=inttostr(a);
end;
procedure TFMain.Button3Click(Sender: TObject);
VAR FAuswahl:TFAuswahl;
a:integer;
begin
FAuswahl.test2b(a);
Label4.Caption:=inttostr(a);
end;
(* iii) *)
procedure TFMain.Button4Click(Sender: TObject);
VAR FAuswahl:TFAuswahl;
a:integer;
begin
FAuswahl.test3(a);
Label6.Caption:=inttostr(a);
end;
procedure TFMain.Button5Click(Sender: TObject);
VAR FAuswahl:TFAuswahl;
a:integer;
begin
FAuswahl.test3b(a);
Label6.Caption:=inttostr(a);
end;
(*Clear*)
procedure TFMain.Button6Click(Sender: TObject);
begin
Label1.Caption:='
';
Label4.Caption:='
';
Label6.Caption:='
';
end;
end.
2-te Form
Delphi-Quellcode:
unit FAuswahlU;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TFAuswahl =
class(TForm)
BtnOK: TButton;
BtnAbbruch: TButton;
CoAuswahl: TComboBox;
(* i) *)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
test:Integer;
test_2:integer;
function GetAuswahlText:
string;
procedure SetAuswahlText(Value:
string);
procedure test2(test_2:integer);
function test2b(test_2:integer):integer;
procedure test3(
VAR test_3:integer);
function test3b(
Var test_3:integer):integer;
end;
implementation
{$R *.dfm}
{ TFAuswahl }
function TFAuswahl.GetAuswahlText:
string;
begin
Result:=CoAuswahl.Text;
(*Comboboxauswahl zu Ordnen (Obstsorte)*)
end;
procedure TFAuswahl.SetAuswahlText(Value:
string);
begin
CoAuswahl.ItemIndex:=CoAuswahl.Items.IndexOf(Value);
end;
(* i) *)
procedure TFAuswahl.Button1Click(Sender: TObject);
(*Wertzuweisung fuer test-Globale Variable*)
begin
test:=1;
end;
(* ii) *)
procedure TFAuswahl.test2(test_2:integer);
begin
test_2:=1;
end;
function TFAuswahl.test2b(test_2:integer):Integer;
begin
test_2:=1;
end;
(* iii) *)
procedure TFAuswahl.test3(
VAR test_3:integer);
begin
test_3:=1;
end;
function TFAuswahl.test3b(
VAR test_3:Integer):Integer;
begin
test_3:=1;
end;
end.
(Habe leider noch nicht die Zeit gefunden es mit read/wirte bzw get/set zu Erweitern,
hoffe dies aber noch diese Woche nachzuholen. )
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