CnC Foren

CnC Foren (http://www.cncforen.de/index.php)
-   Tech-Support / Tech-Talk (http://www.cncforen.de/forumdisplay.php?f=26)
-   -   Hilfe bei Visual Basic (http://www.cncforen.de/showthread.php?t=13113)

The Bang 2 16-06-2002 12:55

Hilfe bei Visual Basic
 
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




Edit:
Das ganze sieht so aus:

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



Sven 16-06-2002 13:09

Hmm... ziemlich lange her...

Code:

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*


Alle Zeitangaben in WEZ +2. Es ist jetzt 06:14 Uhr.

Powered by vBulletin Version 3.7.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.