![]() |
Re: Code aus Button in andere unit auslagern
Zitat:
1. auch
Delphi-Quellcode:
heißen, wenn auch button ein erdenklich schlecher Namen einer Methode ist und
procedure TForm1.FormCreate(Sender: TObject);
begin Button1.onClick := c1.Button; end; 2. die entsprechende Klasse samt Methode deklariert sein. |
Re: Code aus Button in andere unit auslagern
Zitat:
wie hier z.B.
Delphi-Quellcode:
was du noch weglassen kannst, musst schauen, weiß ich etz net auswendig
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Dialogs, System.ComponentModel, Borland.Vcl.StdCtrls; |
Re: Code aus Button in andere unit auslagern
Zitat:
Delphi-Quellcode:
{$I einzubindendeDatei.inc}
|
Re: Code aus Button in andere unit auslagern
Hallo,
DANKE AN ALLE, jetzt weiss ich, wie das Prinzip funktioniert! Viele Grüsse, moperswings |
Re: Code aus Button in andere unit auslagern
Nachfrage:
Ein Problem ist mir unangenehm aufgefallen, was ich Aufgrund meines einfaches Beispiels gar nicht gemerkt habe. Vor jede Komponente muss man - wenn sie denn so heißt - Form1. davorschreiben! Gibt es da nicht noch eine Möglichkeit, die Form1 so in die unit einzubinden, dass sie für alle Komponenten des Formulars gültig ist? Viele Grüsse, moperswings |
Re: Code aus Button in andere unit auslagern
Form1 musst du nur davor schreiben wenn du explzit diese Instanz ansprechen willst. Wenn ein Member von (in deinem Fall) TForm1 angesprochen werden soll braucht man das nicht davor schreiben. Wenn du aber außerhalb der Klasse auf eine Variable, Member, etc. zugreifen willst muss logicher Weise die Instanz benannt sein da sonst nicht eindeutig ist welche Instanz von TForm1 du ansprechen willst.
|
Re: Code aus Button in andere unit auslagern
IMHO musst du immer das Form1. davor schreiben, weil du ja in jeder Unit z.B.
ein Edit1 oder einen Button1 haben kannst, und sonst Delphi das ja net referenzieren kann |
Re: Code aus Button in andere unit auslagern
Ok, dann bedanke ich mich nochmal bei Dir Michael80 für das gute Beispiel.
Das wird bestimmt auch noch einmal anderen Nutzern helfen. Vielen Dank und Grüsse! |
Re: Code aus Button in andere unit auslagern
Hallo,
findet ihr diese Vorgehenweise wirklich gut? Wenn diese ButtonClick-Routine sehr groß ist (viele Zeilen enthält), würde ich vielleicht diese Befehle in eine Prozedur auslagern und diese dann in eine andere Unit schreiben. Die Anspielung auf den Zugriff auf Form1 lässt ja nur den Schluss zu, dass hier ein Zirkelschluss über die Units gemacht wird. Also mal ehrlich, ich finde diese Hinweise nicht sehr sinnvoll. Klar kann man so programmieren. Aber sauber ist das nicht, hier wird gar keine ordentliche Schnittstelle zwischen den Units definiert. Wenn ein Zugriff auf die Elemente eines Formulars von nöten ist und eine logische Trennung zwischen den Elementen auf dem Formular realisiert werden soll, weil die Logik die da hintersteckt sehr aufwendig und lang ist. Dann würde ich zumindest mal erwähnen, das es auch Frames gibt. Gruss Thorsten |
Re: Code aus Button in andere unit auslagern
Zitat:
Delphi-Quellcode:
Bei diesem Beispiel wurde das Formular 2 mal erzeugt aber jeweils anderen Instanzzeigern zugewiesen. In diesem Fall wäre jetzt ohne "Form1." nicht herleitbar welches der beiden gleichaussehenden Formularinstanzen gemeint ist.
Form1 := TForm1.Create(nil);
Form2 := TForm1.Create(nil); Allerdings zeigt dies auch das es nicht empfehlenswert ist über die Instanzvariable zu gehen sondern man sollte Objectorientiert arbeiten. Alles was zu diesem Object gehört sollte auch in einer Methode des Objectes sein und nicht in einer globalen Funktion oder dergleichen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:19 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz