Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: VB.NET: Lomakkeen pitäminen alimmaisena

Sivun loppuun

Juhko [27.09.2008 17:49:49]

#

Miten saan tehtyä niin, että lomake pysyy aina alimmaisena, vaikka sitä klikattaisiin?

Tarkoitus on tehdä pilaversiota Windowsista, ja työpöydän pitäisi pysyä alimmaisena.

Merri [27.09.2008 19:05:42]

#

Millä kielellä? (nykyään ei koskaan tiedä milloin on .NET ja milloin ei, ja ihan eri kielet kyseessä...)

Periaatteena vanhalla VB:llä voi tehdä niin, että tekee toisista formeista työpöytäformin lapsielementtejä antamalla tyylin WS_CHILD ja sitten käyttäen SetParentia siirtää ne formit työpöytäformiin.

Juhko [27.09.2008 21:14:35]

#

VB6 on kyseessä, toimiiko sillä?

ps. Aloitin VB-ohjelmoinnin about 2 viikkoa sitten, enkä osaa vielä yhtään mitään. :)

Merri [28.09.2008 01:55:50]

#

Tässä on nyt jonkunlainen esimerkki, jonka pohjalta lähteä leikkimään. Tätä kokeilua varten aloita uusi projekti, lisää siihen Form1:n seuraksi Form2 ja pasteta koodia:

' Form2
Option Explicit

Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetParent Lib "user32" (ByVal hWndChild As Long, ByVal hWndNewParent As Long) As Long
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long

Private Const GWL_STYLE = (-16)
Private Const WS_CHILD = &H40000000

Private Sub Form_Load()
    ' tee tästä lomakkeesta lapsielementti (tämä korjaa mm. fokus-ongelmia)
    SetWindowLong Me.hWnd, GWL_STYLE, GetWindowLong(Me.hWnd, GWL_STYLE) Or WS_CHILD
    ' nyt aseta tämä lomake Form1:n sisään
    SetParent Me.hWnd, Form1.hWnd
End Sub

Form1:een lisää nappula ja sitten pastettele lisää:

Option Explicit

Private Sub Command1_Click()
    Form2.Show
End Sub

Private Sub Form_Unload()
    ' tärkeää! Form2 täytyy pakottaa sulkeutumaan tai se jää elämään muistiin eikä ohjelmasi sulkeudu
    Unload Form2
End Sub

Ymmärtääkseni käytät yhtä lomaketta työpöytänä, tässä tapauksessa Form1 edustaisi moista.

Juhko [28.09.2008 12:25:24]

#

Ei toimi, SetWindowLong ja SetParent funktioiden kohdalla tulee "Syntax Error"..

Merri [28.09.2008 13:27:25]

#

Onko sinulla nyt ihan varmasti siis VB6? Se on kuitenkin jo yli kymmenen vuotta vanha kapistus ja myös näyttää siltä (ja voisi olla parempi opetella Visual Basic 2008 Express Edition, VB6:n elinvuodet päättyvät hyvin todennäköisesti Vistan mukana).

Juhko [28.09.2008 14:54:01]

#

"Microsoft Visual Basic 6 Professional Edition", ihan varmasti.

Niin, ja toinen kysymys (jota varten en viitsi aloittaa aihetta), elikkä onko mahdollista tehdä läpinäkyviä lomakkeita (tarkoitus olis tehdä näytöllä kävelevä kovakuoriainen)?

Merri [28.09.2008 16:22:50]

#

Hmm, siinä tapauksessa... kopioitko siis koko tuon koodiosuuden lomakkeen kaikeksi koodiksi? Eli et esim. pastennut vain jonkin proseduurin kuten Form_Load() sisälle?

Tein zipin ladattavaksi: http://kontu.selfip.info/vb6/Lapsi.zip

Juhko [29.09.2008 16:37:45]

#

Tuo zip-versio toimii kyllä, mutta itse pastetettu ei, syytä en ymmärrä, no ihan sama.

Noiden lapsien kanssa tulee muuten ongelmia mm. tekstikenttien ja valikoitten kanssa..


Sivun alkuun

Vastaus

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

Tietoa sivustosta