Rollermann Geschrieben 25. Mai 2009 Geschrieben 25. Mai 2009 Na Servus! Ich versuch gerade ein "Anmeldeformular" zu erstellen. Enthalten sind Name, Nachname, Spitzname und Telefonnummer.Meine doch eher beschränkten Kenntnisse erlauben mir nicht einen Code zu schreiben wonach erst nach vollständigem ausfüllen der Maske der OK_Buton auf enabled=true gesetzt wird. Diverse versuche mit schleifen und If-anweisungen ergaben bei mir nur kauderwelsch! Falls mir noch einer erklähren kann, wie ich das ganze da oben in eine Datenbank verfrachte wäre ich unendlich dankbar! Letzteres ist klein muss... Learning By Dooing bringts da hoff ich auch! Oder? Danke euch! Zitieren
Amstelchen Geschrieben 25. Mai 2009 Geschrieben 25. Mai 2009 Ich versuch gerade ein "Anmeldeformular" zu erstellen. wir sprechen hier von einer forms-anwendung? einen Code zu schreiben wonach erst nach vollständigem ausfüllen der Maske der OK_Buton auf enabled=true gesetzt wird. beim Form_Load den OK-botton auf disabled setzen, und nach jedem Changed-event in einzelnen formularelementen auf dessen inhalt prüfen und bei erfüllen der kriterien den OK-button auf enabled setzen. Diverse versuche mit schleifen und If-anweisungen ergaben bei mir nur kauderwelsch! hellsehen kann der geneigte forumsleser aber nicht, was du denn nun genau versucht hast. Falls mir noch einer erklähren kann, wie ich das ganze da oben in eine Datenbank verfrachte wäre ich unendlich dankbar! verrätst du auch, welche datenbank? oder darf ich mir eine aussuchen? s'Amstel Zitieren
Rollermann Geschrieben 26. Mai 2009 Autor Geschrieben 26. Mai 2009 Naaa... als hätt ich es nicht geahnt... Danke erstmal für die antwort! Also stell ich erstmal mein Ziel und mein Projekt vor: Ich will mir selber beibringen, kleine Programme zu schreiben und besitze absolut keine Vorkenntnisse... letzteres bekämpfe ich seit geraumer Zeit mit den netten Tutorials von MSDN, dem Buch "Programmieren lernen mit VisualBasic2005" von Microsoft Press (9€ Kaufpreis haben mich von der aktuellen 08´er Version abgebrach) und Einem Buch von "Markt und Technik": "Visual Basic 2008" Aufgrund der Tatsache, das mich das nicht wiklich weiter bringt, da ich eher einer bin der was macht anstatt zu lesen versuche ich mich momentan an einer Art kleinem "Kassenbuch" für einen Jugendklub bei mir um die ecke. Dazu soll es eine Datenbank geben, die Waren und die dazugehörigen Preise speichert, wenn möglich aus dem Programm heraus editierbar, denn noch eine, die die Mitglieder mit den Parametern: Name, Nachname, Spitzname, und Telefon speichert. verrätst du auch, welche datenbank? oder darf ich mir eine aussuchen? Hab ich damit auch abgehandelt, ich möchte mich datrum aber erst kümmern, wenn es so weit ist, dass die funktionalität innerhalb des Programms gegeben ist. Das ganze soll in einer Windows-Forms-Anwendung passieren. wir sprechen hier von einer forms-anwendung? wäre damit hoff ich geklärt. Ich habe folgendes in meiner verzweiflung versucht: IF Textbox1.text = "" then OK_Button.enabled = not OK_button enabled else OK_Button enabled = true End If Damit wollte ich erreichen, das der wert für enabled auf true gesetzt bleibt und vom Programm beim Start des Formulares auf false und nur dann true gesetzt wird wenn der Text in Textbox1 eben nicht "nichts" ist... Ich hoff das war verständlich. Das ganze habe ich dann noch etwas umformuliert für eine while-Schleife, was auch nicht den gewünschten Erfolg hatte! hellsehen kann der geneigte forumsleser aber nicht, was du denn nun genau versucht hast. hätten wir auch... bei meinen kontrollhäkchen funktioniert es aber anstandslos über folgenden code: Private Sub AFrei_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles AFrei.CheckedChanged AFreiEingabe.Enabled = Not AFreiEingabe.Enabled End Sub Hier habe ich ein häckchen, was gesetzt werden muss um die menge an ausgegebenem A-Frei getränken eintragen und dann buchen zu können. Meinst du vieleicht sowas? Dank dir erstmal! Gruß Roller Zitieren
TDM Geschrieben 26. Mai 2009 Geschrieben 26. Mai 2009 IF Textbox1.text = "" then OK_Button.enabled = not OK_button enabled else OK_Button enabled = true End If Damit wollte ich erreichen, das der wert für enabled auf true gesetzt bleibt und vom Programm beim Start des Formulares auf false und nur dann true gesetzt wird wenn der Text in Textbox1 eben nicht "nichts" ist... Ich hoff das war verständlich. Das ganze habe ich dann noch etwas umformuliert für eine while-Schleife, was auch nicht den gewünschten Erfolg hatte! Wie wärs mit: OK_Button.Enabled = NOT string.IstNullOrEmpty(Textbox1.text) Ansonsten: Wo steht die Abfrage denn drin? Beim TextChangedEvent der TextBox? Zitieren
Gateway_man Geschrieben 26. Mai 2009 Geschrieben 26. Mai 2009 ich weiß ich werde hier gleich wieder als teufel bezichtigt, aber warum machst du das nicht einfach über nen timer und schreibst im timer : dim str1 as String = textbox1.text dim str2 as String = textbox2.text IF not st1 = "" and not str2 = "" (etc. je nachdem wieviele felder du prüfen willst) Then OK_button.enable = True else ... end if Sofern dir der Timer nicht gefällt kannst dir ja mal das Mouse Hover event beim Button zurecht legen, jedoch wird eben dann erst überprüft, wenn die maus über den Button schweift. Alternativ kannst du dir ja auch mal die events deines formulars anschaun. Da gibts auch massig events die bei einer mausreaktion eintreten. Aber wie gesagt der Timer wäre für sowas wie geschaffen. Und wenn du die eingaben auf nen bestimmten inhalt überprüfen willst kannst auch nocht beispielsweise str1.contains("Zeichenkette nach dem hier anzugebenden Zeichen durchsuchen") lg simon Zitieren
Amstelchen Geschrieben 26. Mai 2009 Geschrieben 26. Mai 2009 es macht allerdings kaum sinn, einen timer zu verwenden, noch mausevents abzufragen, wenn events wie Changed ohnehin bei jedem verlassen des controls ausgelöst werden. dim str1 as String = textbox1.text ebenso sind variablen zum zwischenspeichern von zeichenketteninhalten aus controls nur umwege zur lösung. s'Amstel Zitieren
Rollermann Geschrieben 26. Mai 2009 Autor Geschrieben 26. Mai 2009 (bearbeitet) Wie wärs mit: OK_Button.Enabled = NOT string.IstNullOrEmpty(Textbox1.text) Ansonsten: Wo steht die Abfrage denn drin? Beim TextChangedEvent der TextBox? Habe dadurch einen Teilerfolg erungen: In mein Programm eingebaut und den Wert für OK_Button.enabled=false gesetzt, ergibt sich erst nach der eingabe im Phone-Feld, das der OK-Button enabled=true ist. Der Code sieht folgendermaßen bisher aus: Imports System.Windows.Forms Public Class NeuerKontakt ' ''Aktiviert den OK_Button erst bei einer eingabe in das Phone-Textfeld Private Sub Phone_textChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Phone.TextChanged OK_Button.Enabled = Not String.IsNullOrEmpty(Phone.Text) End Sub Private Sub OK_Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OK_Button.Click Me.DialogResult = System.Windows.Forms.DialogResult.OK Me.Close() End Sub Private Sub Cancel_Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Cancel_Button.Click Me.DialogResult = System.Windows.Forms.DialogResult.Cancel Me.Close() End Sub End Class Gibt es eventuell eine galantere lösung? Dann bitte her damit! Kann ich das auch noch irgendwie davon abhängig machen, dass zwingend bei Phone eine Zahl eingegeben wird? Kann es mir jemand anhand des obigen Codeschnipsels erklären? Ich danke euch auf jedenfall für eure schnelle und umfassende Hilfe! Sehr lustig ist in dem Zusammenhang folgende konstelation: Private Sub phone_textChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Phone.textChanged OK_Button.Enabled = Not OK_Button.Enabled End Sub Das bewirkt, das nach jedem Tastendruck der OK_Butten seinen enabled wert ändert... Äußerst neckich! Bearbeitet 26. Mai 2009 von Rollermann Ich hätte Deutsch nicht abwählen dürfen! :) Zitieren
TDM Geschrieben 27. Mai 2009 Geschrieben 27. Mai 2009 Kann ich das auch noch irgendwie davon abhängig machen, dass zwingend bei Phone eine Zahl eingegeben wird? Kann es mir jemand anhand des obigen Codeschnipsels erklären? Private Sub Phone_textChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Phone.TextChanged OK_Button.Enabled = ((Not String.IsNullOrEmpty(Phone.Text)) ANDALSO (IsNumeric(Phone.Text))) End Sub Prüft ab, ob der Text in eine Zahl konvertiert werden kann (wenn er nicht leer ist). Zitieren
Rollermann Geschrieben 27. Mai 2009 Autor Geschrieben 27. Mai 2009 Top! Läuft wie am Schnürchen! Dank euch! Zitieren
Rollermann Geschrieben 27. Mai 2009 Autor Geschrieben 27. Mai 2009 Habe Heute versucht, Das so umzuformulieren, das Alle Textboxen abgefragt werden: ' ''Aktiviert den OK_Button erst nach ausfüllen aller Textfelder Private Sub Phone_textChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Phone.TextChanged OK_Button.Enabled = _ (Not String.IsNullOrEmpty(Prename.Text)) AndAlso _ (Not String.IsNullOrEmpty(Lastname.Text)) AndAlso _ (Not String.IsNullOrEmpty(Nicname.Text)) AndAlso _ (Not String.IsNullOrEmpty(Phone.Text)) AndAlso _ (IsNumeric(Phone.Text)) End Sub Das bewirkt dummer weise, dass nur wenn ich Phone.text als letztes bearbeite OK_button "true" erhält... Das ist nicht wirklich Benutzerfreundlich, ich mach mich mal auf die suche nach ner lösung und poste sie noch, gemäß dem fall ich find was... Gruß Roller Zitieren
TDM Geschrieben 27. Mai 2009 Geschrieben 27. Mai 2009 Simpelste Möglichkeit: Private Sub Prename_textChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Prename.TextChanged OK_Button.Enabled = checkOkButtonEnable() End Sub Private Sub Lastname_textChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Lastname.TextChanged OK_Button.Enabled = checkOkButtonEnable() End Sub Private Sub Nicname_textChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Nicname.TextChanged OK_Button.Enabled = checkOkButtonEnable() End Sub Private Sub Phone_textChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Phone.TextChanged OK_Button.Enabled = checkOkButtonEnable() End Sub Private Function checkOkButtonEnable () as Boolean return ((Not String.IsNullOrEmpty(Prename.Text)) AndAlso _ (Not String.IsNullOrEmpty(Lastname.Text)) AndAlso _ (Not String.IsNullOrEmpty(Nicname.Text)) AndAlso _ (Not String.IsNullOrEmpty(Phone.Text)) AndAlso _ (IsNumeric(Phone.Text))) end function bzw: Private Sub Phone_textChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Prename.TextChanged, Lastname.TextChanged, Nicname.TextChanged, Phone.TextChanged OK_Button.Enabled = checkOkButtonEnable() End Sub Private Function checkOkButtonEnable () as Boolean return ((Not String.IsNullOrEmpty(Prename.Text)) AndAlso _ (Not String.IsNullOrEmpty(Lastname.Text)) AndAlso _ (Not String.IsNullOrEmpty(Nicname.Text)) AndAlso _ (Not String.IsNullOrEmpty(Phone.Text)) AndAlso _ (IsNumeric(Phone.Text))) end function Zitieren
Gateway_man Geschrieben 27. Mai 2009 Geschrieben 27. Mai 2009 es macht allerdings kaum sinn, einen timer zu verwenden, noch mausevents abzufragen, wenn events wie Changed ohnehin bei jedem verlassen des controls ausgelöst werden. ebenso sind variablen zum zwischenspeichern von zeichenketteninhalten aus controls nur umwege zur lösung. s'Amstel um das verlassen des controls zu bewirken muss jedoch außerhalb der textbox geklickt werden was unsinn ist. Ich meine wer klick den ins form wenn er sein text in die Textbox eingegeben hat? beim timer must du gar nichts machen nur warte je nachdem wie du dein intervall eingsellt hast. das zweitere argument ist in manchen fällen ein zwingender umweg, wenn du nicht willst das man beispielsweise deine datebank durchvorstet (sql injektion), wenn du dein control direkt ins command einfügst. Zitieren
TDM Geschrieben 28. Mai 2009 Geschrieben 28. Mai 2009 um das verlassen des controls zu bewirken muss jedoch außerhalb der textbox geklickt werden was unsinn ist. Man kann auch einfach auf die Key-/Focus-Events horchen, dann wars das mit dem Problem. Ich meine wer klick den ins form wenn er sein text in die Textbox eingegeben hat? Wenn ich bei einer Textbox den Text eingegeben hab, drückt man logischerweise wo anders hin (oder Tab). Zitieren
Rollermann Geschrieben 31. Mai 2009 Autor Geschrieben 31. Mai 2009 Noch ne Lösung: Privat Sub If Me.textbox1.test.length > 0 then Me.Button1.Enabled = True Else Me.Button1.Enabled = False End If End Sub Das wäre doch ne humane If- Abfrage... Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.