Laden...

ProFormX

Erstellt von dr4g0n76 vor 14 Jahren Letzter Beitrag vor 14 Jahren 7.698 Views
dr4g0n76 Themenstarter:in
2.921 Beiträge seit 2005
vor 14 Jahren
ProFormX

EDIT: Die komplette Version ab 14.09.2009, immer in diesem Thread:

siehe Dateianhang

Da es doch immer wieder Nachfragen nach meinem Formular-Editor gibt, habe ich beschlossen, einen Snapshot hier zu veröffentlichen.

Der Code ist nicht obfuskiert. Für einen kompletten Upload des Source-Codes ist hier viel zu wenig Platz. Habe keinen WebServer. Rapidshare reicht nicht aus.

Wer wissen möchte worum es geht, der suche bitter hi im Forum nach "FormularEditor" oder Control(s) á la Word

Ich werde hier das komplette File veröffentlichen.

Vorerst nur diese eine Zwischenversion, ob ich noch weitere Versionen veröffentlichen werde, weiß ich nicht.

EDIT: Verweise hier im Forum die interessant für dieses Projekt sind:

[gelöst] Richtextbox Inhalt ohne Control auf Canvas darstellen/zeichnen
Formeleditor
Funktionsplotter
LowLevelGraphicsLibrary
Control(s) á la Word
Skalieren von editierbarem Framework (Zoom)
[Einführung] Zeichnen Optimieren / Schnelles zeichnen
[Artikel] CustomDialogs
[gelöst] Speichern der Projektdateien inkl. Ressourcen - Formulareditor
Generische Liste mit Events
RichTextBox, Hinweis: Ausrichtung in Tabellen funktioniert nicht, gültig für .NET 2.0
EventHandling mit vielen Events
[gelöst] MVC (Model View Controller), mehrere Seiten
Grafik mit GDI+

und div. andere...

Seit der Erkenntnis, dass der Mensch eine Nachricht ist, erweist sich seine körperliche Existenzform als überflüssig.

dr4g0n76 Themenstarter:in
2.921 Beiträge seit 2005
vor 14 Jahren

Noch ein Screenshot:

Seit der Erkenntnis, dass der Mensch eine Nachricht ist, erweist sich seine körperliche Existenzform als überflüssig.

dr4g0n76 Themenstarter:in
2.921 Beiträge seit 2005
vor 14 Jahren
ProFormX binaries

EDIT: vorweg, bevor jemand fragt: JA das Programm hat noch SEHR viele Fehler.

Snapshot vom 01.01.2009

Hier also das komplette ausführbare Projekt als Snapshot. Den Code habe ich bisher nicht beigefügt das Programm lässt sich aber ganz normal disassemblieren, da es nicht obfuskiert ist.

Was ist das für ein Programm?

Mit diesem Programm sollten die Lücken zw. Word-, Excel-, Visio und einigen anderen geschlossen werden.

Es können z.B. 3 Elemente ("TextBoxen") erstellt werden, danach kann eine Formel wie in Excel definiert werden und z.B. die 3 Textbox zeigt dann dieses Ergebnis an.

Das geht in Word oder Visio nicht gar so einfach und schnell (oder ich bin einfach nur zu unwissend)

Das Programm wird also so nicht mehr hier gepostet werden, und da ich angefangen habe einige Dinge zu redesignen zu diesem Zeitpunkt, funktioniert einiges nicht so wie gedacht. Aber ich finde es ist ein sehr interessantes Anschauungsprojekt, deshalb stelle ich es hier - mit diesem Stand - zur Verfügung.

Wie werden Events behandelt?

Es gibt dafür einen eigenen Tool-Namespace in denen die Klassen die von Toolbase ableiten und die Klasse selber sich befinden.

Jede Toolbase Klasse bietet jeweils ein OnPaint-, MouseUp-, MouseDown- und ein MouseMove-Event. Diese Tools werden "aktiviert" sobald sie benötigt werden (bestimmte Kollisionsabfrage).

Zuerst hatte ich die Funktionalität von CMoveTool und CSelectionTool vermischt, d.h. das MoveTool hat zusätzlich einzelne Elemente per Mausklick selektiert. Und das SelectionTool hat den Rest gemacht (Selektion per Rechteck).

Aber warum sollte denn ein MoveTool etwas selektieren, wenn es schon "MoveTool" heißt? Deswegen hatte ich zu diesem Zeitpunkt angefangen das ganze umzudesignen.

Ihr werdet feststellen, dass es noch viele Fehler gibt.

Das Programm besteht momentan aus folgenden Komponenten:


