PDA

Vollständige Version anzeigen : Hilfe bei Visual Basic


The Bang 2
16-06-2002, 12:55
Ich habe eine Frage zu Visual Basic:

Angenommen ich habe eine Form1 und möchte dass er nach einer Engabe eines Benutzernamens und des richtigen Psswortes eine neue Form2 aufmacht. Wie muss ich das anstellen?
Anbei der Code....



Private Sub Command1_Click()
If Text2 = "Müller" And Text1 = "Test" Or Text2 = "Meier" And Text1 = "falsch" Then
MsgBox ("Zutritt gewährt")
Else: MsgBox ("Username / Passwor falsch oder nicht bekannt")
End If

End Sub




Das ganze sieht so aus:

http://hosting.xlnet.net/clan/thebang2/form1.JPG

Sven
16-06-2002, 13:09
Hmm... ziemlich lange her...

Private Sub Command1_Click()
If Text2 = "Müller" And Text1 = "Test" Or Text2 = "Meier" And Text1 = "falsch" Then
MsgBox ("Zutritt gewährt")
hier kommt der Name der Form die aufgerufen werden soll
Exit Sub
Else: MsgBox ("Username / Passwor falsch oder nicht bekannt")
End If

End Sub

Du trägst prinzipiell nur den Namen der aufzurufenden Form ein. Allerdings musst du die ursprüngliche Form dann auch beenden (Exit Sub) sonst bleibt sie im Speicher

The Bang 2
16-06-2002, 13:11
Jo :thx:
Genau das wollte ich wissen!:ast:

Arg, jetzt bekomm ich immer nen "Compile Error - Argument not optional"
:mad1:

Sven
16-06-2002, 13:27
Wie gesagt, ist ein paar Jahre her bei mir.... wie sieht der Code denn jetzt aus?

The Bang 2
16-06-2002, 13:40
Also ich hab nochmal von vorne angefangen, es sieht jetz so aus:


Private Sub Command1_Click()
If Text1 = "Test" And text2 = "test" Then
MsgBox ("Zugang gewährt")
Form2
Exit Sub
Else: MsgBox ("Username / Passwort falsch oder nicht bekannt")
End If
End Sub


Ich führ ihn aus, dann bekomm ich die Fehlermeldung und dann siehts so aus:

Private Sub Command1_Click()
If Text1 = "Test" And text2 = "test" Then
MsgBox ("Zugang gewährt")
Form2
Exit Sub
Else: MsgBox ("Username / Passwort falsch oder nicht bekannt")
End If
End Sub

NodMot
17-06-2002, 13:23
Mal eine andere Frage vorab:

Willst Du die zweite Form über der ersten liegen haben, oder soll er die erste Form ganz beenden und nur noch die zweite anzeigen ?
Mit welcher VB-Version arbeitest Du ?

Antworte mir mal darauf und ich schreib Dir nachher die Lösung (muß gleich wieder in Besprechung, kann erst danach antworten).

CAT_forever
17-06-2002, 14:52
Mhh wo ihr grade von Visual Basic redet, woher bekommt man des und wo bekommt man dazu ne gute Anleitung ???? :confused:

Ich möcht soetwas auch mal lernen ! :)

EDIT: Ich hab des jetzt von der Windows Seite aber weiss nicht wie man das startet !
Sorry ich bin darin der absulute Newbie ! ;)

The Bang 2
17-06-2002, 20:51
Alsoo... in die erste soll der Username und das Passwort eingegeben werden, dann schliest sicht diee Form1 und Form2 soll ich aufmachen, arbeiten tu ich mit VB 6.0

@Cat: Wir lernen das inner Schule...

CAT_forever
17-06-2002, 21:26
Ich wäre froh, wenn wir das in der Schule auch mal lernen würden ! ;)

MyersGer
17-06-2002, 22:23
hm ich hab mich extra dafür eingesetzt sowas nicht in der schule zu machen! ;) zur auswahl waren basic (bzw. vbasic) pascal (bzw. delphi) und c++ ...
hmm was nehmen wir denn da?! das was ich eh schon n bisschen kann und das was nach meinungen einiger das beste ist (da man eigentlich im beruf später auch damit programmiert) c++


aber du kannst vb als schüler (schülerausweis) für irgendwas bei 30 oder 35 € bei software läden kaufen!

NodMot
18-06-2002, 12:24
OK, ist gestern etwas später geworden.

Eigentlich sollte es reichen, wenn Du erstens

Form2

in

Form2.show

änderst (damit zeigst Du die zweite Form an)


Danach noch das

Exit Sub

unmittelbar dahinter in ein

Unload Form1

ändern und vor den Befehl

Form2.show

schreiben (hoffentlich ist die Farbe in Deinem Style erkennbar).

