![]() |
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 |
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) |
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:
|
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:
leider auch nicht.Panel2.Canvas.Brush.Color := clwhite; Panel2.Canvas.Pen.Color := clblack; Panel2.Canvas.Pen.style := psDashDot; Panel2.Canvas.Rectangle(20, 20, 560, 620); 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:
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.
for i := 0 to Panel1.ControlCount - 1 do
begin if (Panel1.Controls[i] is TLabel) then begin end; end; |
AW: Simplen eigenen Formulardesigner entwickeln
Meinst Du ungefähr so etwas?
![]() 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... |
AW: Simplen eigenen Formulardesigner entwickeln
Zitat:
|
AW: Simplen eigenen Formulardesigner entwickeln
|
AW: Simplen eigenen Formulardesigner entwickeln
Jepp... die Komponente nutz ich schon für die Vorschau
|
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. |
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 ![]() ![]() 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 00:12 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-2025 by Thomas Breitkreuz