![]() |
Formulare von Musterformular ableiten - nochmal
Hallo, da hab ich mich zu früh gefreut. :cry:
(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:
das erste Formular:
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.
Delphi-Quellcode:
und das zweite Formular:
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.
Delphi-Quellcode:
Wenn ich nach dem Programmstart Button3 im zweiten Formular anklicke, wird 'mein erster Eintrag' in die ListBox eingetragen.
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. Versuche ich das im ersten Formular geschieht gar nichts. Was mache ich da nicht richtig??? torf160 |
Re: Formulare von Musterformular ableiten - nochmal
hallo torf160,
Zitat:
Zitat:
Schau dir mal deine Deklaration von s an. Im ersten Formular erzeugst du eine Variable s. Deine ButtonClick-Methode ist jedoch eine Instanz darüber, kann dieses s aus der abgeleiteten KLasse (zumahl des sogar noch als Private deklariert wurde) also noch garnicht kennen. Dass heißt, es nimmt statt dessen deine Globale Variable s, die du unter der Basisform deklariert hast. Im FormCreate von TForm3 wird jedoch die eigene Variable s angesprochen. Die Globale Variable s bleibt gänzlich unberührt, und erhält somit den String ""; Hoffe, dass konnte helfen |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:03 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz