Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi PopUp als Panel (https://www.delphipraxis.net/194583-popup-als-panel.html)

Vienesko 8. Dez 2017 19:48

PopUp als Panel
 
Moin Moin

Ich schreibe ja derzeit an einer eigenen, umfangreichen Haussteuerung die mich noch lange beschäftigen- und bestimmt des öfteren eure Hilfe benötigen wird.

Was das tatsächliche Steuern meiner Haussteuerungskomponenten angeht bin ich schon recht weit. Jetzt habe ich mehr ein Problem, was in Richtung "intelligente Programmierung" geht und ich weiß da nicht weiter.
Folgendes ist mein Problem:

Aufgrund der Optik (und Touchfunktionalität), die ich mir für mein Programm vorstelle, habe ich meine Benutzeroberfläche mit Panels realisiert. Bisher hat auch alles so funktioniert, wie ich mir das vorstelle.
Wenn ich jetzt aber auf ein bestimmtes Panel klicke, möchte ich, dass sich ein Panel öffnet (mit einigen weiteren Panels darauf) wo ich weiter Einstellungen vornehmen kann.

Das Design dieses "PopUp Panels" ist fertig und alles funktioniert auch genau so, wie ich es möchte. Aber so, wie ich es gelöst habe, ist es vielleicht mit maximal 2 oder 3 verschieden (in diesem Fall) Heizungen noch übersichtlich (vom Quelltext her).
Ich werde aber am Ende ca. 19-20 Stück von immer genau dem gleichen Quelltextkontrukt haben jedoch aber 2-3 Anweisungen, die sich immer unterscheiden.
Klicke ich zB. auf OK wird im PopUp Panel 1 die Heizung Küche gesteuert und bei PopUp Panel 2 das Badezimmer.
Das habe ich mit eigenen Klassen realisiert, sodass ich dementsprechend nur "HeizungBadezimmer.Einschalten" eingeben brauche. Dies wäre also immer anders.


Ich habe schon versucht, die Panels zur Laufzeit erst zu erzeugen. Da habe ich am Ende ja sogar mehr Quelltext.
Dann wollte ich es in eine eigene Klasse also auch eigene Unit auslagern. Könnte klappen, nur meckert er beim setzen des Parent vom Hauptpanel, weil er das angeblich nicht kennt. Konnte das also nicht testen.

Hatte auch schon an eine Prozedur gedacht mit Variablen für die Anweisungen, die sich immer ändern aber ich weiß nicht, wie/ob ich dort zb "HeizungKüche.Einschalten" benutzen kann und ob das überhaupt der richtige Weg ist...

Ich hoffe, es klingt nicht zu kompliziert was mein Problem ist und was ich eigentlich möchte:spin2:
Ich kann sonst auch gerne noch Bilder davon posten, um das zu verdeutlichen.

Hat jemand einen Tipp, wie ich das ganze angehen könnte?
Vielleicht stell ich mich auch einfach zu doof an aber ich bin ja auch kein Profi:lol:

Wieder ein mal bin ich für jeden Tipp sehr dankbar.
Dankeschön

LG

Rollo62 9. Dez 2017 11:21

AW: PopUp als Panel
 
Frames ?

Vienesko 14. Dez 2017 09:45

AW: PopUp als Panel
 
Habe ich mir angeguckt und ausprobiert.
Frame erstellt und in die Palette aufgenommen. Jetzt kann ich das PopUp zur Entwurfszeit auf die Oberfläche packen und anzeigen lassen.
Das hatte ich ja so auch bei dem ersten Versuch. Nur jetzt hätte ich am Ende 19-20 Frames zur Entwurfszeit auf der Oberfläche liegen was dann nicht den Quelltext unübersichtlich macht sondern die Entwurfsoberfläche.

Ich werde mich nochmal an den Ansatz mit der eigenen Klasse setzen. Dort haperte es ja an dem Owner, wenn ich mich recht erinnere...

Was mein Problem wohl am einfachsten lösen könnte:
Gibt es eine Möglichkeit, bei einer Anweisung eine Variable als Platzhalter einzusetzen?

Also z.B. xxxxxxx.Einschalten statt HeizungBadezimmer.Einschalten?
Dann könnte ich das eine (zur Entwurfszeit existierende) PopUp bei Klick auf den entsprechenden Button an die richtige Stelle verschieben, die Variable ändern und bei Klick auf "OK" das PopUp schließen und den Befehl abfeuern.
Geht sowas irgendwie oder klappt das nicht?

Dankeschön

Rollo62 14. Dez 2017 10:51

AW: PopUp als Panel
 
Frames oder Forms kann man auch zur Laufzeit laden.
Das müsste man nicht Alles zur Designzeit reinwerfen.
So bleiben die Frames schön getrennt, in separaten Units, und
je nach momentaner Aufgabe kann man die in z.B. Panel, TablControl, o.ä. laden.

Rollo

bcvs 14. Dez 2017 11:51

AW: PopUp als Panel
 
Zitat:

Zitat von Vienesko (Beitrag 1388827)

Was mein Problem wohl am einfachsten lösen könnte:
Gibt es eine Möglichkeit, bei einer Anweisung eine Variable als Platzhalter einzusetzen?

Also z.B. xxxxxxx.Einschalten statt HeizungBadezimmer.Einschalten?

meinst du sowas?
Delphi-Quellcode:
prodecure HeizungEinschalten(Heizung:TMyHeizungsPanel);
begin
  Heizung.Einschalten;
end;
Aufruf mit:
Delphi-Quellcode:
HeizungEinschalten(HeizungBadezimmer);
HeizungEinschalten(HeizungWohnzimmer);

Redeemer 14. Dez 2017 14:56

AW: PopUp als Panel
 
Zitat:

Zitat von Rollo62 (Beitrag 1388839)
Frames oder Forms kann man auch zur Laufzeit laden.
Das müsste man nicht Alles zur Designzeit reinwerfen.
So bleiben die Frames schön getrennt, in separaten Units, und
je nach momentaner Aufgabe kann man die in z.B. Panel, TablControl, o.ä. laden.

Rollo

Frames sollte man deshalb auch immer zur Laufzeit erstellen (deren eigenes Layout natürlich nicht). Der Designer macht da nur Blödsinn draus. Beim Erstellen nicht vergessen, Parent zu setzen!

Neumann 16. Dez 2017 15:23

AW: PopUp als Panel
 
Hallo, sieht für mich interessant aus, könnte etwas sein wobei meine frei konfigurierbare Oberfläche nützlich sein könnte. Falls Interesse, bitte eine Nachricht, sende dann meine Telefonnummer.

Vielleicht kann man ja zusammenarbeiten.

Vienesko 3. Jan 2018 10:29

AW: PopUp als Panel
 
Erst einmal Entschuldigung, dass ich mich so lange nicht auf eure Antworten gemeldet habe und vielen Dank für selbige.

Ich habe mich jetzt erstmal mit anderen Aspekten meiner Software gekümmert. Habe die Überwachungskameras (Bild und Steuerung) eingepflegt und hab die Datenbankoberfläche verbessert.
Das habe ich deshalb gemacht, um den Kopf frei zu bekommen, sodass mir danach vielleicht wieder neue Lösungswege einfallen. Außerdem brauche ich Erfolgserlebnisse, damit mir das weiterhin Spaß macht.

@bcvs:
Ich weiß nicht so recht. Ich werde aus dem, was du geschrieben hast, nicht so recht schlau:(
Aber ich meinte eher, dass zur Entwurfszeit die Anweisung eine Variable enthält, die ich dann je nach Button füllen kann. Also eben <Variable>.Einschalten statt das feste Badezimmer.Einschalten. Dann könnte ich das jedesmal ersetzen, wenn auf einen Button gedrückt wird. Aber er meckert ja, sobald er die Anweisung nicht kennt.

@Neumann:
Das Design meiner Software steht schon und es ist ja nur für mich. Es ist derzeit nicht geplant, es in irgendeiner Weise zu vertreiben. Dafür wäre es nicht flexibel genug. Aber wer weiß, was die Zukunft bringt:wink:
Trotzdem danke für das Angebot.

Ich werde mich demnächst mal wieder an das PopUp machen und meine Lösung dann hier posten, sobald ich sie gefunden habe.

Irgendwann werde ich meine Software auch mal in dem entsprechenden Unterforum vorstellen...wenn es herzeigbar ist :lol:


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:38 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