Plugin.dll - momentan noch nicht benutzt, für Plugins als Erweiterungen
PrinterLib.dll - für Ausdrucke und bestimmte Helfer im Zusammenhang mit Druckern
FutureComputingLibrary.dll (heißt momentan noch TSOLibrary.dll)
GfxFramework.dll - komplettes grafisches Framework, kann auch ohne die Anwendung benutzt werden
ProFormXEngine.dll - Alle Funktionen die ProFormXViewer.exe oder ProFormX.exe 
benötigen
LowLevelGraphics.dll - diese wurde hier im Forum schon vorgestellt: [url]LowLevelGraphicsLibrary[/url]

[B]Welcher Modellansatz wurde gewählt, um alles anzuzeigen (grafische Objekte)?
[/B]

Ich hab den Ansatz Modell-View-Controller (MVC) gewählt.

Es gibt eine Datenklasse die alles enthält. Die Repräsentation der Daten findet auf einer GraphView statt. Die Maus und die Tastatur bieten den Controller. z.B. kann mit PageUp/PageDown gezoomt werden (funktioniert aber HIER in diesem Snapshot noch nicht richtig).

Es gibt zwei grundlegende Arten von Objekten in der Grafiklibrary:

GraphNodes und Connectors.

GraphNodes sind alle Elemente die sich direkt verschieben lassen (rechteckig oder rund) der Auswahlbereich ist immer rechteckig (bisher).

Connectors sind alle Arten von Verbindern.

AxInterop.SHDocVw.dll - Im Zusammenhang mit Internet-Explorer ActiveX benutzt...
Interop.SHDocVw - dito IE-ActiveX

P.S.: Habt ihr schon rausgefunden, wie man Pfeile zur Laufzeit erstellt, die die einzelnen Elemente miteinander verbinden? 😉

Hinweis: Außer den Explorer-ActiveX-Klassen wurde alles komplett von mir entwickelt. (abgesehen von Klassen/Komponenten etc. die ich aus mycsharp entnommen hatte, ein Lob an die Community an dieser Stelle)

Seit der Erkenntnis, dass der Mensch eine Nachricht ist, erweist sich seine körperliche Existenzform als überflüssig.

dr4g0n76 Themenstarter:in
2.921 Beiträge seit 2005
vor 14 Jahren

Bsp. für eine Node:

Seit der Erkenntnis, dass der Mensch eine Nachricht ist, erweist sich seine körperliche Existenzform als überflüssig.

dr4g0n76 Themenstarter:in
2.921 Beiträge seit 2005
vor 14 Jahren

Bsp. 1 für einen Connector:

Seit der Erkenntnis, dass der Mensch eine Nachricht ist, erweist sich seine körperliche Existenzform als überflüssig.

dr4g0n76 Themenstarter:in
2.921 Beiträge seit 2005
vor 14 Jahren

Bsp. 2 für einen Connector:

Seit der Erkenntnis, dass der Mensch eine Nachricht ist, erweist sich seine körperliche Existenzform als überflüssig.

dr4g0n76 Themenstarter:in
2.921 Beiträge seit 2005
vor 14 Jahren

und schließlich Bsp. 3 für einen Connector:

Seit der Erkenntnis, dass der Mensch eine Nachricht ist, erweist sich seine körperliche Existenzform als überflüssig.

dr4g0n76 Themenstarter:in
2.921 Beiträge seit 2005
vor 14 Jahren

Was muss man machen, um das GfxFramework in eigenen Anwendungen zu benutzen?

  1. Einen Verweis auf die GfxFramework.dll einbinden.
  2. den Namespace "FutureComputingLib.GfxFramework" einbinden:

using FutureComputingLib.GfxFramework;

  1. Ein FormControl instantiieren:

private FormControl m_FormControl = new FormControl();

  1. dieses mit einem Control / Form verbinden, damit ihr auch etwas seht.

Normalerweise sieht das ganze dann am Anfang so aus:


using FutureComputingLib.GfxFramework;

namespace FrameWorkInitialization
{
	public partial class Form1 : Form
	{
		private FormControl m_FormControl = new FormControl();

		public Form1()
		{
			InitializeComponent();
			m_FormControl.Parent = this;
		}
	}
}

Und um etwas zu sehen, sollten wir noch eine GraphNode hinzufügen:

wir fügen also noch folgenden Namespace ein:


using FutureComputingLib.GfxFramework.GraphControls;

und jetzt können wir im Constructor ein:


m_FormControl.Add(new CGraphNode());

anhängen.

Fertig.

Seit der Erkenntnis, dass der Mensch eine Nachricht ist, erweist sich seine körperliche Existenzform als überflüssig.

71 Beiträge seit 2008
vor 14 Jahren

Bei mir startet das Programm nicht. Es wird die 'System.IO.DirectoryNotFoundException' ausgelöst.