Mit dem Befehl entfernst Du die erste Form komplett aus dem Speicher, d. h. auch, daß alle Weret auf die Defaults (Ursprungswerte) zurückgesetzt werden und Du nichts mehr daraus ansprechen kannst (um es zu verdeutlichen, Du kannst dann aus der Form2 zwar noch das Feld Form1.Text1 ansprechen, aber es wird nicht mehr Test enthalten, sondern das, was zu Programmstart drin stand.

Willst Du die Form1 im Speicher behalten und nur verbergen, so nimm anstatt

Unload Form1

den Befehl

Form1.hide

Der verbirgt nur die Form1

The Bang 2
18-06-2002, 13:54
Jup genau!:thx:

Noch ne frage: Wie bekomm ich denn bei Msg`s oder Imps einen Titel in die Leiste oben?

NodMot
18-06-2002, 14:41
Würde ich folgendermaßen machen:

Als erstes Variablen definieren. Dabei solltest Du Dir im Klaren sein, wo und wie Du die definierst, also ob lokale oder globale Variablen.
In Deinem Fall reicht es beispielsweise, wenn Du die unter (Allgemein) (Deklarationen) in der Form1 definierst.


Private message As String
Private überschrift As String
Private antwort As Integer

Dann weist Du der Variable message den Text zu, den Du anzeigen willst (in Deinem Fall also beispielsweise "Zugang gewährt") und die Variable überschrift füllst Du halt mit der gewünschten Überschrift.

Anschließend noch die msgbox-Zeilen ändern und zwar folgendermaßen:

Aus


MsgBox ("Zugang gewährt")

wird dann


antwort = MsgBox(message, , überschrift)

Dann hast Du eine Messagebox mit Überschrift. Zwischen die beiden Kommata könntest Du noch einen Wert eintragen, der besagt, was alles für Buttons in der Messagebox angezeigt werden, wenn Du es weglässt, wie ich im Beispiel, wird als Default 0 genommen und der zeigt nur den "OK"-Button an.

Hast Du einen anderen Wert, der evtl. mehrere Buttons anzeigt, steht in der Variablen antwort der Wert des gedrückten Buttons in der Messagebox drin (alle Möglichkeiten dafür findest Du aber irgendwo in der Hilfe).

Und noch eine ganz wichtige Sache.

Gehe unter EXTRAS/OPTIONEN und dort unter der Registerkarte EDITOR.

Schalte dort auf jeden Fall die Check-Box Variablendeklaration erforderlich an, denn ansonsten kann man sich in Teufelsküche bringen und manche Fehler sind kaum noch nachvollziehbar.
Ist zwar ein bißchen mehr Arbeit, daß man alle Variablen, die man benutzt, auch definieren muß, aber es ist sauberer und wer ohne programmiert ist ....... (zensiert :D).

The Bang 2
22-06-2002, 17:07
Erledigt.

Frage: Das mit der MSGbox schaut doch bisschen anders aus, wenn ich das so mache:

E = Zahl1 + Zahl2
Msgbox E


Wie sieht das denn jetzt hier aus?:confused:

NodMot
24-06-2002, 17:14
Sorry, die Frage verstehe ich nicht so ganz.

E ist eine Variable, die Du vermutlich "INTEGER" definiert hast.

Aber was soll jetzt damit sein ?
Wenn Du es so machst, wie Du schreibst, hast Du halt das Ergebnis Deiner Addition in der Message-Box.

Wenn Du da auch eine Überschrift drin haben willst, machst Du es einfach so, wie ich vorher bereits geschrieben hatte, nur daß Du message halt durch E in der Msgbox-Anweisung ersetzt.


Ansonsten beschreib Dein Problem bitte mal genauer, ich sehe es noch nicht.

Wunder Dich übrigens nicht, wenn die Antworten schonmal dauern, es gibt Wochenenden, an denen ich gar nicht Online bin und je nach Arbeitssituation kann es unter der Woche mal in 5 Minuten gehen, aber auch mal 2 Tage dauern.

The Bang 2
24-06-2002, 18:55
Private Sub Command1_Click()
Dim Zahl1, zahl2 As Double
Zahl1 = InputBox("Bitte die erste Zahl eingeben", "Addition")
zahl2 = InputBox("Bitte zweite Zahl eingeben", "Addition")
E = Zahl1 + zahl2
MsgBox E
End Sub


Jetzt verstanden?:)

NodMot
24-06-2002, 19:11
Ach so.

Ich nehme an, Du hast das Problem, daß er so nicht rechnet, weil er durch die Input-Box Strings in Deine Variablen geschrieben hat. Wahrscheinlich hängt er nur die zwei Zahlen aneinander.

Änder es folgendermaßen ab:

E = val(Zahl1) + val(zahl2)


"E" hast Du aber hoffentlich auch irgendwo deklariert ;)

The Bang 2
24-06-2002, 19:20
Jepp, hab ich.
Aber wie füge ich da jetzt den Titel ein?:confused:

NodMot
25-06-2002, 07:20
Dim E As Double
Dim überschrift As String
Dim antwort As Integer
.
.
.
.
E = val(Zahl1) + val(zahl2)

überschrift = "Ich liebe RA2K"

antwort = MsgBox(E, , überschrift)



*Editiert* Hab das "Private" jetzt auch mal in "Dim" geändert, da "Private" im Click-Ereignis des Buttons natürlich nicht geht, sondern nur im Deklarationsteil der Form und Du scheinbar im Click-Ereignis definierst. *Editiert*