AGB  ·  Datenschutz  ·  Impressum  







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

Arbeit mit Units

Ein Thema von foerster7892 · begonnen am 14. Jun 2009 · letzter Beitrag vom 14. Jun 2009
Antwort Antwort
Seite 1 von 2  1 2      
foerster7892

Registriert seit: 10. Okt 2007
Ort: Brieskow-Finkenheerd
181 Beiträge
 
#1

Arbeit mit Units

  Alt 14. Jun 2009, 08:42
Ich wollte mit mehreren Units auf der selben Oberfläche arbeiten und wollte fragen ob man mit der 2.Unit auch auf Elemente der Oberfläche zugreifen kann also einem Button das ich die normale "procedure TForm1.Button2Click(Sender:TObject)" nutzen kann oder eine Ausgabe auf ein Label, ne Listbox etc. und wenn nicht kann man irgendwie nen Unterprogramm aus Unit2 in Unit1 aufrufen.
(wie ihr merkt hab ich kein Plan von der Arbeit mit Units vllt. könnt ihr mir auch gleich noch nen link zu nem Turtorial geben)

Hoffe ihr könnt mir weiterhelfen
thx before
foerster7892
mfg
foerster7892
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#2

Re: Arbeit mit Units

  Alt 14. Jun 2009, 09:08
trag im Implementation-Abschnitt
Uses Unit1; ein und schon kannst du drauf zugreifen
$2B or not $2B
  Mit Zitat antworten Zitat
SimStar001

Registriert seit: 18. Jan 2008
594 Beiträge
 
#3

Re: Arbeit mit Units

  Alt 14. Jun 2009, 10:02
macht das der comipler nciht selbst?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#4

Re: Arbeit mit Units

  Alt 14. Jun 2009, 10:05
nein

Der trägt die neu erstellten Units nur im Projekt (der .dpr) automatisch ein, aber nicht in andere Units.
$2B or not $2B
  Mit Zitat antworten Zitat
foerster7892

Registriert seit: 10. Okt 2007
Ort: Brieskow-Finkenheerd
181 Beiträge
 
#5

Re: Arbeit mit Units

  Alt 14. Jun 2009, 11:11
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm4 = class(TForm)
      Button1: TButton;
      Label1: TLabel;
    private
      { Private-Deklarationen }
    public
      { Public-Deklarationen }

    end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

end.
---------------------------------------------------------------------------------------------------------------------------
Delphi-Quellcode:
unit Anzeigen;

interface

uses Unit1;

procedure Button1Click(Sender: TObject);

implementation



procedure Button1Click(Sender: TObject);
var a:string;
begin
  Form1.Label1.caption:='hallo';
end;

end.

mit diesem Beispiel wollte ich es probieren aber er startet und wenn ich auf den button klicke macht er nichts. Wieso?
mfg
foerster7892
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: Arbeit mit Units

  Alt 14. Jun 2009, 11:22
Button1Click muss eine Methode sein. Und diese muss dann mit dem onClick-Event des Buttons verbunden werden.
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von thkerkmann
thkerkmann

Registriert seit: 7. Jan 2006
Ort: Pulheim Brauweiler
464 Beiträge
 
Delphi 2010 Professional
 
#7

Re: Arbeit mit Units

  Alt 14. Jun 2009, 11:32
Hi,

also ich finden deinen Ansatz eher unglücklich.

Ziel der Unit mit dem Formular ist doch, alle Aktionen hier auflaufen zu lassen.
Es macht dann schon eher Sinn, aus den entsprechenden "OnClick" Methoden die Arbeit in einer anderen Unit stattfinden zu lassen, die Ergebnisse sollten dann aber wieder in der Formular-Unit auf das Formular gebracht werden.
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm4 = class(TForm)
      Button1: TButton;
      Label1: TLabel;
      procedure Button1OnClick(Sender:TObject);
    private
      { Private-Deklarationen }
    public
      { Public-Deklarationen }

    end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1OnClick(Sender:tObject);
begin
  Ergebnis := unit2.BerechneIrgendwas (); // <<<< Berechnung ausgelagert
  Label1.Caption := FormatierteAusgabe (Ergebnis); // <<<< das ist nur ein Beispiel
end;

end.
So bleibt die Formularunit schön schlank, und die Berechnung kann man vielleicht noch anderweitig gebrauchen.

Trenne Darstellung (Eingabe/Ausgabe) von Bearbeitung, aber nicht: verteile Ein/Ausgabe auf verschiedene Module.

Gruss
Thomas Kerkmann
Ich hab noch einen Koffer in Borland.
http://thomaskerkmann.wordpress.com/
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#8

Re: Arbeit mit Units

  Alt 14. Jun 2009, 11:33
afaik unterstützt Delphi noch keine partial classes sodass man die Klasse TForm1 in einer Unit vollständig implementieren muss.

Also nichts mit "procedure TForm1.Button2Click(Sender:TObject)" in Unit2

2 mögliche Workarounds:
In Unit2 eine eigene Klasse definieren, die dann die Mezhoden implementiert. Problem: Es wird evtl. eine nicht unerhebliche Menge an Schnittstellenfunktionen nötig werden oder alles wir public gemacht.

In Unit2 nur den Code auslagern, in normale Funktionen. In Unit1 dann nur Eventhandler, die legendlich die Funktionen aus Unit2 aufrufen.

Mich würde erstmal interessieren: Warum möchtest du das Formular in 2 Units aufteilen?
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: Arbeit mit Units

  Alt 14. Jun 2009, 11:34
Zitat:
Ziel der Unit mit dem Formular ist doch, alle Aktionen hier auflaufen zu lassen.
wenn man an MVC denkt eher nicht
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von thkerkmann
thkerkmann

Registriert seit: 7. Jan 2006
Ort: Pulheim Brauweiler
464 Beiträge
 
Delphi 2010 Professional
 
#10

Re: Arbeit mit Units

  Alt 14. Jun 2009, 11:38
Zitat von mkinzler:
Zitat:
Ziel der Unit mit dem Formular ist doch, alle Aktionen hier auflaufen zu lassen.
wenn man an MVC denkt eher nicht
Das kann man jetzt philosophisch ausarbeiten, und trotzdem würde ich dir nicht zustimmen.
MVC bedeutet in keiner Weise, dass ich M, V und C in verschieden Module auslagern muss.
Es kommt drauf an wie ich es implementiere. Und Delphi bietet mit seinem Ansatz durchaus die Möglichkeit diesem Paradigma gerecht zu werden, ohne alles in Stücke zu hauen.
Es wird unseren Threadersteller auch jetzt nicht weiterhelfen, er befindet sich noch auf einem anderen Level denke ich...
(ohne im jetzt zu nahe treten zu wollen)

Gruss
Thomas Kerkmann
Ich hab noch einen Koffer in Borland.
http://thomaskerkmann.wordpress.com/
  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 00:34 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