dr4g0n76 Themenstarter:in
2.921 Beiträge seit 2005
vor 14 Jahren

Folgende Unterverzeichnisse sollten im ProFormX Verzeichnis existieren:


ColorPanelBitmaps
de
Log
Plugins
res
res\Languages
ScriptTemp
Templates
UserLogs

Log wird normalerweise genauso wie UserLogs vom Logging des Programms erstellt.

Seit der Erkenntnis, dass der Mensch eine Nachricht ist, erweist sich seine körperliche Existenzform als überflüssig.

dr4g0n76 Themenstarter:in
2.921 Beiträge seit 2005
vor 14 Jahren
Code Veröffentlichung

Wenn ihr möchtet kann ich hier gerne den Code veröffentlichen. Werde das halt dann abschnittsweise tun müssen. Pro DLL und Pro Exe. Sonst ist es zuviel.

Seit der Erkenntnis, dass der Mensch eine Nachricht ist, erweist sich seine körperliche Existenzform als überflüssig.

M
221 Beiträge seit 2008
vor 14 Jahren

Deine Aussage Rapidshare reicht nicht, ist nicht wirklich richtig^^!

Du kannst ja die ganzen Dateien zippen, und in mehrere Teile aufteilen!
Ich bin interessiert an source und exe!

dr4g0n76 Themenstarter:in
2.921 Beiträge seit 2005
vor 14 Jahren
Dll zum Drucken und zur Druckvorschau

PrinterLib:

Diese Dll wird zum Drucken und zur Druckvorschau benutzt.

Seit der Erkenntnis, dass der Mensch eine Nachricht ist, erweist sich seine körperliche Existenzform als überflüssig.

dr4g0n76 Themenstarter:in
2.921 Beiträge seit 2005
vor 14 Jahren
GfxFramework DLL

Diese Datei bildet das Herzstück für das Framework. Die grafische Bibliothek.

Hier befindet sich auch das weiter oben beschriebene Control auf dem die Nodes angezeigt werden können.

Seit der Erkenntnis, dass der Mensch eine Nachricht ist, erweist sich seine körperliche Existenzform als überflüssig.

dr4g0n76 Themenstarter:in
2.921 Beiträge seit 2005
vor 14 Jahren

Weitere werden folgen... (Achtung, so lässt sich das Gebilde noch nicht übersetzen)

EDIT: hier folgt jetzt die nächste Lib

Seit der Erkenntnis, dass der Mensch eine Nachricht ist, erweist sich seine körperliche Existenzform als überflüssig.

dr4g0n76 Themenstarter:in
2.921 Beiträge seit 2005
vor 14 Jahren
Abhängigkeiten:

Abhängigkeiten (von den Projekten untereinander):

Action.dll: -

FutureComputingLib.dll: -

GfxFramework: FutureComputingLib.dll
PrinterLib.dll

ProFormXEngine.dll:
FutureComputingLib.dll
GfxFramework.dll
Licensing.dll
LowlevelGraphics.dll

ProFormXViewer.Exe:
GfxFramework.dll
ProFormXEngine.dll

ProFormX.Exe:
FutureComputingLib.dll
GfxFramework.dll
Licensing.dll
LowlevelGraphics.dll

Seit der Erkenntnis, dass der Mensch eine Nachricht ist, erweist sich seine körperliche Existenzform als überflüssig.

dr4g0n76 Themenstarter:in
2.921 Beiträge seit 2005
vor 14 Jahren
ProFormX.Exe

Die Hauptapplikation (Source):

Seit der Erkenntnis, dass der Mensch eine Nachricht ist, erweist sich seine körperliche Existenzform als überflüssig.

dr4g0n76 Themenstarter:in
2.921 Beiträge seit 2005
vor 14 Jahren
ProFormXViewer.exe

der Viewer:

Seit der Erkenntnis, dass der Mensch eine Nachricht ist, erweist sich seine körperliche Existenzform als überflüssig.

dr4g0n76 Themenstarter:in
2.921 Beiträge seit 2005
vor 14 Jahren

Und hier die Hauptanwendung:

Seit der Erkenntnis, dass der Mensch eine Nachricht ist, erweist sich seine körperliche Existenzform als überflüssig.

dr4g0n76 Themenstarter:in
2.921 Beiträge seit 2005
vor 14 Jahren

Das komplette Projekt gibt es jetzt hier im obersten Post zum Download. Mit Binaries.

Die exe findet ihr dann unter:

ProFormX\bin\Debug\ProFormX.exe

Seit der Erkenntnis, dass der Mensch eine Nachricht ist, erweist sich seine körperliche Existenzform als überflüssig.