![]() |
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. |
AW: Simplen eigenen Formulardesigner entwickeln
@ stahli .... danke schau ich mir an.
@ Neutral General Ja, du hast recht der Bau der Formulare soll selbst geschehen, bzw. anpassbar sein. Die letzten Formulare waren immer Hardcoded in der Anwendung verankert. Das wollte ich jetzt mal ändern. Wie gesagt, von Rave oder Fastreport wollte ich abstand nehmen, weil ich die Gestaltung für meine Zwecke frei und klein halten möchte. Die Arbeit scheu ich nicht, weil da auch ein gewisser Lerneffekt hinter steckt. |
AW: Simplen eigenen Formulardesigner entwickeln
Stahli kann ich die odDesigner in Delphi7 als Komponente regestrieren?
|
AW: Simplen eigenen Formulardesigner entwickeln
Also "frei" bist du mit FastReport auf jeden Fall.
Klein.. Naja kommt drauf an was du meinst bzw. ist bei FastReport nicht sogar auch der Code dabei sodass man den ReportDesigner theoretisch seinen Wünschen anpassen kann? Ansonsten hoffe ich dass das ein privates Projekt für den Spaß ist, denn sowas für ein kommerzielles Projekt selbst zu machen ist eine riesige Zeit und Geldverschwendung. So oder so sollte dir bewusst sein, dass dir wahrscheinlich nicht bewusst ist wie viel Arbeit hinter sowas liegt. Vor allem wenn das Ergebniss am Ende funktionieren und halbwegs gut aussehen soll. Ein Projekt bei mir auf der Arbeit hatte vorher etwas Selbstgebautes wo man nur eine DataTable in Tabellenform ausdrucken konnte. Es gab keinerlei Designer oder Einstellmöglichkeiten, der Code hatte mehrere 1000 Zeilen Code und es sah aus wie hingekotzt. |
AW: Simplen eigenen Formulardesigner entwickeln
@daniel775
Nein, die Komponente ist Teil eines kompletten Frameworks. Installieren kannst Du die so nicht. Du kannst Dir nur ein paar Umsetzungen abschauen, wenn Du magst. |
AW: Simplen eigenen Formulardesigner entwickeln
Also undokumentiert ist es echt schwer sich da durch zu lesen.
Was ich bisher verstanden habe ist, das du ein Panel abgeleitet hast und diese scheinbar als Objekte auf eine abgeleitete Scrollbox gelegt werden. Die Panel Objekte werden in einer abgeleiteten Klasse Listbox gespeichert. Wo allerdings die passende Klasse TodListbox ist?!?!. :? Naja ... werde mal weiter schauen. |
AW: Simplen eigenen Formulardesigner entwickeln
Das hier habe ich als Basis für eine frei konfigurierbare Programmoberfläche genommen:
![]() |
AW: Simplen eigenen Formulardesigner entwickeln
@daniel775
Ja sorry, ich kann das aber jetzt auch nicht entfrachten. Die Panels haben ein eigenes Verschiebe-Verhalten, wenn sie Einträge einer TodListbox sind. Diese Funktionen kannst Du ignorieren. Du müsstest Dich (wenn Du es selbst realisieren willst) mit den Drag-, Drop- und BeginDrag-Methoden beschäftigen. Meinen Schnipsel kannst Du dann höchstens als Anregung sehen. Kann natürlich auch sein, dass das eher verwirrt als hilft... :-/ |
AW: Simplen eigenen Formulardesigner entwickeln
@ Neumann
Das sieht vielversprechend aus. Vielen Dank. Mal schauen was sich daraus machen lässt. @ stahli Vielleicht lässt sich das jetzt mit deiner Hilfe kombinieren. Mal schauen. |
AW: Simplen eigenen Formulardesigner entwickeln
Die Objekte in dem Simplegraph habe ich um einige Eigenschaften ergänzt z.B Typ, Action und einige mehr.
Man kann sie dann einfach wie Buttons verwenden (ein OnClick gibt es bereits) andere nutze ich als Platzhalter für Edits Datengitter usw. die dann bei Anzeige des Simplegraph platziert werden. Hat man viele buttonartige Objekte kann man die den Klick dann über den zugewiesenen Typ und die Action auswerten und verarbeiten. Großer Vorteil ist dass man sich so eine Oberfläche zusammenbauen und die ohne Neukompilieren der Anwendung angepasst werden kann. Die Möglichkeit diese Oberfläche dann zu speichern und zu laden ist auch schon vorhanden. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:37 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