Delphi-PRAXiS
Seite 1 von 2  1 2      

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/)
-   -   Simplen eigenen Formulardesigner entwickeln (https://www.delphipraxis.net/193868-simplen-eigenen-formulardesigner-entwickeln.html)

daniel775 18. Sep 2017 10:27

Simplen eigenen Formulardesigner entwickeln
 
Hallo,

kann mir jemand mal ein paar Denkanstösse geben, wie man einen einfachen Formulardesigner entwickelt. Der muss nichts großartiges können. Reichen würden im Prinzip 2, 3 Controls die z.B. auf ein TCustomControl gesetzt werden was ein DINA4 Blatt mit Randeinstellungen darstellt. Eine Horizontale Linie, ein Label und ein Image-Control.

Als Eigenschaft haben solche Labels dann z.B. Name1, Zusatz, Name2, Strasse/Hausnr, PLZ und Ort. Im Prinzip wie in MS Word der Serienbriefdesigner. Nur das man per Drag&Drop die Komponenten auf das Blatt platziert. Anschließend würde ich gerne die x, y Positionen der Controls mit den Randeinstellungen des Blatts auslesen und in einer DB wegspeichern.

Oder hat schon mal jemand so etwas entwickelt was man frei nutzen bzw. erweitern kann? Ein paar Beispiele habe ich schon hier im Forum gesehen. Die sind allerdings mehr ein Formulardesigner für Forms in Delphi.

Die Verwendung von Rave oder FreeReport wollte ich vermeiden, da ich frei in der Darstellung bleiben möchte. Gearbeit habe ich schon einmal damit, bin auch damit vertraut. Ich bin mir bewusst das man sich dann um alles selbst kümmern muss. Ich habe schon einmal ein statisches Formular mit der TPrint Komponente entwickelt. Allerdings würde ich gern einwenig komfor einbauen, was mir die Sache mit dem Design in der Voransicht und der Übersicht erleichert.

Hinzu kommt das ein Logo platziert werden muss. Da habe ich gelesen das dass mit RaveReport nicht so einfach sein soll.

Genutzt wird Delphi 7 Prof.

Beste Grüße

daniel775 18. Sep 2017 12:23

AW: Simplen eigenen Formulardesigner entwickeln
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ich habe gerade mal ein Beispiel gemacht, damit ihr ungefähr eine Vorstellung habt was ich meine.
(Siehe Anhang)

stahli 18. Sep 2017 12:32

AW: Simplen eigenen Formulardesigner entwickeln
 
Kannst Du mal präzisieren, was Du genau wissen willst?

Wie man eine Palette erstellt und Controls davon zieht oder wie man Controls im Designer verschieben kann oder wie man die Positionen auf ein Blatt umrechnet?

Grundsätzlich könntest Du die Controls in einer Textdatei (oder auch Ini oder XML) speichern
Zitat:

Panel
Left=100
Top=100
Width=100
Height=100
und so bei Bedarf wieder dynamisch herstellen.

daniel775 18. Sep 2017 13:06

AW: Simplen eigenen Formulardesigner entwickeln
 
Die Labels habe ich jetzt händisch auf das Image Control gesetzt. Und dabei habe ich gerade festgestellt, das sich bei dem Image Control überhaupt keine Komponenten unterordnen lassen. Dementsprechend geht Image1.Controls[] leider nicht. Also müsste ich warscheinlich auf ein Panel ausweichen. Nur das Panel hat wiederum kein Canvas. Somit geht

Code:

  Panel2.Canvas.Brush.Color := clwhite;
  Panel2.Canvas.Pen.Color := clblack;
  Panel2.Canvas.Pen.style := psDashDot;
  Panel2.Canvas.Rectangle(20, 20, 560, 620);
leider auch nicht.

Würde gern auf den Button "H-Line" klicken und diesen dann per Drag&Drop auf das Image setzen und ggf. nach dem positionieren noch korrigieren ohne zu löschen. Was jetzt auch nicht so schlimm wäre, aber das korrigieren fände ich besser. Oder in der Combo-Box ein Element auswählen und dieses dann per Drag&Drop als Label z.B. platzieren. Wie ich die Koordinaten bei den Labels, H-Lines oder Images dabei schreibe und auslese oder hinterher die Control Positionen per Schleife mit z.B.
Code:
for i := 0 to Panel1.ControlCount - 1 do
begin
 if (Panel1.Controls[i] is TLabel) then
 begin
 end;
end;
auslese ist mir bekannt. Nur hab ich leider noch nie Drag&Drop funktionen geschrieben oder ausgewählte Elemente in Comboboxen in Label Kompo´s umgewandelt und auf ein Panel gesetzt.

stahli 18. Sep 2017 13:55

AW: Simplen eigenen Formulardesigner entwickeln
 
Meinst Du ungefähr so etwas? https://www.youtube.com/watch?v=8-mcMRl46Aw
Wenn Du nichts fertiges findest, kann ich mal die Quellen mal raussuchen (das war aber in ein komplexeres Framework eingebettet).

Du müsstest halt mal Versuche mit Drag&Drop machen.
Grundsätzlich muss man sich sich die Klickposition (X/Y) auf dem Control merken und dann auf MouseMove über dem eigenen Control reagieren.
Dazu setzt man das Control dann auf an die aktuelle Mausposition -X/Y.
Dabei muss man aber die Positionen relativ zum Parent berücksichtigen und auch, dass sich die Maus über dem Parent oder anderen Controls bewegen kann.

Das "runterziehen von der Palette" ist etwas komplizierter. Da kann man ein neues Control auf den Designer setzen und dafür StartDrag aufrufen...

daniel775 18. Sep 2017 14:10

AW: Simplen eigenen Formulardesigner entwickeln
 
Zitat:

Meinst Du ungefähr so etwas? https://www.youtube.com/watch?v=8-mcMRl46Aw
Ja sowas meinte ich.

Jens01 18. Sep 2017 14:33

AW: Simplen eigenen Formulardesigner entwickeln
 
http://www.delphiarea.com/products/d...nents/preview/

daniel775 18. Sep 2017 14:55

AW: Simplen eigenen Formulardesigner entwickeln
 
Jepp... die Komponente nutz ich schon für die Vorschau

stahli 18. Sep 2017 14:56

AW: Simplen eigenen Formulardesigner entwickeln
 
Liste der Anhänge anzeigen (Anzahl: 1)
Es ist sicher sinnvoll, ein fertiges Framework dazu zu verwenden.

Für alle Fälle anbei aber mal zwei Dateien zur Orientierung für eine eigene Lösung.
Du müsstest Dir die entsprechenden Stellen wie BeginDrag, DragOver, DragDrop heraussuchen. Sorry, dass das nicht übersichtlicher ist.

Neutral General 18. Sep 2017 15:02

AW: Simplen eigenen Formulardesigner entwickeln
 
Auch wenn das keine direkte Antwort auf deine Frage ist:

Kann es sein dass du einfach nur einen Reportdesigner/generator brauchst bzw. bauen willst?
Sollen sich deine Kunden im Programm selbst Rechnungen/Briefe designen können?

Falls ja, dann such mal nach Bei Google suchenDelphi report generator oder z.B. nach Bei Google suchenFastreport (Ist bei neueren Delphi Versionen schon dabei!).

Das erspart dir 1000000000000 Stunden Arbeit und man hats sehr schnell eingebaut und kann damit echt in kurzer Zeit schöne Reporte erstellen.


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