Wie allgemeine Procedure in Ereignisprocedure verwenden

Für alles, was in den übrigen Lazarusthemen keinen Platz, aber mit Lazarus zutun hat.
Antworten
M.Huck
Beiträge: 1
Registriert: Sa 23. Feb 2008, 10:59
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Bad Oeynhausen

Wie allgemeine Procedure in Ereignisprocedure verwenden

Beitrag von M.Huck »

Hallo, ich bin Neuling bei Lazarus.

Ich habe ein einfaches Programm zum Üben des Einmaleins (1x1) angefangen.
Das Gestalten der Oberfläche und das Schreiben der ersten Ereignisproceduren waren kein Problem.
Nicht lösen konnte ich Folgendes:
Ich möchte in mehren Ereignisprozeduren die gleichen Anweisungen ausführen. Daher habe ich diese Anweisungen in eine Procedure "AufgabeStellen" gepackt. In dieser Procedure "AufgabeStellen" werden einige Formularobjekte angesprochen und verändert.

Wo muss ich diese allgemeine Procedure "AufgabeStellen" plazieren, damit ich innerhalb der anderen Ereignisproceduren darauf zugreifen kann?

Das komplette Projekt habe ich als zip-Datei beigefügt. Die fragliche Procedure "AufgabeStellen" steht zur Zeit am Ende und wird zweimal in der Procedure "TForm1.buSteuerungClick" aufgerufen.
Wer nur einen Blick auf den Formular-Code werfen will, schaut in nur in "main.txt"

Michael
Dateianhänge
EinMalEins.zip
(604.68 KiB) 52-mal heruntergeladen
main.pas
(1.97 KiB) 43-mal heruntergeladen

monta
Lazarusforum e. V.
Beiträge: 2809
Registriert: Sa 9. Sep 2006, 18:05
OS, Lazarus, FPC: Linux (L trunk FPC trunk)
CPU-Target: 64Bit
Wohnort: Dresden
Kontaktdaten:

Beitrag von monta »

Es gibt mehrere Möglichkeiten, ich würde es wie folgt ändern. Damit unterstellst du die Function dem Form1 und kannst sie innerhalb dieser Unit überall nutzen:

Code: Alles auswählen

procedure buSteuerungClick ( Sender : TObject ) ;
    procedure TimerTimer ( Sender : TObject ) ;
  private
    procedure AufgabeStellen;
    { private declarations }
  public
    { public declarations }
  end;

Code: Alles auswählen

procedure TForm1.AufgabeStellen;
var
   Faktor1, Faktor2 : Integer;
begin
     Faktor1 := Random(9);
     Faktor2 := Random(9);
     txAufgabe.Text := IntToStr(Faktor1) + ' x ' + IntToStr(Faktor2)
end;
//PS. hab mal die Exe gestrippt und deinen Anhang etwas verkleinert.
Johannes

Antworten