![]() |
Suche Möglichkeit einen EingabeAssistenten zu erstellen.
Delphi BDS2006, Zielsystem XP/Vista
Hallo, ich habe ein Programm zur Parametrierung einer SPS/PLC/CPU (SpeicherProgrammierbareSteuerung)für die Sicherheitstechnik programmiert, diese Programm ist bereits bei mir in der Firma und bei einigen unserer Kunden im Einsatz. Das Problem ist aber, dass sich die Leute teilweise selbst Fehler und Abhängigkeiten einbauen, da es über 400 verschiedene Standardfunktionen gibt, die hier parametriert werden können. Beispiel: Der Benutzer legt einen Sabotageeingang fest, aber vergisst diese Funktion einen Ausgang zu zuweisen. Resultat der Kunde ruft bei uns an und erzählt uns dass die Software nicht geht ;-) Also habe ich mich dazu entschlossen für die weniger geübten Anwender einen Eingabeassistenten zu erstellen, der die nötigen Hinweise gibt und gleich dazu auffordert die Funktion entsprechend zu zuweisen: z.B.: Assistent: Bitte wählen die die Funktion für Eingang 11 aus.... Benutzer: Sabotage....<weiter> Assistent neuer Dialoginhalt: Sie haben noch keinen Sabotageausgang festgelegt....Bitte legen Sie fest welcher Ausgang dafür verwendet werden soll... usw. Ich möchte mit diesen Assistenten solche einfachen Eingabefehler/Funktionsfehler vermeiden. Aber jetzt kommt das eigentliche Problem, wie schaffe ich es so einen Assistenten am einfachsten zu erstellen ohne Wochenlang jeden einzelnen Dialog zu erstellen, oder während der Laufzeit ständig manuel den Assistenten-Dialog mit Texten, Eingabefeldern usw. zu ändern. Gibt es hier nicht die Möglichkeit für eine fertige Dialog-Komponente zurück zugreifen? Habe mich schon wund gegoggelt, aber nichts passendes gefunden. Wenn ich es manuel erstellen muss, gibt es die Mglichkeit die Eingabe-Controls aus dem Hauptfenster zu Klonen? Sprich, nur die optik befindet sich im Dialog, die Funktionen bleiben im Hauptform, somit würden die Eingaben eigentlich genau in das Hauptform gehen? (Würde ein bisschen Arbeit ersparen.) Schon mal vielen Dank |
Re: Suche Möglichkeit einen EingabeAssistenten zu erstellen.
Also die Regeln für die Funktions-Parameter müssen dem Programm beigebracht werden -> programmieren
Funktionen in der Hauptform -> igitt, Trennung von Ein- Ausgabe und Code Definiere Dir für die Funktionen jeweils eine Klasse, die sich selbst auf Konsistenz prüft. Über das Formular füllst du die entsprechende Klasse. Wenn alles ok, dann kann man auf OK drücken, sonst nicht. Hier mal eine Beispiel-Klasse:
Delphi-Quellcode:
Diese Klasse liefert über TDaten.OK nur dann True, wenn Data1 ungleich Data2 und beide Werte nicht 0 sind.
TDaten = class
private FData1 : integer; FData2 : integer; procedure SetData1( Value : integer ); procedure SetData2( Value : integer ); public property Data1 : integer read FData1 write SetData1; property Data2 : integer read FData2 write SetData2; function OK : Boolean; end; procedure TDaten.SetData1( Value : integer ); begin FData1 := Value; end; procedure TDaten.SetData2( Value : integer ); begin FData2 := Value; end; function TDaten.OK : Boolean; begin Result := ( FData1 <> FData2 ) and ( FData1 <> 0 ) and ( FData2 <> 0 ); end; Denkbar wäre jetzt auch noch eine Funktion, die mir einen beschreibenden Text zurückgibt (z.B. "Die Werte müssen unterschiedlich sein!") Dann kann man sich auch den Assistenten sparen und der Anwender kann nach Herzenslust im Formular rumklicken, bis alles im grünen Breich ist. cu Oliver |
Re: Suche Möglichkeit einen EingabeAssistenten zu erstellen.
Zitat:
Als Entwurfsmuster für die Validierung kommt das Besucher-Pattern ("Visitor") in Frage, mit dem die Validierungsregeln aus dem Kern-Code der Businesslogik herausgelöst werden kann. Dahinter steht als Gedanke, die möglicherweise über Dutzende von Klassen verteilten Informationen zentral in einer Validierungsklasse zu hinterlegen - die Klassen gehen nach dem Motto 'ich lass mich prüfen' statt 'och prüfe mich selber' vor. Innerhalb der Validierungsklasse kann man dann schneller alle beteiligten Objekte und Regeln analysieren, und auch leicht Varianten der Prüfungen erstellen, ohne dazu wieder in Kernklassen eingreifen zu müssen. Für die Oberfläche sind die in der JVCL enthaltenen Jv Validator Komponenten möglicherweise brauchbar - sie markieren in einem Dialog die Eingabefeldern, die falsche Daten enthalten. Für Wizards kann man dann die Jv Wizard Komponenten einsetzen. p.s. Anregungen kann man sich auch schön aus Anwendungen wie z.B. für die Einkommensteuererklärung holen, dort werden ja gerade für die Laien jede Menge Erleichterungen implementiert, wie z.B. das Markieren von 'noch zu korrigierenden' Daten, die Programme sind so freundlich und erlauben das Beenden auch mit (noch) unvollständigen / inkonsistenden Daten. Dass 90 Prozent des Aufwands dann auf die Oberfläche anfallen, kann man sich vorstellen. |
Re: Suche Möglichkeit einen EingabeAssistenten zu erstellen.
Hallo Sir Rufo.
Zitat:
Zitat:
z.B.: Warnung: Es wurden 2 Sabotageeingänge festgelegt, bitte prüfen Sie, ob dies beabsichtigt ist Fehler: Es wurde für die Sabotage kein Ausgang festgelegt... Vieleicht könnte ich hier noch entsprechend die Eingabefelder rot=Fehler gelb=Warnung hinterlegen, das sieht der Anwender sofort beim durchklicken der Tab's. |
Re: Suche Möglichkeit einen EingabeAssistenten zu erstellen.
Hallo mjustin,
Zitat:
Da ich aber selbst die LMD2007-Tools einsetze hatte ich die JVCL noch nicht näher angeschaut, aber das mache ich jetzt mal. Erstmal vielen Dank an Sir Rufo und mjustin. Aber ich gebe euch auf jedenfall hier noch mal die Info, wie ich es umgesetzt habe. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:28 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