AGB  ·  Datenschutz  ·  Impressum  







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

Code aus Button in andere unit auslagern

Ein Thema von moperswings · begonnen am 29. Jan 2007 · letzter Beitrag vom 30. Jan 2007
Antwort Antwort
Seite 2 von 3     12 3      
mkinzler
(Moderator)

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

Re: Code aus Button in andere unit auslagern

  Alt 29. Jan 2007, 10:49
Zitat von moperswings:
In unit2 sieht es so aus:
Delphi-Quellcode:
procedure cl.Button(Sender: TObject);
begin
    Form1.Color := clred;
end;
Fehlermeldung:
Bei der procedure ; erwartet aber , gefunden
Form1 und clred sind undefinierte Bezeichner
Unit1 gibt keine Fehlermeldung zurück
Dann muß es
1. auch
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
  begin
      Button1.onClick := c1.Button;
  end;
heißen, wenn auch button ein erdenklich schlecher Namen einer Methode ist und
2. die entsprechende Klasse samt Methode deklariert sein.
Markus Kinzler
  Mit Zitat antworten Zitat
Michael80

Registriert seit: 20. Nov 2003
Ort: Treuchtlingen
72 Beiträge
 
Delphi 10.3 Rio
 
#12

Re: Code aus Button in andere unit auslagern

  Alt 29. Jan 2007, 11:05
Zitat von moperswings:
In unit2 sieht es so aus:
Delphi-Quellcode:
procedure cl.Button(Sender: TObject);
begin
    Form1.Color := clred;
end;
Fehlermeldung:
Bei der procedure ; erwartet aber , gefunden
Form1 und clred sind undefinierte Bezeichner
Unit1 gibt keine Fehlermeldung zurück
Du musst auch in der neuen Unit2 die ganzen sachen Deklarieren

wie hier z.B.

Delphi-Quellcode:
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls,
  Dialogs, System.ComponentModel, Borland.Vcl.StdCtrls;
was du noch weglassen kannst, musst schauen, weiß ich etz net auswendig
Wer kämpft kann verlieren, wer nicht kämpft hat schon verloren
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#13

Re: Code aus Button in andere unit auslagern

  Alt 29. Jan 2007, 11:29
Zitat von Masterof:
Hallo!

meines Wissens nach musst du in deiner Funktion "Buttonclick" eine andere Funktion in aufrufen, und die entsprechenden Parameter übergeben.
Das es sowas wie "include" gibt ist mir nicht bekannt, weil du die Units ja oben im Kopf einbindest.

Gruß Master
Sowas wie Include gibt es auch unter Delphi
{$I einzubindendeDatei.inc}
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
moperswings

Registriert seit: 27. Mai 2004
Ort: Bad Sooden-Allendorf
240 Beiträge
 
Delphi 6 Professional
 
#14

Re: Code aus Button in andere unit auslagern

  Alt 29. Jan 2007, 13:15
Hallo,

DANKE AN ALLE, jetzt weiss ich, wie das Prinzip funktioniert!

Viele Grüsse, moperswings
  Mit Zitat antworten Zitat
moperswings

Registriert seit: 27. Mai 2004
Ort: Bad Sooden-Allendorf
240 Beiträge
 
Delphi 6 Professional
 
#15

Re: Code aus Button in andere unit auslagern

  Alt 29. Jan 2007, 14:29
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
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#16

Re: Code aus Button in andere unit auslagern

  Alt 29. Jan 2007, 14:36
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.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Michael80

Registriert seit: 20. Nov 2003
Ort: Treuchtlingen
72 Beiträge
 
Delphi 10.3 Rio
 
#17

Re: Code aus Button in andere unit auslagern

  Alt 29. Jan 2007, 14:38
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
Wer kämpft kann verlieren, wer nicht kämpft hat schon verloren
  Mit Zitat antworten Zitat
moperswings

Registriert seit: 27. Mai 2004
Ort: Bad Sooden-Allendorf
240 Beiträge
 
Delphi 6 Professional
 
#18

Re: Code aus Button in andere unit auslagern

  Alt 29. Jan 2007, 14:59
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!
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#19

Re: Code aus Button in andere unit auslagern

  Alt 29. Jan 2007, 15:17
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
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#20

Re: Code aus Button in andere unit auslagern

  Alt 29. Jan 2007, 15:22
Zitat von Michael80:
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
Das ist so nicht korrekt. Grund ist das von der Klasse mehrere Referenzen existieren können:
Delphi-Quellcode:
Form1 := TForm1.Create(nil);
Form2 := TForm1.Create(nil);
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.
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.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 04:03 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