Hi Guido,
Leider habe ich Dein Beispiel auch nicht zum Laufen bekommen.
Ich habe ein neues Prejekt erzeugt. Auf die Form habe ich dann
ein Objekt „Label1“ gebracht. Danach habe ich das Beispiel 1:1
in die Unit1 kopiert. Beim kompilieren bekomme ich keinen
Fehler. Wenn ich den Programmcode richtig verstanden habe,
müßte nach dem Start des Programms ein Zähler hochlaufen.
Ja!
Das geschieht aber nicht. Auf dem Formular bleibt die Schrift
„Label1“ stehen. Muß ich villeicht noch eine Umgebungsvariable
setzen?
nein, nein, mit Umgebungsvariablen hat das gar nichts zu tun - der Grund liegt woanders. Wenn Du so vorgehst, wie Du es beschrieben hast, dann stehen zwar in der Unit „Unit1“ schön brav die Prozeduren „TForm1.Create“ und „TForm1.Destroy“, aber die werden gar nicht durchlaufen, weil die Prozedurzeiger „OnCreate“ und „OnDestroy“ des Formulars „Form1“ nicht belegt sind. Als ich das Beispiel zusammengehackt habe, habe ich diese beiden Prozeduren wie üblich mit je einem Doppelklick in die Felder namens „Create“ und „Destroy“ im Objektinspektor (Registertab „Ereignisse“, rechte Spalte) erzeugt. Deshalb sind bei mir dort dann automatisch die Einträge „FormCreate“ und „FormDestroy“ erzeugt worden, wohingegen sie bei Dir fehlen.
Du mußt also die Verknüpfungen zu FormCreate und FormDestroy einfach noch nachträglich im Objektinspektor eintragen. Also: Formular anklicken, im Objektinspektor auf Registertab „Ereignisse“ gehen, bei „Create“ rechts klicken (wird weiß), Box runterklappen und „FormCreate“ unter den dreien auswählen. Dieselbe Aktion wiederholen für „Destroy“ (diesen Zeiger auf „FormDestroy“ setzen). Jetzt kannst Du den Zähler bestaunen
.
Beim Quelltext-Kopieren in Delphi muß man eigentlich immer (auch) mit solchen Problemen rechnen - das ist ganz normal und kein Grund zur Panik. Wenn Dir noch was unklar ist, dann frag mich ruhig.
Bye
Martin
PS: Wenn Du das Proggi zum Laufen gekriegt hast, und noch Lust zum experimentieren hast, dann versuch mal dies. Ergänze das Formular „Form1“ um die Prozedur (Achtung: auch in Formuladeklaration eintragen!)
PROCEDURE TForm1.ZaehlerReset(Sender: TObject);
begin
k := 0;
end;
…und belege z. B. den Zeiger „OnClick“ von Form1 mit dieser Prozedur, indem Du so wie oben vorgehst. Jeder Mausklick auf das Formular (zur Laufzeit) läßt dann den Zähler zurückspringen.
Alternativ kannst Du auch einen Button ins Formular setzen und dessen OnClick-Zeiger auf „ZaehlerReset“ setzen… Dem Erfindungsreichtum sind hier keine Grenzen gesetzt, wie Du siehst
.