AGB  ·  Datenschutz  ·  Impressum  







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

Sinnvoller Aufbau größerer Projekte

Ein Thema von everdream · begonnen am 17. Jan 2008 · letzter Beitrag vom 24. Jan 2008
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von everdream
everdream

Registriert seit: 22. Feb 2007
Ort: Hiddenhausen
192 Beiträge
 
Delphi 2005 Personal
 
#1

Sinnvoller Aufbau größerer Projekte

  Alt 17. Jan 2008, 21:51
Hallo,

weil ich momentan oft Probleme habe, meine Klassen, meine Form(en), etc. anständig zu organisieren, habe ich mich entschlossen, da mal die Profis zu fragen.

Ich stehe dabei meißtens vor folgendem Problem:
Soweit ich weiß, ist es üblich und auch sinnvoll, ein Hauptprogramm zu haben, das alle anderen Dinge, also Klassen, Formen, usw. verwaltet. Allerdings weiß ich nicht, wie ich das dann genau aufbauen kann. Das "normale" Hauptprogramm ist ja einfach die erste Form.
Meine Frage wäre also, wie ich ein Hauptprogramm anlegen kann, das beim Programmstart zuerst ausgeführt wird, obwohl es nicht die FormUnit ist, mit der das Projekt angefangen wurde.

Ich hoffe, ich konnte das einigermaßen erklären...

Vielen Dank schonmal für eure Antworten!
Max
"Das Ziel ist im Weg!"
  Mit Zitat antworten Zitat
Benutzerbild von Dani
Dani

Registriert seit: 19. Jan 2003
732 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Sinnvoller Aufbau größerer Projekte

  Alt 17. Jan 2008, 22:25
Plane dein Projekt erst durch, bevor du mit der Codierung anfängst. Für dein "Hauptprogramm" (vielleicht meinst du damit sowas wie einen Controller) könntest du dir mal den ActionManager anschauen. Wenn der in Delphi ähnlich gut in die VCL integriert ist wie in Java, könnte er dir helfen, deine Projekte übersichtlich zu halten.
Dani H.
At Least I Can Say I Tried
  Mit Zitat antworten Zitat
Benutzerbild von everdream
everdream

Registriert seit: 22. Feb 2007
Ort: Hiddenhausen
192 Beiträge
 
Delphi 2005 Personal
 
#3

Re: Sinnvoller Aufbau größerer Projekte

  Alt 17. Jan 2008, 23:03
Vllt ist meine Idee in Quellcode noch besser zu verstehen:
Delphi-Quellcode:
unit mMainProgram;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, mMeineKlassen, mSonstwas, mForm1, mForm2;

type
  TProgramm = class(TObject) //Das Programm soll natürlich keine Klasse sein, aber ich weiß grade nich, wie ich das besser ausdrücken sollte...
  private
    Form1: TForm1;
    Form2: TForm2;
    TMeineKlasse1;
    TMeineKLasse2;
    Array: Array[1..5,1..4] of irgendwas;
    procedure OnProgrammStart;
    [...]
  end;

implementation

{$R *.dfm}

procedure OnProgrammStart;
begin
  Form1:=TForm1.Create;
  Form1.show;
end;

procedure Form1.Button1OnClick;
begin
  Array[1,4]:=irgendwas1;
end;


procedure Form2.Button1MouseMove;
begin
  Form2.ShowMessage('Finger weg von der Maus!');
end;

end.
So könnte ich halt alles relativ einfach verwalten. "Hier laufen alle Fäden zusammen"...
Meine Idee war halt, dass ich die Formen von da aus anzeige und die darauf gemachten eingaben im Hauptprogramm verarbeiten, ohne, dass die form da noch irgendwas mit zu tun hat.
Max
"Das Ziel ist im Weg!"
  Mit Zitat antworten Zitat
InfixIterator

Registriert seit: 25. Nov 2007
16 Beiträge
 
#4

Re: Sinnvoller Aufbau größerer Projekte

  Alt 17. Jan 2008, 23:52
Bei größeren Projekten muss man Projekt Management machen
Am besten alles aufschreiben was benötigt wird und es sinnvol modelieren, dabei kann Dir UML weiter helfen.
Hier ist eine schöne Notationsübersicht von UML: UML Notationsübersicht
Falls dein Projekt doch kleiner ausfällt, lohnt es sich aber auf jedenfall vorher zu überlegen, wie die Anforderungsdefinitionen sind und welche zusammenhänge zwischen Funktionen, Klassen, Modulen etc. herschen soll.


Zu deiner anderen Frage:
Du kannst doch die erste Form auch als Hauptprogramm machen...
verstehe da nicht genau dein Problem...
Du kannst ja später auch neue Forms öffnen mit z.b.:
form2.show;
  Mit Zitat antworten Zitat
Benutzerbild von everdream
everdream

Registriert seit: 22. Feb 2007
Ort: Hiddenhausen
192 Beiträge
 
Delphi 2005 Personal
 
#5

Re: Sinnvoller Aufbau größerer Projekte

  Alt 23. Jan 2008, 13:38
UML ist ne gute Möglichkeit sich einen Überblick zu verschaffen und eventuell kleine Denkfehler auszuradieren, bevor man anfängt, stimmt!

Zitat von InfixIterator:
[...]
Du kannst doch die erste Form auch als Hauptprogramm machen...
verstehe da nicht genau dein Problem...
Du kannst ja später auch neue Forms öffnen mit z.b.:
form2.show;
Hm, finde das aber irgendwie unschön... Ich hätte halt lieber so eine Art """Meta-Ebene""", von der aus ich das ganze "Geschehen" steuern kann. Also von wo aus ich auf alle Formen und alle Klassen der oberen Ebene (also die, die ich vom Hauptprogramm aus direkt anspreche, die aber eventuell selbst nochmal andere Klassen verwenden) zugreifen kann.

