Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB6: aina päällimmäisenä

Sivun loppuun

Puhveli [16.05.2004 16:11:22]

#

miten saa semmosen että mdiformissa on joku formi joka on aina päällimmäisenä? tässä ei sitten käy timeri joka kutsuu koko ajan Zorderia, oon kokeillu jo :D. myöskään muissa formeissa toimiva SetWindowPos api ei toimi mdiformin sisällä.

jcd3nton [16.05.2004 17:43:01]

#

En tiedä, mutta mihinkä tartteisit? MDI ohjelmissahan on ideana että siinä voi käyttää useaa formia...

Puhveli [16.05.2004 18:32:43]

#

niin, mutta jos mulla on esim sizable formi joka on venytetty koko ikkunaan niin muut formit tuppaa jäämään sen alle

Meitzi [16.05.2004 18:39:33]

#

Tee niistä muista lapsiformeja jolloin ne ovat väkisin sen päällä.

jcd3nton [16.05.2004 18:52:30]

#

Meinaat että sulla siis on lapsi ikkuna suurennettuna MDI pääikkunaan? Miksi siellä pitäisi jonkun formin näkyä sen yllä...? Työkaluikkunaako yrität saada näkymään?

Puhveli [17.05.2004 20:24:49]

#

jep, työkaluikkunan tai sen tapaisen... meizi, ei toi toimi, koska se sizableformikin on mdilapsukainen

jcd3nton [17.05.2004 21:23:13]

#

Yleensä "isompiin" ohjelmiin kuten Visual Basic, on käyttöliittymä tehty jollain kehittyneemmällä kielellä. Jos vaikka katsot VB:n toolboxia, huomaat että se on nätisti kiinnitetty MDI sovelluksen reunoihin, mutta se silti sisältää X painikkeen ja otsikkorivin. Visual Basicissa ei oletuksena voi formille tehdä aivan samaa olemusta. Sen sijaan Visual C++:ssa on tehty helpoksi tehdä täsmälleen samankaltainen boxi kuin Visual Basicin työkaluikkunat.

Jos, ja kun haluat MDI sovellukseen työkaluikkunan, (mielestäni) MDI lapsi-ikkuna ei tähän sovellu. MDI lapsi-ikkunaahan käytetään lähinnä mallina ohjelman yleisestä "dokumentista" kuten VB:ssä koodi-ikkunat ja lomakkeen kehitysikkunat.

Työkalulaatikon tahi muun tällaisen saat helposti lisäämällä pääikkunaan (MDI) pictureboxin. Pictureboxiin pystyy vetämään kontrolleja, kun taas muuten ei MDI ikkunaan ainakaan helposti lisätä. Et varmaankaan halua työkaluikkunan näyttävän tavalliselta upotetulta pictureboxilta, joten pistä picturen BorderStyle:ksi none. Editorissa mäyttää hiukan typerältä, mutta kun ajat ohjelman niin se näyttää hienolta "koholla tummasta taustasta" olevalta työkaluriviltä. Jos haluat sen muualle kun yläreunaan (ainakin minulla oletuksena se menee yläreunaan), laita picturen Align ominaisuuteen jokin muu kuin top. That's it =)

En sitten tiedä onko tämä paras tapa, mutta itse koen tämän helpoksi.
~jc

Antti [17.05.2004 22:43:42]

#

No vaikka jcd3nton nyt vaikutti aika ehdottomalta kokeilisin silti modaalista ikkunaa... eli avaat haluamasi lomakkeen komennolla: Form1.Show vbModal

Puhveli [18.05.2004 12:13:14]

#

jcd3nton:
Joo, toi on ihan varteenotettava idea vbssä. oon kokeillu joskus kun tein vb2:lla lukkarieditorin, siinä kun ei voi tehdä kuin yhdenlaisia formeja. Hyvä idea toi on, käytän sitä. Kas kun ei aikaisemmin tullu mieleen.

antti:
mikä on modaalinen ikkuna? voi olla tyhmä kymysys mutta en tiä.

jcd3nton [18.05.2004 14:34:55]

#

Ei kai modaalinen ole kiinteä MDI ikkunassa? Ei välttämätä saa "sulavasti istumaan" siellä... Toisekseen modaalihan odottaa käskyä ennen kuin muu osa ohjelmasta suoritetaan. Ei semmaoinen käy laatuun,kun on tarkoitus tehdä toolboxi tai muu vastaava.

Lainaus MSDN Librarysta

lainaus:

A modal dialog box must be closed (hidden or unloaded) before you can continue working with the rest of the application. For example, a dialog box is modal if it requires you to click OK or Cancel before you can switch to another form or dialog box.

~jc

Antti [19.05.2004 09:56:56]

#

Modaalinen ikkuna suorittaa toimintoja normaalisti omalla lomakkeellaan - se ei vain anna siirtyä muihin lomakkeisiin ennen kuin modaalinen lomake on suljettu.
Avainlauseena: "before you can continue working with the rest of the application" eli "ennenkuin voit jatkaa TYÖSKENTELYÄ muualla ohjelmassa" - se ei tarkoita ettei muu ohjelma toimisi.

Jos koodissa on muita "säikeitä" kuten ajastin tms. ne toimivat normaalisti modaalisen ikkunan ollessa avoinna.


Edit: MDIFormin sisällä ei voi näyttää lomaketta modaalisena... siitä tuli herja kun testasin. Jos haluaa avata ikkunan MDI-sovelluksessa modaalisena kyseisen lomakkeen MDIChild ominaisuus tulee olla false.

~A

Antti [19.05.2004 10:18:44]

#

Puhveli:
Pictureboxin voi lisätä suoraan MDI-lomakkeeseen ja käyttää sitä toolboxina. Lomakkeet ei suostu menemään sen päälle, mutta se telakoi itsensä aina lomakkeen ylälaitaan tai alalaitaan lomakkeen levyseksi.

jcd3nton [19.05.2004 14:28:42]

#

Antti kirjoitti:

Modaalinen ikkuna suorittaa toimintoja normaalisti omalla lomakkeellaan - se ei vain anna siirtyä muihin lomakkeisiin ennen kuin modaalinen lomake on suljettu.
Avainlauseena: "before you can continue working with the rest of the application" eli "ennenkuin voit jatkaa TYÖSKENTELYÄ muualla ohjelmassa" - se ei tarkoita ettei muu ohjelma toimisi.

Ehkä selitin epäselvästi, mutta tuota juuri tarkoitin. Siis eikös se niin ole että jos on modaali auki ja yrität klikata toisella formilla niin kuuluu bling ja mitään ei tapahdu... Eli se odottaa sulkemista. Tämähän tekee VB tyylisen toolboxin tekemisen vaikeaksi koska se pitää aina avata ja työkalun valitsemisen jälkeen sulkea...

~jc

PS.

lainaus:

~A

Nytkö se tarttuu muihinkin... ;-)

Antti [19.05.2004 15:02:52]

#

Jep ;D

~A

Gwaur [19.05.2004 15:13:59]

#

heh

~GW
</offtopic>

Puhveli [19.05.2004 19:20:41]

#

joo kiitos

Edit: ~Ph


Sivun alkuun

Vastaus

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

Tietoa sivustosta