AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Prozedur Global erstellen

Ein Thema von programmierer · begonnen am 21. Mai 2006 · letzter Beitrag vom 21. Mai 2006
Antwort Antwort
Benutzerbild von programmierer
programmierer

Registriert seit: 27. Jan 2006
Ort: Dresden
18 Beiträge
 
Delphi 2005 Personal
 
#1

Prozedur Global erstellen

  Alt 21. Mai 2006, 17:36
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!
Stanley F.
Wenn alles gut zu gehen scheint, hast Du sicher etwas vergessen.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: Prozedur Global erstellen

  Alt 21. Mai 2006, 17:41
In diesem Fall wäre es sinnvoll der Prozedur eine Referenz auf die ListBox zu übergeben.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von leddl
leddl

Registriert seit: 13. Okt 2003
Ort: Künzelsau
1.613 Beiträge
 
Delphi 2006 Professional
 
#3

Re: Prozedur Global erstellen

  Alt 21. Mai 2006, 18:02
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
Axel Sefranek
A programmer started to cuss, cause getting to sleep was a fuss.
As he lay there in bed, looping round in his head
was: while(!asleep()) ++sheep;
  Mit Zitat antworten Zitat
Benutzerbild von programmierer
programmierer

Registriert seit: 27. Jan 2006
Ort: Dresden
18 Beiträge
 
Delphi 2005 Personal
 
#4

Re: Prozedur Global erstellen

  Alt 21. Mai 2006, 19:00
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();
Stanley F.
Wenn alles gut zu gehen scheint, hast Du sicher etwas vergessen.
  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 22:39 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