سلام دوستان عزيز
من مي خواي تو يه برنامه اگر به عنوان مثال وقتي روي دكمه نمايش فرم كليك مي كنيم فرم 2 نمايش داده بشه و اگر فرم 2 باز بود فرم 3 رو نمايش بده خودم با IF خواستم بنويسم ولي خطا مي ده كسي مي تونه كمك كنه . ممنون مي شم ( خيلي برام مهمه)
در ضمن مي شه به فرم هم خاصيت ايندكس داد؟
با استفاده از تابع FindWindow که جزو توابع API هست می تونید دنبال فرم های باز بگردید
اینطوری که تیتر فرم دوم رو بش می دید اگه مقدار 0 رو بر نگردوند می فهمید که بازه :
کد:
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Sub Command1_Click()
Dim h As Long
h = FindWindow("", "Form2")
If h <> 0 Then Form3.Show Else Form2.Show
End Sub
سلام.
روش های مختلف میشه این مشکل رو حل کرد.
اینم یه روش دیگه:
میتونی یه آرایه بولین تو یه ماژول به صورت پابلیک تعریف کنی و یه متغیر آرایه ای از نوع فرم. در واقع یه آرایه از فرم داریم. تو فرم لود هر فرم متغیر مربوط به اون فرم رو از آرایه true و تو unload فالسش کنی. بعد تو کلیک کلید چک میکنی هر کدوم فالس باشه بازش کنه.
کد:
'ino bezar too 1 module
Public blnOpenForm(100) As Boolean
Public i As Integer
'ino bezar too 1 form be esme frmSample
Private Sub Form_Load()
blnOpenForm(i) = True
Me.Caption = "Form" & i
Me.Tag = i
End Sub
Private Sub Form_Unload(Cancel As Integer)
blnOpenForm(Me.Tag) = False
End Sub
'inam too forme asli
Private frmForms(100) As New frmSample
Private Sub Command1_Click()
For i = 1 To 100
If Not blnOpenForm(i) Then
frmForms(i).Show
Exit For
End If
Next i
End Sub
سلام.
مگه فقط 3 تا فرم داری؟ روشی که بهت گفتم برای n تا فرم جواب میده و محدودیت نداری.
ولی اگه فقط 3 تا فرم داری میتونی از همین روشی که گفتی استفاده کنی.