Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB6: Aukinaiset ohjelmat? VB

juhaz [14.08.2002 22:23:09]

#

Onkohan mahdollista tehdä niin, että jos vaikka on MDIForm1 ja siellä on vaikka valikossa form1 ja form2 niin sitten jossain MDIForm1:ssä olis kohta missä näkis, että mikä on milloinkin auki (tarkoitan muualla kuin siellä valikossa sillä sen valikkohommelin mä tiesin, mutta niin, että jos form1 olisi auki niin vaikka textboxiin tulisi teksti form1, mutta tuo form1 ei sitten aukeasi uudelleen.

Itse sain kyllä, että tulee sinne textboxiin "form1" teksti, kun form1 on auki, mutta kun se aukeaa heti, kun se "koodi" suoritetaan.

(nimetön) [15.08.2002 10:07:06]

#

Huoh... ymmärsinköhän oikein?

Eli siis haluat luoda tilan, joka tietää onko kukin ladattava lomake ladattu vai ei? Tätä sitten käyttäisit estääksesi sen, ettei alasvetovalikosta valittuna lomaketta voi toiseen kertaan ladata MDIFormiin?

Tapoja tuli heti mieleen kaksi.

1. Ladattaessa lomake aseta alasvetovalikon lomakkeen valintakohdan ominaisuus enabled=false. Pääset viittaamaan valikkoon suoraan MDIFormin koodista kirjoittamalla: Me.Valikko.Enabled=false. (Me on lomakkeen viittaus itseensä... ei tosin tarpeen).

Seuraavaksi asetat Ladattavan lomakkeen Form_UnLoad-tapahtumankäsittelijään: MDIForm1.Valikko.Enabled=true (jossa MDIForm1 on emolomakkeen nimi...)

Tällä tavoin käyttäjälle ei edes anneta mahdollisuutta valita kyseistä lomaketta ladattavaksi uudelleen.

Voit myös käyttää enabled ominaisuuden sijasta checked-ominaisuutta. Tällöin vain sinun täytyy tutkia onko valikko "checked" vai ei siinä aliohjelmassa jossa se lomake ladataan.

2. Toinen tapa on käyttää kullekkin lomakkeelle julkista tilamuuttujaa, joka tutkitaan valittaessa alasvetovalikon tietty kohta.

MDIFormiin määritellään jokaista ladattavaa lomaketta kohden yksi julkinen boolean muuttuja, jonka tilaa vaihdetaan ladatattaessa lomake ja suljettaessa lomake.

MDIFormin header osaan:
Public bForm1Loaded as boolean

Lomakkeen Form1_Load tapahtumakäsittelijään:
bForm1Loaded=true

Lomakkeen Form1_Unload tapahtumakäsittelijään:
bForm1Loaded=false

ja lopuksi alasvetovalikon tapahumakäsittelijään (Valikko_Click):
If bFormLoaded=false then Load Form1...

thefox [15.08.2002 14:11:18]

#

juhaz voisi koittaa opetella kirjoittamaan hieman selväkielisempää tekstiä jos apua kaipaa :p

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta