ich habe eine kleine Testapplikation, fürs erste mit einer GUI-Form ich nenn sie mal "Main-Form", also das Standardding, das vom IDE erzeugt wird. Ein kleiner Timer mit einem Button "Start/Stop", je nachdem ob der Timer läuft oder nicht, wird er mit dem gestartet oder gestoppt. Das bekommt man ja ganz gut mit Tutorials hin, deswegen habe ich mich entscheiden langsam am praktischen Beispiel voranzuhangeln, bevor ich anfange erst ewig Bücher mit Grundlagen zu wälzen (da kann man sich sicher über die Sinnhaftigkeit streiten).
Jetzt bin ich auf ein bisschen Erfahrung angewiesen, denn jetzt möchte eine Abstraktionstufe erstellen und GUI und Funktionalität von einander kapseln. Spich die reguläre Procedur "Button1Click" soll sich nur noch um die GUI Operationen kümmern (Farbe des Knopfs ändern etc.) die eigentliche Funktionalität möchte ich unabhängig verwalten, also Startzeit, Endzeit, Zusätzliche binäre Flag ob der Timer läuft etc.
Meine jetztiger (einfacher) Plan sieht so aus, dass ich die Unit, in der auch die Main-Form steckt, mit Globlen Konstanten/Varialen sowie Prozeduren für StopTimer, StartTimer etc. versehe um möglichst wenig zusätzliche Overhead zu erzeugen. Hierzu hab ich schon mal eine zusätzliche Prozedur (procedure TimerStarten) in der GUI-Form Unit (zw. "implementation" und den Prozeduren der Objekte auf der Form) erstellt, die beim Buttonclick aufgerufen wird. Weil ich die Variabeln in meiner Unwissenheit im Publicteil der Form deklariert habe, muss ich sie in meiner neuen Prozedur mit form1.variableXY bezeichnen, das ist finde ich unschön.
Daher meine erste Frage:
Wohin kann ich die Variabendeklaration erstmal irgendwohin verschieben, damit sie von den GUI-Elemten-Prozeduren als auch von meiner mit der gleichen Bezeichnung aufgerufen werden können? Oder kann ich die Prozedur irgendwie entsprechend deklarieren? Da gibts sicher mehrere Möglichkeiten, die einen mit mehr, die anderen mit weniger Overhead, mich interessiert erstmal die "einfachste" Möglichkeit (vgl. Frage 2). Am "schönsten" wäre natürlich, ich kann sie irgendwo/wie in der Unit entsprechend deklarieren, aber da ich das nicht finden konnte, wirds wohl auch nicht gehen, entspricht ja auch nicht dem OO-Konzept.
Meine zweite Frage:
Wenn ich das ganze in einem zweiten Schritt wirklich sauber machen möchte, wäre es sinnvoller die Funktions-Prozeduren in einer eigenen Klassen z.B. "Timer" zu definieren? Insbesondere im Hinblick auf weiteres Wachstum des Programms z.B. Verwendung von unterschiedlichen Forms, die auf diese Funktions-Prozedur zugreifen etc.? Sollte ich das dann auch in eine eigene Unit schreiben? Vermutlich gibts hier auch wieder mehrer Möglichkeiten mit jeweiligen Vor/Nachteilen...
Zu meinem Hintergrund: Ich hab zwar grundsätzlich Ahnung von Programmierung, hab aber ausser diversen Skriptsprachen schon ewig nicht mehr programmiert, würde mich über ein bisschen "Sänfte" freuen

Danke, Albin