[ Selo-Kovaci @ 26.07.2007. 21:35 ] @
E ovako prije svega
Zdravo,

U VB6 radim jedan program pa sam zapeo. Sada imam dvije forme: form5 i form8 ("Ima njih jos ali ove dvije su glavne)
Sada form8 sam postavio kao pocetnu formu. Sljedeci put kad se pokrene program pocetna forma treba da bude form5.
Znaci:
Prvi put kada se pokrene program na nekom racunaru pocetna forma treba da bude form8, a drugi, treci... put pocetna forma treba da bude form5.
Znali to iko rijesiti jer to mi hitno treba!
POzdrav
[ rgdrajko @ 26.07.2007. 22:21 ] @
Evo koda, na brzinu napisanog.

Code:

Public Sub Main()
   On Error Resume Next
   ocitanoizfajla = ProcitajizFajla
   If Val(ocitanoizfajla) = 0 Or Val(ocitanoizfajla) = "5" Then
        Call SnimiuFajl("8")
        Form8.Show
   End If
   If Val(ocitanoizfajla) = "8" Then
        Call SnimiuFajl("5")
        Form5.Show
   End If
End Sub

Public Sub SnimiuFajl(brojforme)
    redbrfajla = FreeFile
    Open "BrForme.txt" For Output As #redbrfajla
        Print #redbrfajla, brojforme
   Close #redbrfajla
End Sub

Public Function ProcitajizFajla()
   redbrfajla = FreeFile
   Open "BrForme.txt" For Input As #redbrfajla
        Line Input #1, ocitanoizfajla
   Close #redbrfajla
   ProcitajizFajla = ocitanoizfajla
End Function
[ Shadowed @ 26.07.2007. 22:27 ] @
Trebas negde zapisati da je aplikacija vec jednom pokrenuta (u Registry, u neki fajl i sl.). Onda bi aplikacija kada je startujes proveravala (recimo u form8 form_load) da li je to zapisano i ako nije onda nastavlja sa radom i upisuje taj podatak a ako jeste onda pozove prikazivanje form5 i zatvara sebe.
[ Shadowed @ 27.07.2007. 03:46 ] @
Malopre nisam video rgdrajko-v post jer smo pisali u isto vreme.
Taj kod nece raditi dobro.
[ rgdrajko @ 27.07.2007. 07:28 ] @
Citat:
Shadowed: Malopre nisam video rgdrajko-v post jer smo pisali u isto vreme.
Taj kod nece raditi dobro.


Dokazi.
[ Shadowed @ 27.07.2007. 09:02 ] @
U slucaju da se prvi put pokrece aplikacija dobices "file not found" gresku jer pozivas otvaranje fajla koji ne postoji.
[ dava @ 27.07.2007. 09:04 ] @
Logicka greska.
Sa ovom izmjenjenom procedurom radi dobro.

Code:

Public Sub Main()
   On Error Resume Next
   ocitanoizfajla = ProcitajizFajla
   If Val(ocitanoizfajla) = 0 Or Val(ocitanoizfajla) = "5" Then
        Call SnimiuFajl("8")
        Form8.Show
   Else
        Load Form5
        Form5.Show
   End If
'   If Val(ocitanoizfajla) = "8" Then
'        Call SnimiuFajl("5")
'        Form5.Show
'   End If
End Sub


P.S. ovo sam na brzinu prepravio (znam da je moglo jednostavnije).
[ dava @ 27.07.2007. 12:57 ] @
Nisam vidjeo Shadowed-ov post (pisali smo u isto vrjeme).

Pored toga sto je Shadowed rekao, postoji logicka greska, jer svakim drugim pokretanjem starta se Form8, sto nije trazeno u zadatku.

Selo-Kovaci evo jedno elegantnije rjesenje, a zasniva se na upisivanju u registry (bas kao sto je Shadowed rekao)

Code:

Option Explicit

Dim reg As Variant

Public Sub Main()
Dim a As String

Set reg = CreateObject("wscript.shell")

On Error GoTo RegErr
a = reg.regread("HKCU\Software\Form8\Forma8")

If a = "Y" Then
    Load Form5
    Form5.Show
End If

Exit Sub
RegErr:
    reg.regwrite "HKCU\Software\Form8\Forma8", "Y", "REG_SZ"
    Load Form8
    Form8.Show

End Sub
[ Selo-Kovaci @ 27.07.2007. 13:22 ] @
Dali cu ovaj kod pisati u form5 ili form 8, ako moze da napravis u vb i zapakujes
[ goranvuc @ 27.07.2007. 13:33 ] @
Main() proceduru pises u nekom od standardnih modula, a ako nemas nijedan standardni modul u projektu - dodaj ga. Nakon toga u Project Explorer prozoru selektuj tvoj projekt, pa desni klik, pa Properties, ili u Project meniju to isto i na ekranu za podesavanja osobina projekta za opciju "Startup Object" izaberi sa liste "Sub Main".
[ Shadowed @ 27.07.2007. 13:38 ] @
Ili jos jednostavnije ;)
Nije bitno sta i da li ista pise u fajlu, postojanje fajla moze biti indikator:
Code:

Private Sub Form_Load()
    Dim MyFSO As New FileSystemObject
    If MyFSO.FileExists("IntroDone.txt") Then
        Form5.Show
        Unload Me
    Else
        MyFSO.CreateTextFile ("IntroDone.txt")
    End If
    Set MyFSO = Nothing
End Sub

Kod ide u form8 koji je vec postavljen kao start form (nema potrebe prepravljati na funkciju main).
[ goranvuc @ 27.07.2007. 13:46 ] @
Slazem se