2009-08-08 3 views
2

Ich möchte in Delphi ein benutzerdefiniertes "Datamodul" erstellen, eine TDataModule-ähnliche (vielleicht vererbte) Klasse, die eine benutzerdefinierte Grid-basierte Designschnittstelle hätte (eine Komponente pro Zeile, einige Eigenschaften als Spalten) . Ist das möglich? Wo soll ich anfangen?Erstellen eines benutzerdefinierten Formular-Designers

Ich bin derzeit mit Delphi 2007

Antwort

2

Als Nick Hodges hier Zeiger aus:

Drawing on a DataModule in Delphi

wäre es schwierig, auf dem TDataModule Nachkommen zu malen. Wahrscheinlich nicht unmöglich, aber die Mühe sicher nicht wert.

Ich würde in Erwägung ziehen, ein komplett neues TDataModule von Grund auf neu zu entwerfen, damit Sie die vollständige Kontrolle darüber haben. Sicherlich viel Arbeit, aber am Ende würde es sich auszahlen.

Sie können die TDataModule-Klasse in der Unit Classes.pas finden. Aber das ist nur der Laufzeit-Teil des Codes. Andere Teile sind IDE-bezogen. Sie können die mit ToolsAPI in Verbindung stehenden Einheiten in "c: \ Programme \ Borland \ BDS \ 4.0 \ source \ ToolsAPI \" für BDS 2006 finden. Sie können auch Ihr eigenes Datenmodul aus TDataModule ableiten und bei RegisterCustomModule (DesignIntf.pas) registrieren. Ich weiß nicht viel mehr über dieses Thema, vielleicht andere. Wie gesagt, es wäre nicht leicht, so etwas zu tun. Aber vielleicht finden Sie mit dieser ersten Information, was Sie wollen.

+3

Nick sprach über das Zeichnen eines Hintergrunds für ein TDataModule zur Entwurfszeit. Ein Datenmodul ist eine nicht-visuelle Kontrolle. Sie können nicht zur Laufzeit angezeigt werden. –

+0

Haben Sie Hinweise, wie Sie ein völlig neues TDataModule entwerfen können? Ich denke, dass der Quellcode für den aktuellen TDataModule-Designer nicht verfügbar ist. – Harriv

+0

Ich aktualisierte die Antwort mit dem, was ich über das Thema weiß – Runner

0

Es ist genau das nicht möglich, wie Sie es beschreiben. Sie können keine visuellen Komponenten wie ein Raster auf einem Datenmodul platzieren. Sie benötigen dafür ein Formular oder einen Rahmen.

Wenn ich versuchen würde, etwas wie Sie beschreiben, würde ich ein Listenfeld verwenden, um eine Liste von einzelnen Komponenten, ein paar Schaltflächen und ein Auswahldialogfeld zum Hinzufügen und Löschen von Komponenten aus der Liste zu halten, und die TJvInspector-Komponente von der JVCL zum Ändern von Eigenschaften. Das wäre viel einfacher als der Versuch, ein einheitliches Raster zu erstellen, um mit der Situation fertig zu werden.

+0

Ich denke nicht an visuelle Komponenten, sondern TDataModule Ersatz für nicht-visuelle Komponenten. Ich denke, ich kann mit der Benutzeroberfläche Teil des Problems umgehen, aber ich habe keine Ahnung, wie Sie solche Dinge mit Delphi zu integrieren, so dass ich TMyOwnDataModule in Entwurfszeit erstellen und neue Komponenten hinzufügen kann. – Harriv

3

Vielleicht ist es möglich. Ein Beispiel für einen XML Frame Designer finden Sie auf der Seite New IDE Building Blocks. Nun, dieses Beispiel ist für Delphi 5, aber es könnte ein guter Ausgangspunkt sein.

+0

Vielen Dank, dass ich mich auf richtigen Weg hoffe, obwohl der Inhalt ziemlich unvollständig ist. – Harriv