Kan två olika formulär kommunisera med varandra på något sätt (skicka variabler mellan varandra) eller kan man få flödet i ett formulär att stoppas tills man har återvänt till formuläret och isf hur? Hej Jag provade med att skriva Public str As String i General Declaration i Form 1 och jag använde Option Explicit på Form 2 och då fick jag ett felmeddelande där det stod att variabeln inte var deklarerad. Hmm ... Jag har precis som för mig att publika deklerationer måste ske i moduler, och inte i formulär? Så löser i alla fall jag det. Om det är många variabler som ska deklareras så, så lägger jag dem helst i en egen modul med kommentering så man lätt hittar igen dem senare. Låt mig visa hur jag hanterar anrop mellan formulär: Hej Tycker du det är mycket kod? Loginformuläret är kappslat och helt generellt. Vilket gör att koden går att återanvända. Om man använder sig av den. Kan man tjänar in det flera gånger om i längden. Kommunikation mellan olika formulär
Sv: Kommunikation mellan olika formulär
Tex variabler som du vill skall nå alla Formulär
deklarerar du som Public i formens General
Tex om Form1 vill dela med sig till övriga Formar
skriver du Public istället för Dim
Public myvarabel As String
övrigt kan Form1 Subar komma åt Form3 Objekt
om du skriver tex. Form3.Text1.Text = "Hello World"
mvh
SvenSv: Kommunikation mellan olika formulär
Sv: Kommunikation mellan olika formulär
/EESv: Kommunikation mellan olika formulär
<code>
'Form: frmMain
Option Explicit
Private mConnection As ADODB.Connection
Private Sub Form_Load()
Dim frmForm As frmLogin
On Error GoTo Form_Load_Err
Set frmForm = New frmLogin
Select Case frmForm.ShowForm("Admin", Me)
Case vbOK
Set mConnection = New ADODB.Connection
mConnection.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=G:\Program Files\Microsoft Visual Studio\VB98\NWIND.MDB;Persist Security Info=False", frmForm.UserName, frmForm.Password
Case vbCancel
Unload Me
End Select
Form_Load_Exit:
Exit Sub
Form_Load_Err:
MsgBox Err.Description, vbCritical
Resume Form_Load_Exit
End Sub
'Form: frmLogin
Option Explicit
Private mReturn As VbMsgBoxResult
Private mUserName As String
Private mPassword As String
Public Property Get UserName() As String
UserName = mUserName
End Property
Public Property Get Password() As String
Password = mPassword
End Property
Public Function ShowForm(Optional UserName As String, Optional OwnerForm As Variant) As VbMsgBoxResult
mReturn = vbCancel
mUserName = UserName
Show vbModal, OwnerForm
ShowForm = mReturn
End Function
Private Sub cmdCancel_Click()
Unload Me
End Sub
Private Sub cmdOK_Click()
mReturn = vbOK
mUserName = txtUserName.Text
mPassword = txtPassword.Text
Unload Me
End Sub
Private Sub Form_Load()
txtUserName.Text = mUserName
End Sub
</code>Sv: Kommunikation mellan olika formulär
Stämmer , slarvigt av mig .Alltså du måste deklarera variablerna
i en BasModul Public . Såg att du döpt din variabel till str
Str är ett reserverat ord så det kommer du också att få fel på.
Om du orkar läsa och följa Andreas svar så kan du ju testa det också.
mvh
SvenSv: Kommunikation mellan olika formulär
Om du skrämms av att jag skrivit en liten applikation för att öppna en anslutning med användarnamn och lösenord. Är det bara för att demonstrera tekniken för folk som inte ser kortsicktigt.
/Mvh, Andreas Hillqvist