 |
| |
|
|
 |
Autor |
Nachricht |
 |
| |
| tdeck |
#1| Verfasst am: 06.01.2009, 00:52 Titel: Suche Möglichkeit einen EingabeAssistenten zu erstellen. |
 |
 |
 |
|
Mitglied Status: offline Beiträge: 13 angemeldet: 26.06.2006 Wohnort: Heusenstamm Delphi 2006 Professional

|
Sprache: Delphi (Win32) 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 |
 bye bye
tdeck |
 |
|
|
|
| |
| Sir Rufo |
#2| Verfasst am: 06.01.2009, 01:19 Titel: Re: Suche Möglichkeit einen EingabeAssistenten zu erstellen. |
 |
 |
 |
|
sehr aktives Mitglied Alter: 42 Status: offline Beiträge: 891 angemeldet: 05.01.2005 Wohnort: Stadthagen Delphi 2010 Professional

|
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: | zusammenfalten | markieren | 1 · · · 5 · · · · 10 · · · · 15 · · · · 20 · · · · 25 · · 28
| 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; |
|
Diese Klasse liefert über TDaten.OK nur dann True, wenn Data1 ungleich Data2 und beide Werte nicht 0 sind.
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 |
 Kaum macht man's richtig - schon funktioniert's |
 |
|
|
|
| |
| mjustin |
#3| Verfasst am: 06.01.2009, 10:22 Titel: Re: Suche Möglichkeit einen EingabeAssistenten zu erstellen. |
 |
 |
 |
|
aktives Mitglied Beiträge: 640 angemeldet: 14.04.2008 Delphi 2009 Professional

|
| tdeck hat folgendes geschrieben: | Delphi BDS2006, Zielsystem XP/Vista
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?
|
Für die Validierung in der Geschäftslogik würde ich mit einer simplen Ausgabe der entdeckten Fehler in einer Textliste starten, eventuell dabei nach Fehler und Warnung getrennt, damit der Anwender sich auf die wichtigen Punkte zuerst konzentrieren kann.
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. |
 SCJP, SCJA
http://www.mikejustin.com - http://www.betabeans.de |
 |
|
|
|
| |
| tdeck |
#4| Verfasst am: 08.01.2009, 18:03 Titel: Re: Suche Möglichkeit einen EingabeAssistenten zu erstellen. |
 |
 |
 |
|
Mitglied Status: offline Beiträge: 13 angemeldet: 26.06.2006 Wohnort: Heusenstamm Delphi 2006 Professional

|
Hallo Sir Rufo.
| Sir Rufo hat folgendes geschrieben: | 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
|
Das war nur erstmal eine IDEE
| Sir Rufo hat folgendes geschrieben: | 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.
|
Ok, das ist ein Lösungsansatz, das würde ich dann wie mjustin schon gesagt hatte, mit einen Infofeld machen:
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. |
 bye bye
tdeck |
 |
|
|
|
| |
| tdeck |
#5| Verfasst am: 08.01.2009, 18:09 Titel: Re: Suche Möglichkeit einen EingabeAssistenten zu erstellen. |
 |
 |
 |
|
Mitglied Status: offline Beiträge: 13 angemeldet: 26.06.2006 Wohnort: Heusenstamm Delphi 2006 Professional

|
Hallo mjustin,
| mjustin hat folgendes geschrieben: |
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.
|
Die JVCL habe ich nur mal kurz überflogen, die meisten Compon. sehen der LMD2007 sehr ähnlich (oder umgekehrt ).
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. |
 bye bye
tdeck |
 |
|
|
|
 |
|
 |
| |
|
|
| |
 
|
|
| |
|
Du darfst keine Beiträge in dieses Forum schreiben. Du darfst auf Beiträge in diesem Forum nicht antworten. Du darfst Deine Beiträge in diesem Forum nicht bearbeiten. Du darfst Deine Beiträge in diesem Forum nicht löschen. Du darfst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum nicht posten. Du kannst Dateien in diesem Forum nicht herunterladen.
|
|
 |