Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Ein Programm (Form) mehrfach in einer Form ausführen (https://www.delphipraxis.net/191702-ein-programm-form-mehrfach-einer-form-ausfuehren.html)

sinumeriker 11. Feb 2017 20:42

Ein Programm (Form) mehrfach in einer Form ausführen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Zusammen...

Ich (Anfänger) programmiere grade eine Maschinenüberwachung.
Es soll angezeigt werden wenn eine Maschine eine Störung hat. Dieses Funktioniert auch soweit.

Jetzt sollen aber 12 Maschinen angezeit werden, aber ich möchte nicht alles 12 mal kopieren und anpassen…

Gibt es eine Möglichkeit die Form mehrfach parametriert aufzurufen? Oder wie macht man sowas?

Grüße aus dem Hochsauerland…
Peter

Rollo62 11. Feb 2017 21:06

AW: Ein Programm (Form) mehrfach in einer Form ausführen
 
Du könntestTframe statt Tform nehmen.

Rollo

RSF 11. Feb 2017 21:45

AW: Ein Programm (Form) mehrfach in einer Form ausführen
 
Da gibt es viele Möglichkeiten. Aber es kommt darauf an wie die 12 Maschinen mit dem Programm kommunizieren.
  • ID-Maschine o.ä. vorhanden
  • Art der Schnittstelle
  • Protokoll

haentschman 12. Feb 2017 06:14

AW: Ein Programm (Form) mehrfach in einer Form ausführen
 
Hallöle...:P
Zitat:

Ich (Anfänger) programmiere grade eine Maschinenüberwachung.
Zitat:

Jetzt sollen aber 12 Maschinen angezeit werden
...das nenn ich mal sportlich. 8-) Mit Verlaub...etwas schwierigeres zum Anfang hättest du du dir nicht aussuchen können. :roll:

Zum Thema:
1: wie schon gesagt: TFrame statt TForm (TFrame ist ein Container http://docwiki.embarcadero.com/Libra...l.Forms.TFrame)
2: wie schon gesagt: Art der Schnittstelle? Nachtrag: TCP/IP Verbindung mit ClientSocket
3: Das ist erst der Anfang der Probleme. Du solltest ein Konzept auf dem Papier machen.
* Vernünftige Namensgebung der Komponenten und der Variablen von Anfang an. :thumb: (nicht Form1 wie in dem Bild :wink:)
* Trennung der Logik von der Oberfläche. (Units) Das macht die Erweiterungen später raus leichter. Ich wette das momentan alles in einer Unit abläuft. :wink:
* Codeeinrückung ggf. mit Formatter. :thumb:
* Was wird wie von den Geräten abgeholt. (nacheinander / parallel http://docwiki.embarcadero.com/Libra...lasses.TThread)
* Was wird wie von den Geräten angezeigt. (nacheinander / parallel http://docwiki.embarcadero.com/Libra...lasses.TThread)
* Speicherung der Daten? (Datenbank?)
* Events
* Ohne dich anzugreifen (wir haben auch alle mal angefangen :wink:): Mehr als ein Timer auf der Form eines Anfängers sagt eigentlich das man das Konzept der Abarbeitung der Befehle (eventbasiert) nicht wirklich verstanden hat. Ich will damit sagen das es mit Sicherheit eine Lösung ohne Timer gibt. Da wären wir wieder beim Konzept.
* Als Anfänger über Freigaben der Objekte nachdenken? :roll: Die Anwendung soll später 24/365 laufen? Dann ist das wichtig!
* usw...:roll:

Ich will dir nicht den Mut nehmen, aber da gehört ein wenig Erfahrung dazu...Sorry :(
Wir helfen dir kein Thema...aber das wird mit dem Verstehen dauern. Ich habe das Gefühl das hinter dir ein Chef steht der "morgen" ein fertiges Programm erwartet. :?

Bitte hinterlege deine Delphi Version in deinem Profil. Danke. :P

sinumeriker 12. Feb 2017 08:38

AW: Ein Programm (Form) mehrfach in einer Form ausführen
 
Guten Morgen…

Tframe ist glaube ich genau das was ich gesucht habe…

Die Schnittstelle läuft über Clientsocket und Serversocket. Die habe ich soweit ans Laufen gebracht. Als Protokoll werden simple Textnachrichten ohne Parameter übertragen.
Etwas Erfahrung habe ich mit Delphi und diversen anderen Sprachen (Wochenendprogrammierer, gelernter ITA).
Mein größtes Defizit ist das ich nur einen Bruchteil der Funktionen / Befehle kenne aber man wurstelt sich so durch…
Zugegeben, Professionell sieht der Code nicht aus (Variablennamen, Einrücken usw…) aber es läuft….

Danke,
Peter

PS:der Chef bin ich, also kann es auch etwas länger dauern...

haentschman 12. Feb 2017 10:43

AW: Ein Programm (Form) mehrfach in einer Form ausführen
 
Moin...8-)
Zitat:

Zugegeben, Professionell sieht der Code nicht aus (Variablennamen, Einrücken usw…) aber es läuft….
...im Prinzip ist es jedem selbst überlassen. DU mußt auch in 3 Monaten wissen, daß das Label34 für den Status der Maschine 5 ist. :wink: Was kostet es mehr wenn man es gleich konsequent macht.

Du hast noch nicht auf alle Fragen geantwortet:
* Was wird wie von den Geräten abgeholt. (nacheinander / parallel)
* Was wird wie von den Geräten angezeigt. (nacheinander / parallel)
* Speicherung der Daten? (Datenbank?)
* Warum die Timer?

Zitat:

PS:der Chef bin ich, also kann es auch etwas länger dauern...
...da haben wir aber Glück gehabt. :lol:

stahli 12. Feb 2017 10:47

AW: Ein Programm (Form) mehrfach in einer Form ausführen
 
Also ich sehe das nicht so problematisch.
Ein Formular für eine Maschine funktioniert?

Jetzt stellt sich die Frage, wie die anderen 11 Maschinen dargestellt werden sollen.
Quasi 12 Panels in einem Formular auf einen Blick?

Dann solltest Du Deine Anwendung so bauen, dass Du dem Formular eine Maschine 1..12 zuweisen kannst und diese dann dargestellt wird.

Jetzt erstellt Du ein MainForm mit 12 Panels und setzt in jedes Panel ein "embedded form", dem Du jeweils eine Maschine zuweist (dann wird quasi der Formularinhalt einfach im Panel gezeichnet).
Das sollte schon alles sein.

Man könnte noch einiges optimieren und die "Geschäftslogik" in eigene Klassen auslagern.
Für den Anfang sollten aber embedded forms als Lösung ausreichen.

mensch72 12. Feb 2017 10:52

AW: Ein Programm (Form) mehrfach in einer Form ausführen
 
Wenn schon Quick&Dirty, dann richtig;)

- füge einfach mal ein zunächst leeres "MainForm" mit nur einem Button zum Projekt dazu (!und lasse auch nur dieses von Delphi selbst erzeugen!)
- schaffe es, dass deine Einzellösung zunächst weider mit dem nun von dir selbst dynamisch erzeugten "StateForm" funktioniert
- schaffe es, das sich deinem Form die Maschinendaten irgendwie überegeben werden können(z.B. ganz schumtzig im CaptionText)
- schaffe es im Mainfom eine sagen wir RecordListe(oder böse StringListe) zu haben, wo die einzelnen Maschinen samt der Mindestparameter zur Unterscheidung und Verbindung drin sind
- nimm ein PageControl wo es eine feste ConfigPage mit der Maschinenliste gibt und erzeuge pro Maschine ein TabSheet was jeweils das Parent&Owner vom jeweils dynamisch erzeugten "StateForm" ist
- programmiere ruhig mal alles ganu böse direkt in die FormUnits!!! und bringe es irgendwie zum laufen

-> nutze das Ding mal einen Monate und sieh aber nicht mehr in die Quelltexte
-> nach dem Monat mache dir mal Gedanken, wie du dein dein Tool mit logischen BlackBoxen beschreiben und zerlegen könntest
=> jetzt versuche die funtionlalen Blackboxen mal mit den richtigen&schönen Delphimitteln zu realisieren und die GUI(also die Anzeigefunktionen) von der Kommunikation und den Konfigurations und Programmdaten zu trennen
-> gutes Anfangsstichwort: Datenmodule... nicht perfekt, aber bei Bedarf noch schön einfach mit nicht visuellen Komponenten und RAD-IDE-Events zu nutzen

Wenn du der Chef bist, und dich so/damit etwas ablenkst ist das Ok und sieh ruhig mal zu das es "irgendwie" funktioniert. Schon nach den 4 Wochen wirst du erkennen, das es schwer ist noch alles zu verstehen und und noch schwerer es zu erweitern(andere Maschinen, Protokolle,...). Man muss einfach damit leben, das RAD Prototypen mit etwas Funktion trotzdem "Wegwerfsoftware" sind. Wenn man das erkennt und RECHTZEITIG jeweils vergessen und (richtig)neu durchzieht ist das zwar nicht ganz konform der "alles immer vorab planen" Regel, aber was solls. Chefs dürfen das:)

Wenn du ein guter Chef bist, erkennst du ja auch wo du nicht deine Stärken hast. Also wäre es nach den 4..6Wochen als Chef eine durchaus gute Entscheidung sich für 2 Monate mal einen Informatik Praktikanten von der Uni zu holen. Dem statt Erklärungen dein "böses" Programm zeigen und geben, damit er es "analysiert", fachlich korrekt stukturiert und dir an Hand eines Pflichten&Lastenheftes erklärt was er wie tun würde. Nun entscheidest du als Chef(und Mensch mit Ego), ob du es selbst nochmal versuchst, oder es den auch mal realisieren lässt und dir anschaust was er wie nach den Vorgaben ausprogrammiert hat.

Wenn du da 3x Monate a 450€ zahlst, ist das für dich kein Geld, aber zusammen mit deiner eigenen Erfahrung bist du ab jetzt in der Lage, kaufmännisch sinnvolle Entscheidungen zu treffen, wenn es um so betriebsinterne Tools geht. Und auch wichtig für die zukünftigen Auftragsvergaben, jeder vom Fach weiß, das du es notfalls auch irgendwie selbst machen könntest und so auch erkennst ob das was man dir anbietet&abliefert wenigstens ein so hohes Level hat das du GERNE dafür bezahlst.

sinumeriker 12. Feb 2017 17:11

AW: Ein Programm (Form) mehrfach in einer Form ausführen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Zusammen...

für mich ist das Hobby und Spaß an der Freude.
Die Programme sind auch nicht sonderlich Groß und Komplex...

Eine 450 Euro kraft suchen wir schon lange (Delphi, PHP, S7); leider ohne Erfolg…

Anbei ein Screenshot vom Aktuellen Stand.
Jetzt noch Parametrieren, Ausrichten und ein wenig Optik…

Danke nochmals…

Peter

stahli 12. Feb 2017 17:50

AW: Ein Programm (Form) mehrfach in einer Form ausführen
 
Schau mal hier unter #5 -> http://www.delphipraxis.net/177706-p...er-frames.html

Du könntest ein neues Main-Formular erstellen mit 12 gedockten Panels und in jedes Panel ein Formular einsetzen.
Dann wären die einzelnen Formulare Bestandteil des MainForms.

Welche Delphi-Version hast Du denn (solltest Du auch im Profil eintragen)?
Vielleicht steht Dir auch ein GroupPanel zur Verfügung. Das würde die Anordnung vereinfachen.

Evtl. kannst Du auch meine http://www.delphipraxis.net/165177-scrollboxflow.html verwenden.
Die ordnet auch Einträge automatisch an. Dazu müsste Dir aber ggf. jemand bei der Installation der Komponente helfen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:59 Uhr.
Seite 1 von 2  1 2      

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