AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Fehlermeldung bei Parent-Zuweisung von einer array of TGroupbox
Thema durchsuchen
Ansicht
Themen-Optionen

Fehlermeldung bei Parent-Zuweisung von einer array of TGroupbox

Ein Thema von GeldoderBambo · begonnen am 6. Feb 2018 · letzter Beitrag vom 8. Feb 2018
Antwort Antwort
GeldoderBambo

Registriert seit: 6. Feb 2018
2 Beiträge
 
#1

Fehlermeldung bei Parent-Zuweisung von einer array of TGroupbox

  Alt 6. Feb 2018, 21:07
Servus Leute

folgendes Problem:

Im Hauptformular (Form1) erzeuge ich per Buttonclick zur Laufzeit beliebig viele Groupboxen (array of TGroupbox) in Form6.
Delphi-Quellcode:
SetLength(Groupbox4list, i+1);
  Groupbox4list[i] := TGroupbox.Create(Form6);
  Groupbox4list[i].Parent := Form6;
  Groupbox4list[i].Top := 47;
  Groupbox4list[i].Left := 95;
  Groupbox4list[i].Height := 317;
  Groupbox4list[i].Width := 171;
  Groupbox4list[i].Caption := 'Strang ' + IntToStr(i);
  Groupbox4list[i].Anchors := [akBottom,akTop];
  Groupbox4list[i].Font.Style := [fsBold];
Funktioniert alles wunderbar.

Nun möchte ich über einen Buttonclick von Form2 aus, auf den oben erzeugten Groupboxen, nochmals Groupboxen erzeugen:
Delphi-Quellcode:
procedure TForm2.Button2Click(Sender: TObject);

begin

SetLength(Groupbox5list, Form1.i+1);
  Groupbox5list[Form1.i] := TGroupbox.Create(Form6);
  Groupbox5list[Form1.i].Parent := Form6.Groupbox4list[1];
  Groupbox5list[Form1.i].Top := 47;
  Groupbox5list[Form1.i].Left := 95;
  Groupbox5list[Form1.i].Height := 317;
  Groupbox5list[Form1.i].Width := 171;
  Groupbox5list[Form1.i].Caption := 'Strang ' + IntToStr(Form1.i);
  Groupbox5list[Form1.i].Font.Style := [fsBold];

