Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Prozedur Global erstellen (https://www.delphipraxis.net/69878-prozedur-global-erstellen.html)

programmierer 21. Mai 2006 17:36


Prozedur Global erstellen
 
Tach Leuz.
Ich möchte eine Prozedur erstellen, die mein Array in eine Listbox schreibt. Diese Prozedur soll allerdings durch mehrere Möglichkeiten aufgerufen werden. (z.B. nach dem Öffnen einer Date, oder nachdem das Array geändert wurde).
Mein Problem ist jetzt, dass Delphi meckert, wenn ich die Prozedur einzeln schreibe (die Listbox ist dann ein "Undefinierter Bezeichner"). Wenn ich sie in den Vereinbarungsteil eines Buttons schreibe, dann geht alles klar.

Hier die Prozedur, um die es geht:
Delphi-Quellcode:
   //Ausgabe des Kategorie-Arrays in Listbox
   procedure ausgabe_kategorien();
    var i:integer;
   begin
    category.Items.Clear; //category ist die ListBox
    for i:=0 to high(kategorien) do category.Items.add(kategorien[i]); //Kategorien ist das Array
   end;
Ich hoffe, ich habe mein Problem verständlich geschildert und ihr könnt mir bei der Lösung helfen!

mkinzler 21. Mai 2006 17:41

Re: Prozedur Global erstellen
 
In diesem Fall wäre es sinnvoll der Prozedur eine Referenz auf die ListBox zu übergeben.

leddl 21. Mai 2006 18:02

Re: Prozedur Global erstellen
 
Zitat:

Zitat von programmierer
Tach Leuz.
Mein Problem ist jetzt, dass Delphi meckert, wenn ich die Prozedur einzeln schreibe (die Listbox ist dann ein "Undefinierter Bezeichner"). Wenn ich sie in den Vereinbarungsteil eines Buttons schreibe, dann geht alles klar.

Ist ja auch kein Wunder. Im ersten Fall hast du eine "Stand-alone"-Methode, die (außer, daß sie in derselben Unit sitzt) überhaupt nichts mit der Form und den darin befindlichen Komponenten zu tun hat. Natürlich ist dann die ListBox nicht bekannt.
Die ButtonClick-Methode ist eine Methode deiner Form und "kennt" daher auch alle Komponenten deiner Form.
Daher gibt es 2 Möglichkeiten:
Entweder, du implementierst deine Methode als Methode der Form, oder du übergibst ihr - wie mkinzler es schon vorgeschlagen hat - als Parameter eine ListBox, auf die du dann innerhalb der Methode zugreifst. Da nur ein Zeiger übergeben wird, wirken sich alle Änderungen auch auf die eigentliche ListBox aus.

Die zweite Methode ist meiner Meinung nach auf jeden Fall vorzuziehen ;)

programmierer 21. Mai 2006 19:00

Re: Prozedur Global erstellen
 
Danke Leute... ich habs jetzt hinbekommn. Es funktioniert alles bestens.
hier meine Lösung:

Delphi-Quellcode:
   //Ausgabe des Kategorie-Arrays in Listbox
   procedure TForm1.ausgabe_kategorien;
    var i:integer;
   begin
    category.Items.Clear; //category ist die ListBox
    for i:=0 to high(kategorien) do category.Items.add(kategorien[i]); //Kategorien ist das Array
   end;
Und bei type:
Delphi-Quellcode:
type
 procedure ausgabe_kategorien();


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:53 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