![]() |
Delphi-Version: XE6
Objecteigenschaften während der Laufzeit ändern
Liste der Anhänge anzeigen (Anzahl: 1)
Ich möchte in FireMonkey die Eigeschaften von einem Expander ändern z.B. StyleLookup oder Width. Die Expander werden dynamisch während der Laufzeit angelegt. Ich fange leider erst gerade mit objectorientierter Programmierung an und bekomme das Ändern der Eigenschaften von diesem Objecten nicht hin. Das Anlegen und anzeigen der Objecte geht das Ändern nicht. Mein Quellcode habe ich angehängt.
Delphi-Quellcode:
TExpanderNeu = class(TExpander)
private public constructor Create(AOwner: TComponent); override; destructor Destroy; override; procedure groß(Sender: TObject); procedure klein(Sender: TObject); end; var Form1: TForm1; y, i,j,x,test: integer; progPfad,datei2 : string; ExpanderArray: array of TExpanderNeu; implementation {$R *.fmx} constructor TExpanderNeu.Create; begin inherited; end; destructor TExpanderNeu.Destroy; begin inherited; end; procedure TExpanderNeu.groß; begin StyleLookup := 'expanderstyle'; Width := 300; end; procedure TExpanderNeu.klein(Sender: TObject); begin (Sender as TExpanderNeu).BeginUpdate; (Sender as TExpanderNeu).StyleLookup := 'expanderstyleneu'; (Sender as TExpanderNeu).Width := 125; (Sender as TExpanderNeu).EndUpdate; end; procedure createBild(AOwner: TFmxObject); var newBild :Timage; begin newBild := TImage.Create(AOwner); with newBild do begin parent := AOwner; Bitmap.CreateFromFile(Pchar(Progpfad+'Bilder\Lueftung.png')); position.X := 222; position.Y := -24; height := 125; width := 78; end; end; procedure createExpanderNeu(AOwner: TFmxObject; labelText : String; posX, posY, hoehe, breite,i : integer); var Expander : TExpanderNeu; begin SetLength(ExpanderArray,Length(ExpanderArray)+1); ExpanderArray[i] := TExpanderNeu.Create(AOwner); with Expander do begin ExpanderArray[i].Parent := Form1.FlowLayout2; ExpanderArray[i].HitTest := true; ExpanderArray[i].Text := labelText; ExpanderArray[i].Cursor := crHandPoint; ExpanderArray[i].height := hoehe; ExpanderArray[i].width := breite; end; createBild(ExpanderArray[i]); end; function TForm1.panelzoom():boolean; begin if y <> 99 then begin i := 1; y := 99; end; if i = 1 then begin FloatAnimation2.Enabled := false; FloatAnimation1.Enabled := true; imagecontrol7.LoadFromFile(Progpfad+'Bilder\Icons\Pfeil_links_schwarz.png'); i := 0; end else begin FloatAnimation1.Enabled := false; FloatAnimation2.Enabled := true; imagecontrol7.LoadFromFile(Progpfad+'Bilder\Icons\Pfeil_Rechts_schwarz.png'); i := 1; end; end; function TForm1.buttonzoom():boolean; var panel : TExpanderNeu; begin Waermepumpe.StyleLookup := 'expanderstyleneu'; Waermepumpe.Width := 125; solar.StyleLookup := 'expanderstyleneu'; solar.Width := 125; expander3.StyleLookup := 'expanderstyleneu'; expander3.Width := 125; lueftung.StyleLookup := 'expanderstyleneu'; lueftung.Width := 125; end; function TForm1.buttonzoomout():boolean; begin Waermepumpe.StyleLookup := 'expanderstyle'; Waermepumpe.Width := 300; solar.StyleLookup := 'expanderstyle'; solar.Width := 300; expander3.StyleLookup := 'expanderstyle'; expander3.Width := 300; lueftung.StyleLookup := 'expanderstyle'; lueftung.Width := 300; end; procedure TForm1.FormCreate(Sender: TObject); var i : integer; text: array[1..10]of string; begin ProgPfad := ExpandFileName('KPN.exe'); delete(ProgPfad,length(ProgPfad)-6,256); text[1]:= 'Wärmepumpe'; text[2]:= 'Solar'; text[3]:= 'Lüftung'; text[4]:= 'Heizkessel'; text[5]:= 'Speicher'; SetLength(ExpanderArray,0); for i := 1 to 5 do begin createExpanderNeu(Image6,Text[i], 222, -24, 125, 300,i); end; label26.Text := IntToStr(Flowlayout2.ChildrenCount); end; procedure TForm1.FormResize(Sender: TObject); var test : TExpanderNeu; begin if y <> 99 then begin i := 1; y := 99; end; if Form1.Width < 300*2.2 then begin test.klein(ExpanderArray[1]); buttonzoom; if (ProduktMeneu.Width > 200) and (i = 1) then begin panelzoom(); Label18.Visible := false; i := 0; end; end else begin buttonzoomout; if (ProduktMeneu.Width < 200) and (i = 0) then begin panelzoom(); Label18.Visible := true; i := 1; end; end; end; |
AW: Objecteigenschaften während der Laufzeit ändern
Hallo zusammen,
Zitat:
Ich vermute einmal, dass er beim FormResize eine Exception wirft. Ist das richtig? |
AW: Objecteigenschaften während der Laufzeit ändern
Das ist richtig.
|
AW: Objecteigenschaften während der Laufzeit ändern
Hallo zusammen,
Zitat:
Du versuchst auf ein Objekt zuzugreifen, welches Du noch gar nicht erstellt hast.
Delphi-Quellcode:
oder
procedure TForm1.FormResize(Sender: TObject);
var test : TExpanderNeu; begin test := TExpanderNeu.Create(Self); //<-- Zeile hinzufügen if y <> 99 then begin i := 1; y := 99; end; if Form1.Width < 300*2.2 then begin test.klein(ExpanderArray[1]); buttonzoom; if (ProduktMeneu.Width > 200) and (i = 1) then begin panelzoom(); Label18.Visible := false; i := 0; end; end else begin buttonzoomout; if (ProduktMeneu.Width < 200) and (i = 0) then begin panelzoom(); Label18.Visible := true; i := 1; end; end; test.Free //<-- Zeile hinzufügen end; ExpanderArray[1].klein(ExpanderArray[1]) |
AW: Objecteigenschaften während der Laufzeit ändern
Bei jedem Ändern der Formgröße einen neuen Expander?
|
AW: Objecteigenschaften während der Laufzeit ändern
Hallo zusammen,
Zitat:
Aber da man sieht, dass das Programm doch eher an eine Rohfassung erinnert, wollte ich nur den bestehenden Code so ändern, dass man auch sieht, warum hier der Fehler auftritt. Die zweite Version ist definitiv besser, obwohl ich persönlich die Funktionen .Klein und .Gross ohne Sender-Parameter erstellt hätte. |
AW: Objecteigenschaften während der Laufzeit ändern
Die Funktion ist, ich erstelle beim starten des Programms eine Liste von Expander-Elementen mit einer Breite von 300. Bei Verkleinerung des Formulars soll ab einer bestimmten Breite alle Expander-Elemente auf 125 verkleinert werden und ein anderes StyleLookup zugewiesen werden. Aus diesem Grund habe ich ein ExpanderArray angelegt so dass ich über eine Schleife alle Expander-Elemente verkleinern kann.
|
AW: Objecteigenschaften während der Laufzeit ändern
Hallo zusammen,
Zitat:
Zitat:
Delphi-Quellcode:
Wenn Du noch den Sender-Parameter in der .klein- und .gross- Procedure entfernst, dann reicht >>ExpanderArray[zaehler].klein;<< als Zeile in der Schleife
for zaehler := 0 to Length(ExpanderArray) - 1 do
begin ExpanderArray[zaehler].klein(ExpanderArray[zaehler]) end; |
AW: Objecteigenschaften während der Laufzeit ändern
Hallo erst einmal vielen Dank. Das Aufrufen der TExpanderNeu.klein Procedure funktioniert. Ich komme aber in der Methode nicht weiter.
Delphi-Quellcode:
Der Quellcode wirft eine Exeption. Ich bin wie gesagt Anfänger im Bereich der Objectorientierung.
procedure TExpanderNeu.klein(Sender: TObject);
begin BeginUpdate; StyleLookup := 'expanderstyleneu'; Width := 125; EndUpdate; end; |
AW: Objecteigenschaften während der Laufzeit ändern
Zitat:
|
AW: Objecteigenschaften während der Laufzeit ändern
Liste der Anhänge anzeigen (Anzahl: 1)
Ich habe die Screenshot angehängt.
|
AW: Objecteigenschaften während der Laufzeit ändern
Hallo zusammen,
Was hast Du an Deinem Quellcode jetzt verändert? Stell das ganze Projekt am besten nochmals ein. |
AW: Objecteigenschaften während der Laufzeit ändern
Delphi-Quellcode:
Ich denke das der Teil des Programms nicht ganz in Ordnung ist
unit Haupfenster;
interface uses System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants, FMX.Types, FMX.Graphics, FMX.Controls, FMX.Forms, FMX.Dialogs, FMX.StdCtrls, FMX.Layouts, FMX.Ani, FMX.Objects, Contnrs; type TForm1 = class(TForm) StyleBook1: TStyleBook; ProduktMeneu: TPanel; Oben: TPanel; Seite: TPanel; FlowLayout2: TFlowLayout; Waermepumpe: TExpander; Solar: TExpander; Expander3: TExpander; Lueftung: TExpander; Start: TPanel; Unten: TPanel; ImageControl7: TImageControl; Image1: TImage; FloatAnimation1: TFloatAnimation; FloatAnimation2: TFloatAnimation; Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; Label5: TLabel; Label6: TLabel; Label7: TLabel; Label8: TLabel; Label9: TLabel; Label10: TLabel; Label11: TLabel; Label12: TLabel; Image2: TImage; Image3: TImage; Label13: TLabel; Label14: TLabel; Image4: TImage; Image5: TImage; Image6: TImage; Label15: TLabel; Image7: TImage; Label16: TLabel; Image8: TImage; Label17: TLabel; Label18: TLabel; Menue: TPanel; FloatAnimation3: TFloatAnimation; FloatAnimation4: TFloatAnimation; Image9: TImage; Label19: TLabel; Image11: TImage; Label21: TLabel; Image12: TImage; Label22: TLabel; Image13: TImage; Label23: TLabel; Image10: TImage; Label20: TLabel; Image14: TImage; Label24: TLabel; Image15: TImage; Label25: TLabel; ImageControl1: TImageControl; ImageControl2: TImageControl; ImageControl3: TImageControl; ImageControl4: TImageControl; ImageControl5: TImageControl; Image16: TImage; Image17: TImage; Label26: TLabel; Expander1: TExpander; Image18: TImage; procedure FormResize(Sender: TObject); procedure ImageControl7Click(Sender: TObject); function panelzoom():boolean; function buttonzoom():boolean; function buttonzoomout():boolean; procedure Image4Click(Sender: TObject); procedure Image8Click(Sender: TObject); procedure ImageControl1Click(Sender: TObject); procedure FormCreate(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; TExpanderNeu = class(TExpander) private public constructor Create(AOwner: TComponent); override; destructor Destroy; override; procedure groß(Sender: TObject); procedure klein(Sender: TObject); end; var Form1: TForm1; y, i,j,x,test: integer; progPfad,datei2 : string; ExpanderArray: array of TExpanderNeu; implementation {$R *.fmx} constructor TExpanderNeu.Create; begin inherited; end; destructor TExpanderNeu.Destroy; begin inherited; end; procedure TExpanderNeu.groß(Sender: TObject); begin StyleLookup := 'expanderstyle'; Width := 300; end; procedure TExpanderNeu.klein; begin BeginUpdate; StyleLookup := 'expanderstyleneu'; Width := 125; EndUpdate; end; procedure createBild(AOwner: TFmxObject); var newBild :Timage; begin newBild := TImage.Create(AOwner); with newBild do begin parent := AOwner; Bitmap.CreateFromFile(Pchar(Progpfad+'Bilder\Lueftung.png')); position.X := 222; position.Y := -24; height := 125; width := 78; end; end; procedure createExpanderNeu(AOwner: TFmxObject; labelText : String; posX, posY, hoehe, breite,i : integer); var Expander : TExpanderNeu; begin SetLength(ExpanderArray,Length(ExpanderArray)+1); ExpanderArray[i] := TExpanderNeu.Create(AOwner); with Expander do begin ExpanderArray[i].Parent := Form1.FlowLayout2; ExpanderArray[i].HitTest := true; ExpanderArray[i].Text := labelText; ExpanderArray[i].Cursor := crHandPoint; ExpanderArray[i].height := hoehe; ExpanderArray[i].width := breite; end; createBild(ExpanderArray[i]); end; function TForm1.panelzoom():boolean; begin if y <> 99 then begin i := 1; y := 99; end; if i = 1 then begin FloatAnimation2.Enabled := false; FloatAnimation1.Enabled := true; imagecontrol7.LoadFromFile(Progpfad+'Bilder\Icons\Pfeil_links_schwarz.png'); i := 0; end else begin FloatAnimation1.Enabled := false; FloatAnimation2.Enabled := true; imagecontrol7.LoadFromFile(Progpfad+'Bilder\Icons\Pfeil_Rechts_schwarz.png'); i := 1; end; end; function TForm1.buttonzoom():boolean; var panel : TExpanderNeu; begin Waermepumpe.StyleLookup := 'expanderstyleneu'; Waermepumpe.Width := 125; solar.StyleLookup := 'expanderstyleneu'; solar.Width := 125; expander3.StyleLookup := 'expanderstyleneu'; expander3.Width := 125; lueftung.StyleLookup := 'expanderstyleneu'; lueftung.Width := 125; end; function TForm1.buttonzoomout():boolean; begin Waermepumpe.StyleLookup := 'expanderstyle'; Waermepumpe.Width := 300; solar.StyleLookup := 'expanderstyle'; solar.Width := 300; expander3.StyleLookup := 'expanderstyle'; expander3.Width := 300; lueftung.StyleLookup := 'expanderstyle'; lueftung.Width := 300; end; procedure TForm1.FormCreate(Sender: TObject); var i : integer; text: array[1..10]of string; AOwner: TFmxObject; begin ProgPfad := ExpandFileName('KPN.exe'); delete(ProgPfad,length(ProgPfad)-6,256); text[1]:= 'Wärmepumpe'; text[2]:= 'Solar'; text[3]:= 'Lüftung'; text[4]:= 'Heizkessel'; text[5]:= 'Speicher'; SetLength(ExpanderArray,0); for i := 1 to 5 do begin createExpanderNeu(image6,Text[i], 222, -24, 125, 300,i); end; label26.Text := IntToStr(Flowlayout2.ChildrenCount); end; procedure TForm1.FormResize(Sender: TObject); var zaehler : integer; begin if y <> 99 then begin i := 1; y := 99; end; if Form1.Width < 300*2.2 then begin for zaehler := 0 to Length(ExpanderArray) - 1 do begin ExpanderArray[zaehler].klein(ExpanderArray[zaehler]) end; buttonzoom; if (ProduktMeneu.Width > 200) and (i = 1) then begin panelzoom(); Label18.Visible := false; i := 0; end; end else begin buttonzoomout; if (ProduktMeneu.Width < 200) and (i = 0) then begin panelzoom(); Label18.Visible := true; i := 1; end; end; end; procedure TForm1.Image4Click(Sender: TObject); begin start.Enabled :=false; start.Visible := false; end; procedure TForm1.Image8Click(Sender: TObject); begin if x <> 99 then begin j := 1; x := 99; end; if j = 1 then begin FloatAnimation4.Enabled := false; FloatAnimation3.Enabled := true; j := 0; end else begin FloatAnimation3.Enabled := false; FloatAnimation4.Enabled := true; j := 1; end; end; procedure TForm1.ImageControl1Click(Sender: TObject); var Expander : TExpanderNeu; begin if test <> 1 then begin imagecontrol1.LoadFromFile(Progpfad+'Bilder\Icons\icon-biomasse-xl.png'); waermepumpe.Visible := true; solar.Visible := false; ExpanderArray[i].Destroy; // solar.Destroy; // expander3.Enabled := false; lueftung.Visible := false; // lueftung.Destroy; test :=1; flowlayout2.Width :=0; end else begin imagecontrol1.LoadFromFile(Progpfad+'Bilder\Icons\icon-biomasse-weiss-xl.png'); waermepumpe.Visible := true; solar.Visible := true; // expander3.Enabled := false; lueftung.Visible := true; test :=2; flowlayout2.Width :=0; end; end; procedure TForm1.ImageControl7Click(Sender: TObject); begin panelzoom() end; end.
Delphi-Quellcode:
procedure createExpanderNeu(AOwner: TFmxObject; labelText : String; posX, posY, hoehe, breite,i : integer);
var Expander : TExpanderNeu; begin SetLength(ExpanderArray,Length(ExpanderArray)+1); ExpanderArray[i] := TExpanderNeu.Create(AOwner); with Expander do begin ExpanderArray[i].Parent := Form1.FlowLayout2; ExpanderArray[i].HitTest := true; ExpanderArray[i].Text := labelText; ExpanderArray[i].Cursor := crHandPoint; ExpanderArray[i].height := hoehe; ExpanderArray[i].width := breite; end; createBild(ExpanderArray[i]); end;
Delphi-Quellcode:
Das Programm lässt sich compilieren und funktioniert außer dem Problem mit dem ändern der Eigenschaften. Wenn ich das Programm schließe kommt aber eine Exeption. Kommentiere ich den Teil createExpanderNeu(image6,Text[i], 222, -24, 125, 300,i); aus kommt keine Exeption. Ich vermute das das alles miteinander zusammenhängt. Ich bin echt ratlos.
SetLength(ExpanderArray,0);
for i := 1 to 5 do begin createExpanderNeu(image6,Text[i], 222, -24, 125, 300,i); end; |
AW: Objecteigenschaften während der Laufzeit ändern
Mach das einmal so:
Delphi-Quellcode:
procedure createExpanderNeu(AOwner: TFmxObject; labelText : String; posX, posY, hoehe, breite,i : integer);
begin SetLength(ExpanderArray,Length(ExpanderArray)+1); ExpanderArray[i] := TExpanderNeu.Create(AOwner); ExpanderArray[i].Parent := Form1.FlowLayout2; ExpanderArray[i].HitTest := true; ExpanderArray[i].Text := labelText; ExpanderArray[i].Cursor := crHandPoint; ExpanderArray[i].height := hoehe; ExpanderArray[i].width := breite; createBild(ExpanderArray[i]); end; |
AW: Objecteigenschaften während der Laufzeit ändern
Das hat nichts geändert. Ich denke das ganze hat mit der Klassendeklaration was zu tun.
Delphi-Quellcode:
Wenn ich hier constructor Create(AOwner: TComponent); override; den Teil (AOwner: TComponent); override; weglasse bekomme ich hier
TExpanderNeu = class(TExpander)
private public constructor Create(AOwner: TComponent); override; destructor Destroy; override; procedure groß(Sender: TObject); procedure klein(Sender: TObject); end; constructor TExpanderNeu.Create; begin inherited; end;
Delphi-Quellcode:
eine Fehlermeldung "inkompatible Typen"
constructor TExpanderNeu.Create;
begin inherited; end; wenn ich das drin lasse weis ich nicht was ich hier
Delphi-Quellcode:
für einen Parameter für "image6" nehmen soll
procedure createExpanderNeu(AOwner: TFmxObject; labelText : String; posX, posY, hoehe, breite,i : integer);
var Expander : TExpanderNeu; begin SetLength(ExpanderArray,Length(ExpanderArray)+1); ExpanderArray[i] := TExpanderNeu.Create(AOwner); with Expander do begin ExpanderArray[i].Parent := Form1.FlowLayout2; ExpanderArray[i].HitTest := true; ExpanderArray[i].Text := labelText; ExpanderArray[i].Cursor := crHandPoint; ExpanderArray[i].height := hoehe; ExpanderArray[i].width := breite; end; createBild(ExpanderArray[i]); end; procedure TForm1.FormCreate(Sender: TObject); var i : integer; text: array[1..10]of string; AOwner: TFmxObject; begin ProgPfad := ExpandFileName('KPN.exe'); delete(ProgPfad,length(ProgPfad)-6,256); text[1]:= 'Wärmepumpe'; text[2]:= 'Solar'; text[3]:= 'Lüftung'; text[4]:= 'Heizkessel'; text[5]:= 'Speicher'; SetLength(ExpanderArray,0); for i := 1 to 5 do begin createExpanderNeu(image6,Text[i], 222, -24, 125, 300,i); end; label26.Text := IntToStr(Flowlayout2.ChildrenCount); end; |
AW: Objecteigenschaften während der Laufzeit ändern
Ich habe es hinbekommen
Das Problem:
Delphi-Quellcode:
Die Lösung:
etLength(ExpanderArray,0);
for i := 1 to 6 do begin createExpanderNeu(FlowLayout2,Text[1], 222, -24, 125, 300,i); end;
Delphi-Quellcode:
Das Füllen des Array muss mit 0 beginnen nicht mit 1
etLength(ExpanderArray,0);
for i := 0 to 5 do begin createExpanderNeu(FlowLayout2,Text[i+1], 222, -24, 125, 300,i); end; |
AW: Objecteigenschaften während der Laufzeit ändern
Zitat:
Delphi-Quellcode:
Bzw., stimmt der letzte Parameter überhaupt?
SetLength(ExpanderArray, 0);
for i := 1 to 6 do createExpanderNeu(FlowLayout2,Text[i], 222, -24, 125, 300,i-1); Zitat:
Warum gibt es da soviele globale Variablen? Wenn die/einige wirklich global sein müssen, warum dann mit so nichtssagenden Namen? i und j scheinen an manchen Stellen nur zwei Werte zu haben (0 und 1). Sieht das nicht eher nach einem Boolean aus? |
AW: Objecteigenschaften während der Laufzeit ändern
Hallo zusammen,
und das ist natürlich genau so tötlich:
Delphi-Quellcode:
ExpanderArray[i].Parent := Form1.FlowLayout2;
Wenn Du eine neue Instanz der Form anlegst, dann heisst diese nicht mehr "Form1". |
AW: Objecteigenschaften während der Laufzeit ändern
Zitat:
|
AW: Objecteigenschaften während der Laufzeit ändern
Erst einmal vielen Dank für Die Anregungen. Wie schon erwähnt bin ich absoluter Neuling was Objektorientierung angeht. Ich weis nicht wie man das
ExpanderArray[i].Parent := Form1.FlowLayout2; besser abbildet :oops:. Bei den globalen Variablen bin ich am bereinigen. Ich bräuchte da aber ein paar Tipps wie man das besser abbilden kann. |
AW: Objecteigenschaften während der Laufzeit ändern
Hallo zusammen,
zuersteinmal setzt Du "procedure createExpanderNeu()" als procedure der TForm.
Delphi-Quellcode:
Natürlich musst Du nun die Klasse TExpanderNeu vor die Deklaration von TForm1 setzen und die globale Variable ExpanderArray entfernen und durch FExpanderArray ersetzen.
type
TForm1 = class(TForm) .... private FExpanderArray: array of TExpanderNeu; procedure createExpanderNeu(Parameterliste); public
Delphi-Quellcode:
Ich habe in den Parametern der Prozedur das "i" herausgenommen, da es nun zu keinen Missverständnissen kommen kann.
procedure TForm1.createExpanderNeu(AOwner: TFmxObject; labelText : String; posX, posY, hoehe, breite : integer);
var liNewIndex: Integer; begin liNewIndex := Length(ExpanderArray); SetLength(FExpanderArray, liNewIndex + 1); FExpanderArray[liNewIndex ] := TExpanderNeu.Create(AOwner); FExpanderArray[liNewIndex ].Parent := FlowLayout2; FExpanderArray[liNewIndex ].HitTest := true; FExpanderArray[liNewIndex ].Text := labelText; FExpanderArray[liNewIndex ].Cursor := crHandPoint; FExpanderArray[liNewIndex ].height := hoehe; FExpanderArray[liNewIndex ].width := breite; createBild(FExpanderArray[liNewIndex]); end; |
AW: Objecteigenschaften während der Laufzeit ändern
Danke für die Info, ich werde das mal testen und berichte ob ich damit klar gekommen bin :wink:
|
AW: Objecteigenschaften während der Laufzeit ändern
Hallo zusammen,
ich hätte hier noch eine Frage. Wie ist das gemeint "die globale Variable ExpanderArray entfernen und durch FExpanderArray ersetzen."? Das habe ich nicht verstanden. |
AW: Objecteigenschaften während der Laufzeit ändern
Hallo zusammen,
Zitat:
Delphi-Quellcode:
Die hier deklarierten Variabeln sind "globale Variabeln", welche in jedem Fenster einer Anwendung bzw. in der gesamten Anwendung gültig sind.
var
Form1: TForm1; y, i,j,x,test: integer; progPfad,datei2 : string; ExpanderArray: array of TExpanderNeu; implementation {$R *.fmx} Dort gehört aber nur das hin, was undedingt auch wirklich sein muss. Also raus mit "y", "i","j","x","test", "progPfad","datei2" und "ExpanderArray". Statt dessen entfernst Du diese globale Deklarationen und setzt sie in die Typ-Deklaration in der Form. Dann ist die Variable weiterhin in jeder Instanz der Form gültig, aber kann nicht durch eine weitere Instanz des Fensters oder von irgendetwas, was den gleichen globalen Variabelnamen benutzt, überschrieben werden. Du weisst ja nicht, ob eine Komponente zufällig eine globale Variable mit diesem Namen auch anspricht. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:18 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