AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Komponenten zur Laufzeit erzeugen -> bringt Fehler
Thema durchsuchen
Ansicht
Themen-Optionen

Komponenten zur Laufzeit erzeugen -> bringt Fehler

Ein Thema von schuetzejanett · begonnen am 5. Apr 2006 · letzter Beitrag vom 5. Apr 2006
Antwort Antwort
schuetzejanett

Registriert seit: 5. Apr 2006
Ort: Fraureuth
62 Beiträge
 
#1

Komponenten zur Laufzeit erzeugen -> bringt Fehler

  Alt 5. Apr 2006, 21:56
Hallo,

ich will auf meinem Formular eine erst zur Laufzeit vorgegebene anzahl von Panel und Listboxen erzeugen

Die panel funktionieren auch und die Listboxen auch aber wenn ich díe Listboxes Zeilen oder Text hinzufügen kommt beim ausführen der Fehler:

Im Projekt Dart.exe ist eine Exception der Klasse EInvalit Operation aufgetreten. Meldung: Element hat kein übergeordnetes Fenster.
Prozess wurde angehalten. Fortsetzen mit Einzelne Anweisung oder Start.

Wo liegt mein Fehler die Felder name und Punkte von i haben einen inhalt das habe ich schon überprüft.

Delphi-Quellcode:
procedure TTpunkt.FormShow(Sender: TObject);

var i :integer;
  AName : array of TPanel;
  APunkte : array of Tmemo;
begin

 setlength(Aname,unit1.anz);
 For i :=0 to High(Aname) do
    begin
      AName[i] := TPanel.Create(self);
      with AName[i] do
        begin
          Caption :=aspieler[i].name;
          Height := 17;
          Top := 80;
          Width := 85;
          Left := 15 + (i * 90);
          parent := self;
        end;
    end;
 setlength(APunkte,unit1.anz);
 For i :=0 to High(APunkte) do
    begin
      APunkte[i] := TListbox.Create(self);
      with APunkte[i] do
        begin
          Items.add (inttostr(aspieler[i].punkte[0]));
          Height := 320;
          Top := 105;
          Width := 85;
          Left := 15 + (i * 90);
          parent := self;
        end;
    end;
end;
könnt ihr mir sagen wo mein fehler liegt oder wie ich die Komponenten anders erzeugen kann so das es funktioniert
  Mit Zitat antworten Zitat
schuetzejanett

Registriert seit: 5. Apr 2006
Ort: Fraureuth
62 Beiträge
 
#2

Re: Komponenten zur Laufzeit erzeugen -> bringt Fehler

  Alt 5. Apr 2006, 22:02
Hallo,

in der arraydefinition soll das Array of Tlistbox heißen , das hab ich beim reinschreiben ins forum übersehen.

Also bitte helft mir das Programm soll ein geschenk werden und istlangsam wirklich dringend
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: Komponenten zur Laufzeit erzeugen -> bringt Fehler

  Alt 5. Apr 2006, 22:03
Du hast APunkte als Array von TMemo deklarierst, erzeugst aber TliszBoxes, die du in diesen Array ablegst?
[edit: Okay hast dich verschrieben]
Markus Kinzler
  Mit Zitat antworten Zitat
Flare

Registriert seit: 26. Jan 2006
Ort: Leipzig
529 Beiträge
 
Delphi 7 Professional
 
#4

Re: Komponenten zur Laufzeit erzeugen -> bringt Fehler

  Alt 5. Apr 2006, 22:05
Wenn du Self als Parent angibt ... dann weiß ich leider nicht was passiert...
Setze Parent lieber auf TTpunkt, damit sich das Ding dann auch auf der Form befindet.


Flare
Willy Scheibel
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#5

Re: Komponenten zur Laufzeit erzeugen -> bringt Fehler

  Alt 5. Apr 2006, 22:05
Herzlich willkommen in der Delphi-PRAXiS, schuetzejanett.

Bevor du die ListBox befüllen kannst, muss du die Eigenschaft Parent gesetzt haben.

Freundliche Grüße vom marabu
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: Komponenten zur Laufzeit erzeugen -> bringt Fehler

  Alt 5. Apr 2006, 22:10
Ich würde das Gabze nicht im Show-Event abhandeln, da dieser u.U. öfters ausgelöst wird und dann jedesmal neue Komponeneten erzeugt werden.
Markus Kinzler
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#7

Re: Komponenten zur Laufzeit erzeugen -> bringt Fehler

  Alt 5. Apr 2006, 22:35
@Flare
TTpunkt ist eine Klasse und kann nicht als Parent dienen
Du meinst sicher das Formular. Genau das benutzt er aber als Parent, da sich der Code in einer Methode des Formulars befindet.

@schuetzejanett
Du legst die Referenzen auf die neuen Controls in den lokalen Variablen AName und APunkte ab. Wann und wie greifst Du später auf die Controls zu? Außerhalb der Methode FormShow hast Du doch keine direkten Referenzen mehr.

Noch ein Tip(p): Du könntest die Methode SetBounds einsetzen, um Position und Höhe eines Controls zu setzen:

Delphi-Quellcode:
with AName[i] do
  begin
    Caption :=aspieler[i].name;
    SetBounds (15 + (i * 90), 80, 85, 17);
    parent := self;
  end;
Gruß Hawkeye
  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 23:37 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