![]() |
alle Objecte der Hauptform an andere Unit übergeben?
hallo,
ich wollte viele Functions und Procedures der hauptform auslagern in eine extra unit, zur Programmübersichtlichkeit. Ich möchte gerne mit allen Objecten (Labels ScrollBoxes usw.) etwas anstellen in der Unit, nur nicht jedes einzellen Object übergeben. Wie kann man es anstellen, dass ich alle Objecte der Hauptform an die zweite Form übergeben kann? Falls es schon nen Beitrag zu diesem Problem gibt, dann bitte den Link Posten! Vielen Dank! LG Marco! |
Re: alle Objecte der Hauptform an andere Unit übergeben?
* du kannst die ganze Form übergeben, oder nur ein Panel, wo alles drauf ist
* du kannst auch einfach nur die Unit übergeben, also die Unit der Form in die Usesklausel der anderen Unit aufnehmen, dann kannst du über die globale "Form"-Variable (siehe Form1) auf alles zugreifen
Delphi-Quellcode:
und du kannst (wenn du alles in der anderen Unit in eine Klasse kapselst) direkt die Ereignisse zuweisen
unit Unit1;
interface type TForm1 = Class(TForm) Button1: TButton; ... end; var Form1: TForm1;
Delphi-Quellcode:
unit Unit2;
interface uses Unit1; type TMyClass = class procedure MyButtonClick(Sender: TObject); end; implementation //uses Unit1; // oder bei Kreuzverweis hier begin Form1.Button1.Caption := 'hier klicken'; Form1.Button1.OnClick := MyButtonClick; end; * ansonsten wird dir nicht erübrigt bleiben, alles selber (einzeln) zu übergeben |
Re: alle Objecte der Hauptform an andere Unit übergeben?
Naja irgendwie sind alle Objecte bei Übergabe der Form und Eintragung in die uses klausel der Unit keine Objecte verfügbar, die sich auf der Form befinden.
|
Re: alle Objecte der Hauptform an andere Unit übergeben?
Du redest hier wohl von Controls (Steuerlemente).
Dann ist es sinnvoll ein Objekt der Klasse TWinControl an die 2. Unit weiterzugeben.
Delphi-Quellcode:
Der Aufruf im Formular wäre:
Unit Unit2;
interface procedure MachAlleEditsGruen(c:TWinControl); implementation procedure MachAlleEditsGruen(c:TWinControl); var i : integer; begin if not Assigned(c) then Exit; if c is TEdit then TEdit(c).Color := clGreen; for i := 0 to c.ControlCount-1 do MachAlleEditsGruen(c.Controls[i]); end;
Delphi-Quellcode:
MachAlleEditsGruen(self);
|
Re: alle Objecte der Hauptform an andere Unit übergeben?
Himitsu, ich mag Deine Beiträge ansonsten sehr, aber solcher Code dürfte durch die Qualitätsrichtlinien von DelphiPraxis gar nicht durchgeleitet werden.
Solche Codebeispiele zeigt man keinem Anfänger. Das ist die falsche Herangehensweise. und von einer Unit mit exakter Namensbezeichung auf ein Formular zuzugreifen, ist noch schlechter. Ich nenne dies "Buttonclick" Programmieung. Ich muss gestehen, ich habe auch so angefangen, auch mit auf Grund schlechter Codebeispiele. Wenn solche Fragen, wie vom Threadersteller auftauchen, dann hat das ganze Programm einen planungsmäßigen Fehler. Viel besser wäre für ihn, wenn er sich ein bischen auf den Hosenboden setzt und die Kunst des Programmierens lernt. MVC Modell wäre sein ertes Stichwort, mit dem er sich beschäftigen sollte. Damit kommt man schon recht weit. ![]() Seine Frage riecht förmlich danach, dass er visuelle Darstellungen total vermischt hat, mit wichtigen Berechnungen. Daher auch der Name Button-Click Programmierung. Es wird alles in der Buttonclick procedure des Formulars erledigt. soviel Code gibts nämlich gar nicht in visuellen Forms, dass der Platz nicht ausreichen würde. Wichtig für ihn wäre zu lernen, dass man Visualisierung von den Grundlagen trennt. Ein Form zeigt nur an, sonst nix .. und kann unter umständen durch eine Textanzeige ersetzt werden. Bzw entwickeln wir Code erstmal nur mit Textausgaben. die Visualisierung in forms kommt ganz zum Schluss. Jede Klasse hat eine ToString Funktion zu erhalten. wo eventuell auch die komplette Liste von Elemente ausgegeben wird. Ganz zum Schluss erst kann man mal darüber nachdenken, ob man nicht auch was in einer Stringgrid anzeigen möchte. Nun .. ich denke, darüber wurde schon oft diskutiert hier. Aber man kann es gar nicht oft genug sagen und wiederholen... |
Re: alle Objecte der Hauptform an andere Unit übergeben?
Zitat:
Nur zum designen .. Man packt alles auf ein Fram. Übergibt die Daten, die es anzeigen soll usw. zum Schluss createt man alle verfügbaren Frames per Quellcode und selbst per Hand, und positioniert sie auf ein Panel im Hauptformular. Das ist das beste, was man sein Programm Modulweise aufbauen kann ... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:37 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 by Thomas Breitkreuz