Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Steuerelementearray (https://www.delphipraxis.net/11701-steuerelementearray.html)

Tyrael Y. 12. Nov 2003 10:35

Re: Steuerelementearray
 
naja muss jeder selbst wissen wie er das machen möchte,
ich mach das mit dem Typcast und gebe auch den Speicher selbst wieder frei
mann muß halt wissen was man da macht

gruß
tyrael

Tyrael Y. 12. Nov 2003 10:53

Re: Steuerelementearray
 
wegn der übersichtlichkeit empfehle ich dir aber
in diesem Fall doch array of TButton zu nutzen

mirko2000 12. Nov 2003 12:56

Re: Steuerelementearray
 
Ich hab bis jetzt mal den Quellcode zusammengestellt:

Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var meinObjekt:TButton;
var i : integer;
const max : integer = 5;
begin
  for i := 0 to max do
  begin
      meinObjekt := TButton.Create;  // *
      einArray[i] := meinObjekt;
  end;
end;
*= in dieser Zeile fehlt wohl ein Paramteter: "AOwner: TComponent"

Wenn ich aber das Programm laufen lassen will kommt die Meldung:

Code:
[Fehler] Unit1.pas(41): Nicht genügend wirkliche Parameter
[Fataler Fehler] Project1.dpr(5): Verwendete Unit 'Unit1.pas' kann nicht compiliert werden
Was mach ich denn falsch?

Tyrael Y. 12. Nov 2003 12:59

Re: Steuerelementearray
 
so ist es richtig:
Delphi-Quellcode:
meinObjekt := TButton.Create(nil);


ist das array überhaupt deklariert?

Sharky 12. Nov 2003 13:03

Re: Steuerelementearray
 
Hai mirko2000,

setze als Owner z.B. self.

Delphi-Quellcode:
  meinObjekt := TButton.Create(self);  // *

mirko2000 12. Nov 2003 13:07

Re: Steuerelementearray
 
Zitat:

Zitat von Tyrael Y.
ist das array überhaupt deklariert?

Ich hab noch folgendes global deklariert:

var
einArray : array of TButton;

Ist es das was du meinst?



Wenn ich als Parameter 'self' oder 'nil' übergebe kommt diese Meldung:

Code:
Im Projekt Project1.exe ist eine Exception der Klasse EAccessViolation aufgetreten. Meldung: 'Zugriffsverletzung bei Adresse 0044D9F3 in Modul 'Project1.exe'. Schreiben von Adresse 00000000'. Prozess wurde angehalten. Mit Einzelne Anweisung oder Start fotsetzen.

Tyrael Y. 12. Nov 2003 13:10

Re: Steuerelementearray
 
1.
Zitat:

Hai mirko2000,

setze als Owner z.B. self.

Source:

meinObjekt := TButton.Create(self);
2.
Zitat:

so ist es richtig:
Source:

meinObjekt := TButton.Create(nil);

beide Versionen sind richtig.
Unterschied:

bei 1. die übergeordnete Komponente ist der parent
wenn der parent gefreet wird ist auch dein Objekt frei

bei 2. du musst das objekt selber befreien (Objekt.free), da
es keinen parent hat

Sharky 12. Nov 2003 13:10

Re: Steuerelementearray
 
Hai mirko2000,


Zitat:

Zitat von mirko2000
var
einArray : array of TButton;

Das ist ein Dynamisches Array dem Du mit SetLength noch ein Größe geben musst.

Tyrael Y. 12. Nov 2003 13:14

Re: Steuerelementearray
 
jop :)

zb.

Delphi-Quellcode:
setlength(einArray, max);

mirko2000 12. Nov 2003 13:34

Re: Steuerelementearray
 
Yuhuu! Es kommen jetzt zumindest keine Fehlermeldungen mehr!

Delphi-Quellcode:
var
  Form1: TForm1;
  einArray : array of TButton;
implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
var meinObjekt:TButton;
var i : integer;
begin

  SetLength(einArray,9);

  for i := 0 to 8 do
  begin
      meinObjekt := TButton.Create(self);
      einArray[i] := meinObjekt;
  end;

end;

end.
Jetzt hab ich da noch eine (blöde) Frage: Ich hab ja jetzt in meinem Fall 9 TButtons mit den Namen einArray[0 bis 8] erstellt. Wie kann ich die denn jetzt auf meinem Formular anzeigen lassen?


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:13 Uhr.
Seite 2 von 3     12 3      

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