AGB  ·  Datenschutz  ·  Impressum  







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

1 Formular auf mehrere Units verteilen

Offene Frage von "matthes"
Ein Thema von matthes · begonnen am 26. Nov 2006 · letzter Beitrag vom 26. Nov 2006
Antwort Antwort
matthes

Registriert seit: 20. Jun 2006
14 Beiträge
 
Delphi 2005 Personal
 
#1

1 Formular auf mehrere Units verteilen

  Alt 26. Nov 2006, 13:50
Moin,

Ich möchte ein Formular mit zugehöriger Unit, die langsam etwas unübersichtlich wird, in mehrere Units aufteilen.

Ich nehme mal als Beispiel ein Tab-Control mit mehreren Registern in Form0 mit Unit0.
Nun soll das Ereignis für Button.OnClick in Register1 in Unit1 geschrieben werden und bei Button.OnClick in Register2 soll dieses in die Unit2.


Man könnte es wahrscheinlich so machen, dass man das OnClick-Ereignis in Unit0 deklariert, in der Procedure Form0.Click dann auf eine Procedure in Unit1 oder Unit2 verweist, die dann die Arbeiten ausführt (auch mit Form0 Zugriff).

Aber ich möchte, daß in Unit1 so gut wie nix drin steht.

Ich hoffe, ich habe mich halbwegs verständlich ausgedrückt.
Hat jmd. eine Idee, wie und ob das zu realisieren ist ?

Grüße

Matthias
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#2

Re: 1 Formular auf mehrere Units verteilen

  Alt 26. Nov 2006, 13:54
So nicht ohne weiteres. Ich sehe mögliche Lösungen durch:

a) Include Dateien (meist nicht debugbar, schlecht handlebar)
b) Frames (erhöht die Modulariesierung und entspräche dem OOP Design)
  Mit Zitat antworten Zitat
matthes

Registriert seit: 20. Jun 2006
14 Beiträge
 
Delphi 2005 Personal
 
#3

Re: 1 Formular auf mehrere Units verteilen

  Alt 26. Nov 2006, 13:59
Das ging ja schnell

Aber wird der Quelltext für Frames in einer extra Unit ausgelagert ?
Ich dachte ein Frame ist nur eine gespeicherte Gruppierung von Formular-Elementen, ohne Quelltext.

Ich hatte zuerst an irgendwelche Vererbung, Ableitung bzw. Zeiger auf Formular setzen gedacht, aber das funktioniert ja auch nicht.
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#4

Re: 1 Formular auf mehrere Units verteilen

  Alt 26. Nov 2006, 14:24
Ein Frame kann durchaus auch Code enthalten. Meiner Ansicht nach sollte ein Frame aber "ganz unten" liegen, d.h. er sollte an den Rest des Formulars nur Daten ausgeben. ich habe zum beispiel frames gemacht als Header+Footer eines Forms oder Frames mit den "OK, Apply,Cancel" Buttons für einen Dialog oder einen "Datei öffnen Frame" mit Edit und Button.

Größeren Code, der über das Umformatieren von Benutzereingaben hinausgeht, habe ich aber nie drin.
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#5

Re: 1 Formular auf mehrere Units verteilen

  Alt 26. Nov 2006, 14:27
Zitat von matthes:
Aber wird der Quelltext für Frames in einer extra Unit ausgelagert ?
Ich dachte ein Frame ist nur eine gespeicherte Gruppierung von Formular-Elementen, ohne Quelltext.
Es ist eigentlich wie eine Sonderform eines Formulars - mit den Elementen, die Ereignismethoden, etc. Darin kannst du diese auch schon soweit programmieren.
  Mit Zitat antworten Zitat
mr.unbekannt

Registriert seit: 20. Jul 2005
Ort: Schwerin
152 Beiträge
 
Delphi 7 Professional
 
#6

Re: 1 Formular auf mehrere Units verteilen

  Alt 26. Nov 2006, 14:35
nach meinem wissen nach, solltest du die onclick-ereignisse usw. auf der unit1 (Form1) aufrufen und dann kannst du die doch auf vielen units verteilen. Bsp.

Delphi-Quellcode:
procedure TForm1.button1Click(Sender: TObject);
begin
unit3.button1click;
bzw. unit3.sowieso
end;
mfg
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#7

Re: 1 Formular auf mehrere Units verteilen

  Alt 26. Nov 2006, 14:43
Zitat von mr.unbekannt:
nach meinem wissen nach, solltest du die onclick-ereignisse usw. auf der unit1 (Form1) aufrufen und dann kannst du die doch auf vielen units verteilen. Bsp.

Delphi-Quellcode:
procedure TForm1.button1Click(Sender: TObject);
begin
unit3.button1click;
bzw. unit3.sowieso
end;
mfg
Ich hasse solche Codes. Und 2 Wochen später sitzt man stundenlang an solchen Projekten "weil irgendwas nicht mehr läuft" und man sieht wegen dem kreuz- und quergeschiesse nicht mehr durch. Da debuggt man erstmal 3 Tage um rauszufinden wer alles aus welchen versteckten Ecken eine Procedure/Methode aufruft.

Grässlich.

Ich kann sowas nicht unterstützen - aber auch nicht verhindern - aber wenigstens meinen Senf dazu abgeben...
  Mit Zitat antworten Zitat
matthes

Registriert seit: 20. Jun 2006
14 Beiträge
 
Delphi 2005 Personal
 
#8

Re: 1 Formular auf mehrere Units verteilen

  Alt 26. Nov 2006, 17:43
Zitat:
nach meinem wissen nach, solltest du die onclick-ereignisse usw. auf der unit1 (Form1) aufrufen und dann kannst du die doch auf vielen units verteilen. Bsp.
Ja, daran habe ich auch schon gedacht, aber hatte auf eine "schönere" Lösung gehofft.
Ist aber jedenfalls besser als alles in eine Unit zu schreiben.

Ich habe es eben mal kurz mit einem Frame probiert. Es funktioniert soweit, daß der Code des Frames ausgeführt wird, aber könnte ich auch von Frame1 auf Frame2, von Frame1 auf normale Form, ... zugreifen ?

Aber vielleicht kennt ja noch jemand eine elegantere Lösung.
  Mit Zitat antworten Zitat
Antwort Antwort


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 16:52 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