Frage

Ich muss eine Benutzeroberfläche für die Eingabe eines Verkaufsdokuments (z. B. Rechnung) generieren. Ich versuche, Komponenten von "Developer Express", insbesondere der Quantengrid -Komponente (TCXGrid) zu verwenden. Ich habe die Demos der Master-Detail-Komponenten und die Suche im Devexpress-Support-Center gesehen, aber keiner hat mir geholfen, da alle 2 Gitter verwendet werden, um die Master-Detail-Beziehung zu verarbeiten und mehrere Datensätze gleichzeitig zu bearbeiten.

Ich muss nur einen Datensatz (Dokument) gleichzeitig und ein Paar Objektkomponenten (z. B. tdbedit) im Header und ein Raster verwenden, um das Detail zu verarbeiten.

etwas wie das

alt text

Wo finde ich ein grundlegendes Beispiel für die Verwendung dieser Komponenten auf diese Weise?

War es hilfreich?

Lösung

Die Master/Child -Eigenschaften in der Quantengrid sind hauptsächlich so konzipiert, dass mehrere Elemente im Netz verschoben werden. Wenn Sie die Beziehung in den Datenkomponenten einrichten, können Sie die Steuerelemente einfach an die richtige DataSource anschließen und alles funktioniert.

Wenn Sie also zwei Datensätze haben, Kunden und Rechnung. Die Rechnungsmaster -DataSource ist die Kundendatenquelle. Auf Ihrer Bearbeitungssteuerung verweisen Sie dann auf die Kundendatenquelle und verweisen das Netz auf die Rechnungsdatenquelle.

Wenn Sie darüber nachdenken, in welcher Master-/Detail -Beziehung sich dies tut, filtert sie die Datensätze im Detail -Datensatz so, dass sie mit dem aktuellen Datensatz im Master -Datensatz übereinstimmen. Individuelle Bearbeitungssteuerung zeigt immer den "aktuellen" Datensatz in dem Datensatz an, mit dem sie verbunden sind. Die Gitter zeigen alle sichtbaren Datensätze im Datensatz, mit dem sie verbunden sind.

Ich neige dazu, Master-/Detail -Beziehungen in einem Bearbeitungsformular, wie Sie es hier zeigen, nicht zu verwenden. Ich gehe davon aus, dass es auf einem anderen Bildschirm einen Weg gibt, um die zum Bearbeiten von Rechnungen auszuwählen. Normalerweise erstelle ich eine Kopie der benötigten Datensätze mit nur den für diese Bearbeitung erforderlichen Datensätzen. Wenn ich eine vorhandene Rechnung bearbeite, kopiere ich die aktuellen Datensätze. Wenn es sich um eine neue Rechnung handelt, kann ich mit einem leeren Datensatz beginnen. Es ist mehr Arbeit - ich habe einige generische Bibliotheksfunktionen, die eine Datensatzstruktur kopieren und dann eine oder mehrere Datensätze in diesen Datensatz kopieren. Abhängig von Ihrem Setup können Sie auch Ihre Datenbank anfordern, um nur die Datensätze zu erhalten, an denen Sie interessiert sind. Offensichtlich sollte dies in allen Fällen nicht erfolgen. Ein weiteres Problem mit diesem Ansatz ist, dass Sie eine Möglichkeit benötigen, andere Datensätze mit diesen Daten zu aktualisieren - dh Ihr Hauptsuchbildschirm.

Sobald ich jedoch auf den Bearbeitungsbildschirm bin, finde ich es echiser. Jetzt muss ich mir keine Sorgen um die Master -Detail -Beziehung auf der obersten Ebene machen. Wenn die Rechnung über interne Master-/Detail -Beziehungen verfügt, können Sie sich nur damit befassen, aber Sie wissen, dass die Datensätze nur die Daten für diese eine Rechnung haben - nicht alles in der Datenbank.

Wenn Sie die Daten in den Datensätzen einschränken, können Sie im Falle Ihres Formulars einfach alles direkt anschließen und es sollte wie erwartet funktionieren. Sie hätten nur einen Datensatz im Kundendatensatz und die Rechnung würde nur die Datensätze für diese Rechnung haben.

Andere Tipps

Ich denke, Sie müssen sich um die Master-Detail-Beziehungen in Ihren ClientDataSource-Komponenten kümmern. Das Raster folgt dann dieser Beziehung.

Warum fragen Sie das nicht unter support@devexpress.com?

Der Grund, warum ich ein VCL -Abonnement habe, ist, abgesehen von der Qualität der Komponenten natürlich, weil sie eine großartige Support -Site und Mitarbeiter haben?

Dort fragen Sie es direkt an die Leute, die das Zeug geschrieben haben, und sie freuen sich höchstwahrscheinlich, Ihnen ein Beispielprogramm zu liefern (zumindest habe ich im Laufe der Jahre viele Muster erhalten).

Die Prämisse ist die gleiche wie bei jeder anderen Master-Detail-Beziehung, unabhängig von den Komponenten. Sie müssen das Master-Detail auf der Datensatzebene einrichten, um das zu erreichen, was Sie wollen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top