Wäre imho auch sehr übersichtlich.
Max
"Das Ziel ist im Weg!"
  Mit Zitat antworten Zitat
angos

Registriert seit: 26. Mai 2004
Ort: Rheine
549 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: Sinnvoller Aufbau größerer Projekte

  Alt 23. Jan 2008, 14:22
Hi,

du hast doch dein Hauptprogramm wovon alle anderen Forms aufgerufen werden.
Das ist die .dpr-Datei. In dieser kannst du ganz normalen Delphi-quellcode schreiben, welcher ALS ERSTES NACH DEM ÖFFNEN DER EXE ausgeführt wird.

bei neuanlage sieht die so aus:

Delphi-Quellcode:
program Project1;

uses
  Forms,
  Unit1 in 'Unit1.pas{Form1};

{$R *.res}

begin
  Application.Initialize;
  Application.CreateForm(TForm1, Form1);
  Application.Run;
end.
das kann man auch schön nutzen um startparameter abzufragen und was weis ich nit dürfte abr genau das sein was du suchst

beispiel:
Delphi-Quellcode:
program Project1;

uses
  Forms,
  Unit1 in 'Unit1.pas{Form1};

{$R *.res}

begin
  Application.Initialize;
  Application.CreateForm(TForm1, Form1);
  Application.CreateForm(TForm2, Form2);

  if Irgendetwasgesetzt then
  begin
    Form2.Showmodal;
    Form2.Release;
  end

  else
  begin
    Form1.Showmodal;
    Form1.Release;
  end

end.
Ansgar
  Mit Zitat antworten Zitat
Benutzerbild von everdream
everdream

Registriert seit: 22. Feb 2007
Ort: Hiddenhausen
192 Beiträge
 
Delphi 2005 Personal
 
#7

Re: Sinnvoller Aufbau größerer Projekte

  Alt 23. Jan 2008, 15:19
Ui, genau sowas meinte ich.
Aber das ganze benutzt ja die Formen nicht wie normale Klassen, sondern ruft sie einfach nur auf, oder kann ich da auch ganz normal Forms per Variablendefinition einsezen?
Max
"Das Ziel ist im Weg!"
  Mit Zitat antworten Zitat
Benutzerbild von arbu man
arbu man

Registriert seit: 3. Nov 2004
Ort: Krefeld
1.108 Beiträge
 
Delphi 7 Professional
 
#8

Re: Sinnvoller Aufbau größerer Projekte

  Alt 23. Jan 2008, 15:45
Klar geht das:
Delphi-Quellcode:

TMainForm = class(TForm)
private
  FSubForm: TSubForm;
public
  procedure ShowSubForm;
end;

...

procedure TMainForm.ShowSubForm;
begin
  if not Assigned(FSubForm) then begin // Überprüft ob FSubForm geladen wurde
    Application.CreateForm(TSubForm, FSubForm); // Lädt FSubForm
    // alternative Application.CreateForm
    FSubForm := TSubForm.Create(Self);
  end;
  FSubForm.Show;
end;
Allerdings solltest du dir die Grundlagen der OOP anschauen, das wird dir weiterhelfen...

Edit: Du kannst in Delphi auch ein DatenModul anlegen, darin kannst du Formen und Daten verwalten über die Projekt Optionen kannst du Einstellen, das nur das DatenModul geladen werden soll.

mfg, Björn
Björn
>> http://bsnx.net <<
Virtual DP Stammtisch v1.0"iw" am 19.09.2007 - ich war dabei!
  Mit Zitat antworten Zitat
Benutzerbild von everdream
everdream

Registriert seit: 22. Feb 2007
Ort: Hiddenhausen
192 Beiträge
 
Delphi 2005 Personal
 
#9

Re: Sinnvoller Aufbau größerer Projekte

  Alt 23. Jan 2008, 15:54
hm, gerde da hatte ich mich ja gefragt, ob das in der .dpr geht...

Da wird nämlich kein Speicher für die Instanz der Klasse TForm1 reserviert, sie wird einfach aufgerufen...

Delphi-Quellcode:
program Project1;

uses
  Forms,
  Unit1 in 'Unit1.pas{Form1};

{$R *.res}

begin
  Application.Initialize;
  Application.CreateForm(TForm1, Form1);
  Application.Run;
end.
Könnte ich das ganze dann in etwa so lösen...
Delphi-Quellcode:
program Project1;

uses //"Forms" werden hier nicht mehr gebraucht...
  Unit1 in 'Unit1.pas{Form1};

{$R *.res}

begin
  Application.Initialize;
  Application.CreateClass(TMeinHauptprogramm, Hauptprogramm); //...???
  Application.Run;
end.
+

Delphi-Quellcode:
type
  TMeinHauptptogramm = class
  private
    Form1: TForm1;
    Form2punkt1, Form2punkt2: TForm2;
    //[...]
  public
    //[...]
end;
Max
"Das Ziel ist im Weg!"
  Mit Zitat antworten Zitat
angos

Registriert seit: 26. Mai 2004
Ort: Rheine
549 Beiträge
 
Delphi 11 Alexandria
 
#10

Re: Sinnvoller Aufbau größerer Projekte

  Alt 24. Jan 2008, 07:40
müsste theoretisch auch gehen, aber dann musst du dich um das ganze erzeugen der form usw kümmern.. Objektorientiert ist shcön und gut und meiner meinung nach absolut wichtig, aber da wirds glaub ich etwas übertrieben

probiere damit aber ruhig zu testzwecken einfach mal ein bissl rum, aber mehr übersicht bringt dir das, denke ich, nicht.


Gruß
Ansgar
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 23:59 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