Forum
Tipps
News
Menu-Icon

Visual Basic 6 - Projekt mit zwei Formen

Hallo!

Ich habe in einem Projekt zwei Formen.

Ich möchte den Wert der Variable a der in der 1. Form steht in die Variable y der 2 Form speichern

Mit dem fettmakierten Befehl geht es nicht.

Den Befehl den ich in der 2 Form in () gesetzt habe funktioniert aber ich muss es über die Variablen machen kann mir jemand helfen?




frmForm1:


Dim x As Double, a As Double, b As Double

Private Sub Command1_Click()
   
      a = txtEingabe.Text
   
      frmForm2.Show
   
End Sub





frmForm2:


Dim c As Double, y As Double

Private Sub Command1_Click()

     y = frmForm1.a.Text (y = frmForm1.txtEingabe.Text)

     txtErgebnis = y

End Sub

 


Antworten zu Visual Basic 6 - Projekt mit zwei Formen:

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Kannst du in Form 1 nicht noch ne Fuktion machen, die den Wert von a zurueckgibt, also etwa so:

public Function getA() As Integer
    getA = a
End Function
und dann beim zweiten
Private Sub Command1_Click()
    y = frmForm1.getA()
    txtErgebnis = y
End Sub
 

EDIT: Und nochmal was ganz anderes. frmForm1.a.Text kann gar nicht gehen, weil a ein Double ist und kein Feld 'Text' hat. Probier einfach mal y=frmForm1.a
Wobei die erste Loesung (mit der Funktion) natuerlich besser ins objektorientierte Programmierparadigma passt
« Letzte Änderung: 05.12.07, 17:19:10 von Lisaa »

Vielen Dank es funktioniert.

Wenn ich zwei Variablen rüberholen möchte könnte ich das dann auch eventuell mit einer Funktion realisieren.?


Dieses funktioniert z.B nicht:

Public Function getA() As Double, getB() As Double
    getA = a
    getB = b
End Function



Ich habe noch eine andere Frage vielleicht könntest du sie mir auch noch kurz beantworten ich wäre dir sehr dankbar.

Wenn ich den Button1 bei frmForm1 anklicke dann rechnet mir das Programm etwas aus.
Nun möchte ich das wenn Button1 von frmForm2 angeklickt wird in Private Sub Command1_Click() springen. Weißt du wie das geht?



frmForm1:


Private Sub Command1_Click()
   
      .................
      .................
      .................
   
End Sub



frmForm2:

Private Sub Command1_Click()

       go to frmForm1.Private Sub Command1_Click()  ???

End Sub

 

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Nö, Funktionen haben nur einen Rückgabewert, aber du könntest natürlich für jede Variable eine eigene Funktion schreiben. Oder du musst einen komplexeren Datentyp wählen, der dann mehrere Variablen vereint. Ich hab keinen Plan von VB, keine Ahnung wie das da geht.
Zur zweiten Frage:
Geht schätzungsweise so nicht, dazu müsste die Funktion in Form1 public sein (heisst auch von ausserhalb von Form1 aufrufbar). Dann müsste es so gehen:

'frmForm1:
Public Sub Command1_Click()
   'do something
End Sub

'frmForm2:
Private Sub Command1_Click()
    frmForm1.Command1_Click()
End Sub
 
'frmForm1:
Public Sub Command1_Click()
   'do something
End Sub

'frmForm2:
Private Sub Command1_Click()
   
 [b] frmForm1.Command1_Click() [/b]

End Sub
 



Nein der Befehl funktioniert leider nicht. :(

Im Quelltext ist der Befehl "frmForm1.Command1_Click()" rot makiert und dann kommt die Nachricht: "Erwarte = "

Ich hab dann beide Formen public gesetzt bringt aber leider nichts. Gibt es noch eine andere Funktion?

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Kannst du mal etwas mehr Quellcode posten? Insbesondere der Teil, wo die Command1_Click()-Subs aufgerufen werden etc.

Ich kann den Quelltext hier nicht öffentlich posten da es eine Diplomarbeit ist an der ich gerade arbeite. Ich habe nur keine Ahnung von Programmieren kann ichs dir per ICQ oder so schicken?

Ich hab jetzt folgendes probiert funktioniert aber leider nicht.


Form1:


Public Sub mySub()

   'Mein Code

End Sub




Form2



Public Sub Command1_Click()

     Form1.mySub()

End Sub

nee sorry so: das fettgedruckte ist im Quelltext rotmakiert.


Form1:


Public Sub mySub()

   'Mein Code

End Sub


Public Sub Command1_Click()

    mySub()

End Sub



Form2



Public Sub Command1_Click()

     Form1.mySub()

End Sub
 

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Lass mal die Klammern weg:

'Form1:
Public Sub mySub()
    'Mein Code
End Sub

Public Sub Command1_Click()
    mySub
End Sub

'Form2
Public Sub Command1_Click()
    Form1.mySub
End Sub
oder setze ein 'Call' vor die Prozeduraufrufe:
Call mySub

Danke es funktioniert 

Danke schon mal für deine Hilfe ich habe aber noch zwei weitere Fragen.  ;D


Zum einen möchte ich in Form2 eine Tabelle integrieren. Ich habe keine Active Steuerelemente weil Studentenversion. Nun wollte ich wissen wie ich die Tabelle am besten programmieren soll.

Ich habe eine Funkiton z.B y = sin(wt) und der wert y für wt = Pi soll in die eine spalte und der wert y für wt = 2Pi in eine andere Spalte oder vielleicht auch Zeile. Nur so als Beispiel.




Zum anderen lasse ich in Form1 unter "Public Sub mySub" einige Zahlenwerte einlesen. Mit diesen Werten zeichne ich in Form2 einige Graphen aber ohne picturebox.

Nun habe ich einen button in Form2 programmiert. Wenn ich diesen anklicke sollen alle Graphen, die Tabelle und alles was ich mit der Funktion "Public Sub mySub()" in Form2 darstellen möchte gelöscht werden. Wie könnte ich das realisieren?


Public Sub mySub()

'werte einlesen

'show form2

' Kurven graphisch darstellen

' Tabelle erstellen

End Sub 

Hat dir diese Antwort geholfen?

Danke ButtonHilfreiche Antwort Button

Tja, da muss ich leider passen - hab halt null Ahnung von VB. Wenn es dann irgendwo konkrete Probleme gibt vielleicht, aber für die Fragen müsste ich mich selbst erst einlesen, da wäre es dann wohl sinnvoller, wenn du das direkt machst...


« Blitz BasicSuche Programm/Bot... »
 

Schnelle Hilfe: Hier nach ähnlichen Fragen und passenden Tipps suchen!

Fremdwörter? Erklärungen im Lexikon!
Formatieren
  Das Formatieren einer Festplatte, HDD oder SSD bereitet das Laufwerk auf neue Daten vor. Dazu werden sämtliche alten Daten gelöscht, damit die...

Double Layer
Double-Layer-DVDs können fast doppelt so viele Daten (8GB) speichern wie einfach beschreibbare DVDs 84,7 GB). Das liegt daran, dass sie zwei beschreibbare Datenschic...

Private Session
Private Session ist ein Modus, in dem kein Verlauf oder Chronik angelegt wird. Diese Funktion gibt es bei den üblichen Internet Browsern wie Internet Explorer, Apple...