end;
Fehlermeldung in dieser Zeile: (Groupbox5list[Form1.i].Parent := Form6.Groupbox4list[1]: "Zugriffsverletzung bei Adresse 005E600F in Modul..."

Wenn ich den Parent folgendermaßen, auf eine "statische" Groupbox ändere:
Delphi-Quellcode:
SetLength(Groupbox5list, Form1.i+1);
  Groupbox5list[Form1.i] := TGroupbox.Create(Form6);
  Groupbox5list[Form1.i].Parent := Form6.Groupbox1;
  Groupbox5list[Form1.i].Top := 47;
  Groupbox5list[Form1.i].Left := 95;
  Groupbox5list[Form1.i].Height := 317;
  Groupbox5list[Form1.i].Width := 171;
  Groupbox5list[Form1.i].Caption := 'Strang ' + IntToStr(Form1.i);
  Groupbox5list[Form1.i].Font.Style := [fsBold];
funktioniert es auch.

Außerdem funktioniert mein Vorhaben, wenn ich "Groupbox4list.Parent := Form1" anstatt "Groupbox4list.Parent := Form6" schreibe.

Ich hoffe ich habe mich halbwegs verständlich ausgedrückt
Vielen Dank schon mal für eure Mühe!



Form1 Kopf:
Delphi-Quellcode:
unit Unit1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ExtCtrls, Vcl.StdCtrls,
  System.Actions, Vcl.ActnList, Vcl.Grids;

type
  TForm1 = class(TForm)
    GroupBox1: TGroupBox;
    GroupBox2: TGroupBox;
    Button1: TButton;
    GroupBox3: TGroupBox;
    Memo1: TMemo;
    Memo2: TMemo;
    Memo3: TMemo;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Panel1: TPanel;
    GroupBox4: TGroupBox;
    GroupBox5: TGroupBox;
    ComboBox1: TComboBox;
    CheckBox1: TCheckBox;
    Memo4: TMemo;
    Memo5: TMemo;
    Memo6: TMemo;
    Label6: TLabel;
    Label7: TLabel;
    Label8: TLabel;
    Label9: TLabel;
    Label10: TLabel;
    Label11: TLabel;
    Label12: TLabel;
    Label13: TLabel;
    Label14: TLabel;
    Label15: TLabel;
    GroupBox6: TGroupBox;
    Memo7: TMemo;
    Memo8: TMemo;
    Label16: TLabel;
    Button2: TButton;
    ComboBox2: TComboBox;
    Label17: TLabel;
    Label18: TLabel;
    Panel2: TPanel;
    Label19: TLabel;
    Button4: TButton;
    Button5: TButton;
    Button8: TButton;
    Button9: TButton;
    ScrollBox1: TScrollBox;
    Button3: TButton;
    procedure FormCreate(Sender: TObject);
    procedure ComboBox1Change(Sender: TObject);
    procedure CheckBox1Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure ComboBox2Change(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure Button6Click(Sender: TObject);
    procedure Button9Click(Sender: TObject);
    procedure Button8Click(Sender: TObject);
    procedure ButtonlistClick(Sender: TObject);
    procedure Button2listClick(Sender: TObject);
    procedure PanellistClick(Sender: TObject);
    procedure Panel2listClick(Sender: TObject);
    procedure Button3Click(Sender: TObject);
  private
    { Private-Deklarationen }

  public
    { Public-Deklarationen }
    Groupbox4list:array of TGroupbox;
    Groupbox5list:array of TGroupbox;
    Button3list :array of TButton;
    panel2list :array of TPanel;
    Scrollboxlist :array of TScrollbox;

    function Spitzendurchfluss (x, y, z, VR: real) : real;
    var x, y, z, VR, VS :real;
    i,p :integer;
    Memozahl : Integer;

  end;

  type
  TGebäudetyp = record
      Bezeichnung : string;
      consta : real;
      constb : real;
      constc : real;

  end;

  TEntnahmestelle = record
    Bezeichnung: string;
    Nennweite: integer;
    Mindestfließdruck: real;
    Berechnungsdurchfluss: real;
    PWH : boolean;
  end;



var
  Form1: TForm1;
  Gebäudeliste : TGebäudeliste;
  Gebäudetyp : TGebäudetyp;
  Entnahmeliste : TEntnahmeliste;
  Entnahmestelle : TEntnahmestelle;
  j :integer;



implementation


uses Math, Unit2, Unit3, Unit4, Unit5, Unit6, Unit7;
{$R *.dfm}

Form6 Kopf:
Delphi-Quellcode:
unit Unit6;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ExtCtrls, Vcl.StdCtrls;

type
  TForm6 = class(TForm)
    Panel1: TPanel;
    Panel2: TPanel;
    Button1: TButton;
    Button2: TButton;
    GroupBox2: TGroupBox;
    Panel5: TPanel;
    Label19: TLabel;
  private

    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  //Stränge Eingabe Form 6
  Groupbox4list :array of TGroupbox;
  Scrollboxlist :array of TScrollbox;
  Groupbox5list :array of TGroupbox;
  Button3list :array of TButton;
  //Panel Stränge für Auswahl
  panel2list :array of TPanel;
  end;

var
  Form6: TForm6;

implementation

{$R *.dfm}

uses Unit1, Unit5, unit2;
  Mit Zitat antworten Zitat
Redeemer

Registriert seit: 19. Jan 2009
Ort: Kirchlinteln (LK Verden)
1.053 Beiträge
 
Delphi 2009 Professional
 
#2

AW: Fehlermeldung bei Parent-Zuweisung von einer array of TGroupbox

  Alt 6. Feb 2018, 22:48
Alles, was nicht String im Namen hat, beginnt bei 0. Wenn dein Array 1 Element hat, gibt es kein Element 1.
Janni
2005 PE, 2009 PA, XE2 PA
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Fehlermeldung bei Parent-Zuweisung von einer array of TGroupbox

  Alt 6. Feb 2018, 23:27
Hallo,
was ein Durcheinander.
Warum haben die Variablen keine anständigen Namen (was ist denn Form1, GroupBox4).

Vielleicht ist das aber Deine Strategie eines Minimal-Beispiels. Dann wäre da 100.% richtig!

Poste mal bitte ein Minimalbeispiel, was deinen Fehler genau erzeugt
(Zip-Datei mit allen Dateien (außer natürlich der Exe-Datei selbst).
Heiko
  Mit Zitat antworten Zitat
hsg

Registriert seit: 24. Apr 2006
Ort: Wustermark
354 Beiträge
 
Delphi 10.3 Rio
 
#4

AW: Fehlermeldung bei Parent-Zuweisung von einer array of TGroupbox

  Alt 7. Feb 2018, 08:14
Wenn ich das Chaos richtig überblickt habe, erzeugst du die GroupBox-Liste auf der Form1 und nicht auf Form6, daher ist das Array in Form6 nicht gefüllt => Zugriffsfehler.

Kann mich aber nur hoika anschließen: bei den vielen Namensgleichheiten kommt jeder Entwickler ja ins Schleudern.
  Mit Zitat antworten Zitat
freimatz

Registriert seit: 20. Mai 2010
1.445 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Fehlermeldung bei Parent-Zuweisung von einer array of TGroupbox

  Alt 7. Feb 2018, 10:14
Außerdem: Bei solchen Fällen wie
Zitat:
Fehlermeldung in dieser Zeile: (Groupbox5list[Form1.i].Parent := Form6.Groupbox4list[1]: "Zugriffsverletzung bei Adresse 005E600F in Modul..."
1. zuerst einmal die Zeile in einfachere Zeilen zerlegen, also z.B. "Form6.Groupbox4list[1]" erstmal einer einfachen lokalen Variablen zuweisen
2. Debuggen
  Mit Zitat antworten Zitat
GeldoderBambo

Registriert seit: 6. Feb 2018
2 Beiträge
 
#6

AW: Fehlermeldung bei Parent-Zuweisung von einer array of TGroupbox

  Alt 7. Feb 2018, 14:18
Erstmal vielen vielen Dank für Eure schnellen Antworten. Echt Super!

Meine nicht vorhandene Struktur ist echt eine Katastrophe, ich weiß. Werde in Zukunft versuchen das zu verbessern.


Habe jetzt mal ein Minimal Beispiel hochgeladen, wo ich das selbe Problem erzeuge.

Eventuell hat hsg ja schon das Problem erkannt. Allerdings wüsste ich dann immer noch nicht wie ich das lösen sollte .

Beste Grüße
Angehängte Dateien
Dateityp: rar Beispiel.rar (2,07 MB, 0x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von Olli73
Olli73

Registriert seit: 25. Apr 2008
Ort: Neunkirchen
741 Beiträge
 
#7

AW: Fehlermeldung bei Parent-Zuweisung von einer array of TGroupbox

  Alt 7. Feb 2018, 14:31
Eventuell hat hsg ja schon das Problem erkannt. Allerdings wüsste ich dann immer noch nicht wie ich das lösen sollte .
Indem du beim Erstellen der ersten Groupbox(en) in Form1 Form6.Groupbox4list[1]; anstatt Groupbox4list[1]; benutzt.
  Mit Zitat antworten Zitat
sko1

Registriert seit: 27. Jan 2017
588 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#8

AW: Fehlermeldung bei Parent-Zuweisung von einer array of TGroupbox

  Alt 8. Feb 2018, 07:12
.. oder die Groupbox-Arrays global deklarieren in einer eigenen unit, die allen Forms bekannt gemacht wird...

Ciao
Stefan
  Mit Zitat antworten Zitat
Antwort Antwort


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 08: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