AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Suche Möglichkeit einen EingabeAssistenten zu erstellen.
Thema durchsuchen
Ansicht
Themen-Optionen

Suche Möglichkeit einen EingabeAssistenten zu erstellen.

Ein Thema von tdeck · begonnen am 6. Jan 2009 · letzter Beitrag vom 8. Jan 2009
Antwort Antwort
tdeck

Registriert seit: 26. Jun 2006
Ort: Obertshausen
69 Beiträge
 
Delphi 11 Alexandria
 
#1

Suche Möglichkeit einen EingabeAssistenten zu erstellen.

  Alt 6. Jan 2009, 00:52
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
Thorsten
bye bye
tdeck
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

Re: Suche Möglichkeit einen EingabeAssistenten zu erstellen.

  Alt 6. Jan 2009, 01:19
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:
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
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.006 Beiträge
 
Delphi 2009 Professional
 
#3

Re: Suche Möglichkeit einen EingabeAssistenten zu erstellen.

  Alt 6. Jan 2009, 10:22
Zitat von tdeck:
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.
Michael Justin
habarisoft.com
  Mit Zitat antworten Zitat
tdeck

Registriert seit: 26. Jun 2006
Ort: Obertshausen
69 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Suche Möglichkeit einen EingabeAssistenten zu erstellen.

  Alt 8. Jan 2009, 18:03
Hallo Sir Rufo.

Zitat von Sir Rufo:
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


Zitat von Sir Rufo:
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.
Thorsten
bye bye
tdeck
  Mit Zitat antworten Zitat
tdeck

Registriert seit: 26. Jun 2006
Ort: Obertshausen
69 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: Suche Möglichkeit einen EingabeAssistenten zu erstellen.

  Alt 8. Jan 2009, 18:09
Hallo mjustin,

Zitat von mjustin:
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.
Thorsten
bye bye
tdeck
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:56 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz