Hallo, da hab ich mich zu früh gefreut.
(siehe Frage von vorhin)
Die abgeleiteten Formulare funktionieren wunderbar, wenn ich aber in einem abgeleiteten Formular die Variable s ändern will, dann geht das nicht.
Wird die denn nicht mit vererbt?
Auch der Versuch, im abgeleiteten Formular eine Variable s neu zu deklarieren und in einer FormCreate-Prozedur neu zu belegen haut nicht hin.
So sieht das BasisFormular aus:
Delphi-Quellcode:
unit unit_Form2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm2 =
class(TForm)
Edit1: TEdit;
Button1: TButton;
ListBox1: TListBox;
Button2: TButton;
Button3: TButton;
Button4: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
virtual;
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
var
Form2: TForm2;
s :
string;
implementation
{$R *.dfm}
procedure TForm2.Button1Click(Sender: TObject);
begin
s := edit1.Text;
ListBox1.Items.Add(s);
edit1.Text := '
';
edit1.SetFocus;
end;
procedure TForm2.Button2Click(Sender: TObject);
begin
ListBox1.Items.Clear;
end;
procedure TForm2.Button3Click(Sender: TObject);
begin
ListBox1.Items.Add(s);
end;
procedure TForm2.FormCreate(Sender: TObject);
begin
s := '
mein erster Eintrag';
end;
end.
das erste Formular:
Delphi-Quellcode:
unit unit_MyForm_1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, unit_Form2, StdCtrls;
type
TForm3 =
class(TForm2)
procedure FormCreate(Sender: TObject);
Override;
private
{ Private-Deklarationen }
s :
string;
public
{ Public-Deklarationen }
end;
var
Form3: TForm3;
implementation
{$R *.dfm}
procedure TForm3.FormCreate(Sender: TObject);
begin
ShowMessage('
huhu');
// um zu prüfen, ob die Prozedur auch
// tatsächlich aufgerufen wird
s := '
mein abgeleiteter Eintrag';
end;
end.
und das zweite Formular:
Delphi-Quellcode:
unit unit_MyForm_2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, unit_Form2, StdCtrls;
type
TForm4 =
class(TForm2)
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
var
Form4: TForm4;
implementation
{$R *.dfm}
end.
Wenn ich nach dem Programmstart Button3 im zweiten Formular anklicke, wird 'mein erster Eintrag' in die ListBox eingetragen.
Versuche ich das im ersten Formular geschieht gar nichts.
Was mache ich da nicht richtig???
torf160