Laden...

Hyperlinked Validation System - Formular-Input-Prüfung

Erstellt von TBR vor 12 Jahren Letzter Beitrag vor 12 Jahren 3.494 Views
T
TBR Themenstarter:in
154 Beiträge seit 2009
vor 12 Jahren
Hyperlinked Validation System - Formular-Input-Prüfung

Hallo,
ich möchte euch mal mein kleines Tool vorstellen, das ich mal vor einiger Zeit gebaut habe.

Ich persönlich finde es wahnsinnig sinnvoll und hilfreich - vielleicht ihr auch.

Die Informationen, Bilder und der Code-Snippet sind veraltet. Aktuelle Informationen finden sich auf der Projektseite: http://hvs.codeplex.com/
Es tut mir Leid dass ich die Informationen nicht immer überall sofort aktualisieren kann.

Das ganze ist ein System um Forumlare in WinForms abzufragen.
Ihr kennt das bestimmt, wenn man 5 Textboxen, 2 Checkboxes, 3 Optionale Felder und noch ein Zahlenfeld hat, welche man alle prüfen muss um den "Abschicken"-Button freizugeben (aktivieren).

HVS schafft hier ab. Mit nur wenig Code kann man sehr komplexe Abfragen erstellen und somit viel schneller seine Formulare korrekt abfragen.

Der Spaß bietet die Möglichkeit, jede Eigenschaft von etwas zu prüfen.
Je nach Einstellung kommt was anderes dabei raus - es wird ausgewertet ob alle Bedingungen erfüllt sind.
Dabei kann man für jede Abfrage eines Objektes noch zusätzlich Bedingungen stellen. Diese wiederrum haben einige Einstellungsmöglichkeiten um den Verlauf der Abfrage zu modellieren.

Das System ist gerade zu dieser vollen Stunde in die Version 2.0 aufgestiegen, mit einigen Änderungen und ein paar neuen Funktionen.

Hier ein Beispiel wie ihr folgende Applikation korrekt auswerten könnt seht ihr im Anhang.
Das geht mit soviel Code:

        private void mainFrm_Load(object sender, EventArgs e)
        {
            hvsValidator = new HVS();
            validStruct = new LinkStruct();

            validStruct.Add (new LinkObject ("Name", txb_name, txb_name.GetType ().GetProperty ("Text"), new TextValidator(false)));
            validStruct.Add (new LinkObject ("LastName",txb_lastname, txb_lastname.GetType ().GetProperty ("Text"),
                                           new TextValidator(false)));
            validStruct.Add (new LinkObject ("Email", txb_email, txb_email.GetType ().GetProperty("Text"), new EmailValidator ()));
            validStruct.Add (new LinkObject ("Agree",chb_tou, chb_tou.GetType ().GetProperty ("Checked"), new BoolValidator (true)));

            LinkObject txb_passwordLink = new LinkObject("Password",txb_password, txb_password.GetType().GetProperty("Text"),
                                                         new TextValidator(false));
            validStruct.Add(txb_passwordLink);

            LinkObject txb_repeatPasswordLink = new LinkObject ("RepPassword",txb_repeatPassword,
                                                               txb_repeatPassword.GetType ().GetProperty ("Text"),
                                                               new TextValidator (false), false,
                                                               new LinkCondition ("PassOptional",txb_passwordLink,
                                                                                 txb_passwordLink.GetType ().GetProperty(
                                                                                     "IsOptional"),
                                                                                 new BoolValidator (true), true, true));
            txb_repeatPasswordLink.Conditions.Add(new LinkCondition ("PasswordEqual",txb_repeatPassword,
                                                                    txb_repeatPassword.GetType ().GetProperty("Text"),
                                                                    new ValidationObjectValidator (txb_passwordLink)));
            validStruct.Add(txb_repeatPasswordLink);

            validationCheckTimer.Start();
        }

Sprich, viel weniger als wenn man es per Hand macht 😉

Ich hab auch schon einiges für 3.0 geplant - dann werden es eventuell Sachen sein, um das ganze noch viel besser und schöner zu integrieren. Vielleicht klappts mit Design-Time-Support 😃

Wen es interessiert:
http://hvs.codeplex.com/

T
TBR Themenstarter:in
154 Beiträge seit 2009
vor 12 Jahren

Hier das ganze nochmal, nur jetzt ist das Passwort optional.
Wie man sieht werden "RequiredPassword" nun ignoriert und es wird trotzdem als gültig anerkannt.

U
400 Beiträge seit 2008
vor 12 Jahren

Hallo,

ich hab mal ne Frage und zwar, funktioniert das nur mit "echten" Controls oder geht das auch mit selbst erstellten OpenGL Controls, die von einem Grafikkontext gerendert und durch Image und Font objekte erzeugt werden, aber nicht von System.Control abgeleitet sind?

T
TBR Themenstarter:in
154 Beiträge seit 2009
vor 12 Jahren

Bisher noch nicht, aber wenn das gewünscht wird kann ich es gern in 3.0 umsetzen.

Bisher war ja nur die "Standard"-Verwendung geplant. Sprich WinForms und stinknormale .Net-Control geerbte Controls 😉

Das sollte aber kein Problem darstellen...

Oder wenn ich micht nicht ganz täusche (hab jetzt eine Zeit nicht weitergearbeitet und bin mir nicht sicher ob es in 3.0 oder in der 2.0er hier war) aber falls "LinkObject"´s "Base"-Property von "object" abgeleitet ist, dann sollte es auf jedenfall mit allen Dingen gehen (und das glaub ich ist so...).

Spätestens in 3.0 wird es möglich sein 😉

Btw, da ich das schonmal gefragt wurde:
HVS ist nicht eine andere Implementation der WinForms-eigenen Validation-Methoden. Es ist ein einfacheres und flexibleres System.
Zwar kann WinForms eigentlich im Endeffekt das selbe, jedoch müsste man für Controls jeweils eine Funktion schreiben, so genügt eine Zeile Code und in 3.0 ein wenig Designer-Arbeit 😉

Von daher, es ist doch besser als WinForms-Validations 😉

T
TBR Themenstarter:in
154 Beiträge seit 2009
vor 12 Jahren

Eben wurde Version 3.0 released. Es hat ein komplett überarbeitetes System und viele neue Funktionen die das ganze noch weitaus mehr vereinfachen.

Genauere Informationen finden sich auf der Projektseite: http://hvs.codeplex.com/
(Ich kann leider nicht überall die Informationen sofort aktualisieren)

I
279 Beiträge seit 2008
vor 12 Jahren

Morgen,

und was ist an deiner Validierungs-Methodik besser als an Attribut-basierter Validierung (DataAnnotations (+Enterprise Library) + SelfValidation?

T
TBR Themenstarter:in
154 Beiträge seit 2009
vor 12 Jahren

Mit DataAnnotations und Enterprise Library hab ich noch nie gearbeitet, drum kann ich dir auch nicht sagen was besser / schlechter wäre.

Wers braucht kann es verwenden, wer nicht, nicht. Was HVS kann ist (momentan noch nur auf Codeplex) beschrieben (ich werd aber bald den Thread updaten).

Das ganze System ist halt sehr simpel und multifunktional gehalten. Man kann vieles damit machen - und wie gesagt, wer Anregungen / Wünsche hat kann sie gerne stellen 😃

Ich kann nur sagen, dass es wesentlich besser und komfortabler ist als WinForms-Validations 😉

MfG
TBR