Delphi-PRAXiS
Seite 3 von 4     123 4      

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 Events zur Designtime (https://www.delphipraxis.net/110184-events-zur-designtime.html)

stahli 15. Mär 2008 19:00

Re: Events zur Designtime
 
Ich finde es etwas ungewöhnlich, dass Du so flexible und dynamische Änderungen in der IDE realisieren willst. Dann musst Du ja Dein Projekt bei Änderungen jedesmal neu kompilieren.

Warum erstellst Du nicht einfach einen kleinen "Designer" und eine kleine "Palette". Zur Laufzeit kann man dann Poly´s aus der Palette auf den Designer ziehen und bearbeiten. Das ganze wird dann in einen Stream gespeichert und beim nächsten Start geladen...

Deine Exe besteht dann in alle Ewigkeit und die Nutzer können notfalls selbst auch Änderungen an den Poly´s vornehmen. :-)

stahli

Medium 15. Mär 2008 20:16

Re: Events zur Designtime
 
Zitat:

Zitat von stahli
Ich finde es etwas ungewöhnlich, dass Du so flexible und dynamische Änderungen in der IDE realisieren willst.

Es scheint in der Tat kaum jemand bislang auf diese Idee gekommen zu sein. Ich habe zumindest nichts dergleichen während meiner Deutsch- und Englischsprachigen Recherche via Google gefunden. Ich bringe "ungewöhnlich" nur selten mit "nicht gut" in Zusammenhang, daher fasse ich das mal nicht als negative Kritik auf ;)

Zitat:

Zitat von stahli
Dann musst Du ja Dein Projekt bei Änderungen jedesmal neu kompilieren.

Das ist überhaupt nicht schlimm, da sich bei Änderungen in den Bildern ohnehin immer auch Änderungen in der Programmlogik ergeben. Da wir Speziallösungen auf einzelne Produktionsbetriebe zugeschnitten erstellen, ist es nicht nötig bzw. auch nicht erwünscht, dass der Endanwender etwas ändert. Das ganze soll ein Tool werden, dass uns bei der Erstellung die Arbeit erleichtert. Der Enduser soll nachher nur schöne bunte blinkende Bildchen bekommen.

Zitat:

Zitat von stahli
Warum erstellst Du nicht einfach einen kleinen "Designer" und eine kleine "Palette". Zur Laufzeit kann man dann Poly´s aus der Palette auf den Designer ziehen und bearbeiten. Das ganze wird dann in einen Stream gespeichert und beim nächsten Start geladen...

Nochmal: Es ging nie um den Enduser, und schon garnicht um die Laufzeit. Ich will ein höheres Maß an Editierbarkeit zur Designzeit, und auch nur da!



Ich hab bereits das wesentliche Rahmenwerk auf Basis des überlagerten Formulars gebaut, und bislang sieht es noch immer so aus, als könnte ich es so realisieren. Was dieser "Trick" mit sich bringt ist z.B., dass ich ein weiteres auf dem eigentlichen Formular verschiebbares und größenänderbares Fenster mit einem eigenen kleinen Propertyeditor erzeugen kann. Im Grunde wird es also ein Designer, der in dem Fenster des Delphi-Designers zuuur Designtime läuft, auf dem die Komponente eingefügt wurde.
Innerhalb dieser Fenster kann ich agieren wie in einem separaten eigenen Programm, nur dass alles in einer Komponente gekapselt ist, und im Delphidesigner dargestellt wird. Ich bin selbst erstaunt, dass das so möglich ist, aber nicht wirklich böse darum.

Sobald eine vorzeigbare Version fertig ist, kann ich sie ja mal zur Begutachtung hochladen. Bisher zumindest bin ich noch davon überzeugt, dass das der beste Weg ist für unsere Zwecke, zumal leider alle bisherigen Ansätze Maus-Events aus dem Designer zu erhalten fehlgeschlagen sind.

Medium 17. Mär 2008 15:58

Re: Events zur Designtime
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hier mal der bisherige Stand. Es ist ein absoluter "work in progress", und einiges fehlt noch, aber es zeigt schon ganz gut was ich meinte. Erstellt und getestet hab ich es bislang nur unter Delphi 7 Ent.

Installation:
DrawingContainer.pas als neue Komponente registrieren
(Darauf achten, dass alle 3 Files im Bibliothekspfad sind)

Was bisher geht: Es werden in einer Zeichenfläche zwei bearbeitbare Dreiecke erstellt, dessen Eigenschaften sich in einem eigenen Property-Editor der sich mit öffnet geändert werden können. Multiselektion klappt auch schon.
Was fehlt ist Persistenz (beim Starten des Programmes werden nur die 2 Dreiecke in Ausgangsform gezeigt), dynamische Kontextmenues, ein paar Tool-Leisten und weitere Sub-Komponenten, sowie der übliche Feinschliff.

Eine Kleinigkeit muss man noch beachten: Damit man das Element via [Entf] auch wieder löschen kann, und zuvor im "internen" Property Editor etwas gemacht hat, muss man kurz etwas anderem den Focus geben (dem Delphi-Propertyeditor z.B.) und dann den roten Rand um die Komponente anklicken damit sie richtig selektiert ist.
Ich hab leider bisher keinen sinnvollen Weg gefunden, dem internen Prop-Edit den Fokus zu klauen.

stahli 17. Mär 2008 17:42

Re: Events zur Designtime
 
Liste der Anhänge anzeigen (Anzahl: 1)
Unter BDS2006 erhalte ich beigefügte Meldungen...
Mich würde mal ein kleines Bilchen oder kurzes Video interessieren...

stahli

Medium 17. Mär 2008 23:17

Re: Events zur Designtime
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ich hab schon befürchtet, dass mich die RTTI und Konsorten in anderen Versionen ärgern werden. Schade.
Ich hab mir aber mal fix Camtasia angesehen, nettes Progrämmchen! Meinen ersten Film hab ich mal angehängt ;)

Das Popupmenu ist da nun schon ansatzweise drin. Was im Video nicht deutlich wird: Es wird dynamisch aufgebaut, je nach dem was gerade für ein Element selektiert ist. Da es derzeit nur das Polygon gibt, schaut es immer gleich aus.

Muetze1 18. Mär 2008 00:20

Re: Events zur Designtime
 
Das einfügen von csClickEvents, csDesignInteractive oder csDoubleClicks in ControlStyle hat nichts gebracht bezüglich der Eventverarbeitung über die entsprechenden Mouse-Methoden zur Designzeit?

Medium 18. Mär 2008 01:33

Re: Events zur Designtime
 
Leider nicht. Diese Optionen haben, bis auf der Beschreibung nach csDesignInteractive, nur Auswirkungen auf ein Control zur Laufzeit. Setzen von csDesignInteractive hat allerdings in meinem Test auch keinen Unterschied gemacht, würde aber allein auch nicht ausreichen, da ich auch auf MouseMove, -Down und -Up reagieren will, evtl. mehr.

Was mich etwas stutzig macht ist, dass mir bislang noch keine Komponenten mit ansatzweise ähnlicher Editierbarkeit zur Designtime untergekommen sind. So sehr abwegig find ich das Bedürfnis danach eigentlich nicht.

stahli 18. Mär 2008 15:14

Re: Events zur Designtime
 
Hallo Medium,

die Lösung ist elegant umgesetzt und funktioniert ja auch nicht schlecht.

Allerdings kann ich das Ganze nicht so recht einordnen. Du erzeugst sozusagen eine Art Präsentation...!?
Die Optik kannst Du (zugegebener Maßen recht elegant) in der IDE zusammenbasteln und diese in eine Exe manifestieren...

Anderereseits wäre es m.E. sicher auch nicht aufwändiger gewesen, im Projekt zur Laufzeit eine "Arbeitsfläche (Designer+Palette)" bereitzustellen und ddie Polys dort zu bearbeiten. Das Ganze wird dann gespeichert und mit dem Projekt mitgegeben. Durch Ersetzen der Poly-Datei werden andere Komponenten angezeigt. Der Enduser muss ja keine Bearbeitungsmöglichkeit erhalten.

NICHTS gegen Deine Lösung - die ist schon beeindruckend. Nur, ich weiß nicht, ob´s wirklich unbedingt in der IDE sein muss...
Jedenfalls fallen mir keine Komponenten ein, bei denen das sonst noch notwendig wäre...


stahli

Medium 18. Mär 2008 16:00

Re: Events zur Designtime
 
Es geht dabei um sog. Prozessvisualisierung zur Anlagensteuerung und Überwachung, bei der eine Anlage (Teile eines Produktionsbetriebes o.ä.) visuell stilisiert dargestellt werden, und durch Farben und Ausgabefelder den Zustand der Anlage wiedergeben.
Dabei gibt es zwei Probleme, die ich so löse:
1) Es gibt sehr individuelle Anlagenteile, für die es sich nicht lohnt jeweils eine eigene Komponente zu schreiben. Sie unterscheiden sich jedoch meist nur in der Form von anderen, und daher war es sinnvoll eine generelle Lösung dafür zu finden.
2) Ein einzelnes Element sitzt inmitten von zig anderen, und sollte der Übersicht und Gefäligkeit wegen pixelgenau ordentlich positioniert sein, was zu erreichen eine Tortur ist, wenn man einen externen Editor bemüht. Da Elemente auch ganz normale VCL Komponenten wie Buttons und Edits sein können, ist die direkte Bearbeitung auf dem Designformular das Optimum.

Okay, ich gebe zu, die Anforderungen sind evtl. schon recht spezifisch :)

stahli 18. Mär 2008 16:17

Re: Events zur Designtime
 
Zitat:

Zitat von Medium
Okay, ich gebe zu, die Anforderungen sind evtl. schon recht spezifisch :)

Ok, dann gebe ICH auch zu, dass Deine Lösung dafür SEHR elegant ist! :thumb:

Wenn Du dort auch VCL-Komponenten einbindest (und vermutlich auch noch Schalterklicks behandelst) wäre es natürlich äußerst umständlich, das alles in der IDE zu organisieren und später zur Laufzeit die Polys hinzuzufügen.

Also Respekt nochmal :!:

Und gut, dass wir ausführlich drüber gesprochen haben...


stahli


PS: Als Screenrecorder kann ich übrigens auch den "HyperCam" empfehlen (klein aber fein, erzeugt allerdings nur avi) oder von DataBecker den Stream Catcher (beide 30 Eu).


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:41 Uhr.
Seite 3 von 4     123 4      

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