Har för mig att det finns ett kommando, som gör att formen alltid är överst. Hej, Jag hittade vbModal, men jag får problem. Hej lägg denna kod i en BasModul Lite svårt att förstå.Alltid överst
Någonting med modal?Sv: Alltid överst
<code>
Dim f as new Form1
f.Show vbModal
</code>
Formuläret blir då modalt för din applikation. Om du i st vill att formuläret ska ligga över alla andra applikationer också så får du använda ett Windows API i st. Jag kan leta upp det åt dig om det är det du vill ha...
/Per HultqvistSv: Alltid överst
Om jag startar mitt huvudformulär i vbModal, och därefter trycker på en knapp, som skall visa ett annat formulär, så får jag fel.
Problemet är:
Jag vill alltid att det formuläret som jag tittar på skall vara överst, sär jag stänger det, så skall nästa(oftast huvudformuläret) vara överst. Någonstans (kan iinte hitta det) i min kod, så finns det någon kod, som gör att formuläret inte ligger överst, utan "tappar" bort sig (dålig förklaring).
Förstår ni vad jag menar?Sv: Alltid överst
<code>
Option Explicit
'**************************************
'Windows API/Global Declarations for :Set Form on top easily put this into a module
Declare Function SetWindowPos Lib "user32" (ByVal hwnd As Long, _
ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, _
ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
Public Const SWP_NOACTIVATE = &H10
Public Const SWP_NOMOVE = &H2
Public Const SWP_NOSIZE = &H1
Public Const SWP_SHOWWINDOW = &H40
Public Const HWND_TOPMOST = -1
Public Const HWND_NOTOPMOST = -2
Function FormOnTop(hwnd As Long)
Dim wFlags As Long, PosFlag As Long
wFlags = SWP_NOMOVE Or SWP_NOSIZE Or SWP_SHOWWINDOW Or SWP_NOACTIVATE
PosFlag = HWND_TOPMOST
SetWindowPos hwnd, PosFlag, 0, 0, 0, 0, wFlags
End Function
'Sen kan du lägga detta i Formen som du vill ha topmost
Private Sub Form_Activate()
Dim topm As Long
topm = FormOnTop(Me.hWnd)
End Sub
</code>
/Sven
När du vill ändra får du trixa med HWND_NOTOPMOST = -2
DsSv: Alltid överst
Du kan även använda OwnerForm parametern för show.
<code>
Private Sub Command1_Click()
Form2.Show , Me
End Sub
</code>
Form2 kommer då ligga över formuläret det öppnas från. Men man kan fortfarande klicka i det första formuläret.
Användbart för verktygsfönster. T.ex. Pallet, miniatyr osv i ritprogram.