undrar: Tack för de snabba svaren! fråga på svar 2: Du får kontrollera tipsen inna du skickar upp dem. Att använda varianter är inte snyggt. nä det är sant... Denna metod använd t.ex. för en tollbar elelr annat verktygsfönster som hör till fönstret.om forms
1. Hur stänger man en form med kod från en modul?
2. Om man alltid vill ha en form överst men samtidigt ska kunna jobba i de som ligger under, hur gör man då? (typ funktionen alltid överst som finns för vissa program) Sv: om forms
ok
Har ett frmMain med en knapp som ska fimpa ett frmB...
så:
Unload frmB
fan, tyckte jag provade det tidigare men fick det inte att funka... men jo det funkar
tack Sv: om forms
<code>
'---------------------- ----------------------
'sätter överst
onTop Me, true
'sätter inte överst
onTop Me, false
'sätter form2 överst
onTop form2, true
'---------------------- ----------------------
Private 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 Function onTop(frmForm as Form, ionTop)
Dim iState
if (onTop = true) then
iState = -1
else
iState = -2
end if
SetWindowPos frmForm.hWnd, iState, , , , , 80
End Function
</code>
i slutet... frmForm.hWnd,...
får "Argument not optional" här... varför?Sv: om forms
Här är kod jag lånat från AllAPI.Net
<code>
Private Const HWND_TOPMOST As Long = -1
Private Const HWND_NOTOPMOST As Long = -2
Private Const SWP_NOSIZE As Long = &H1&
Private Const SWP_NOMOVE As Long = &H2&
Private Const SWP_NOACTIVATE As Long = &H10&
Private Const SWP_SHOWWINDOW As Long = &H40&
Private Declare Sub 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)
Public Sub SetTopmost(Value As Form)
SetWindowPos Value.hWnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOACTIVATE Or SWP_SHOWWINDOW Or SWP_NOMOVE Or SWP_NOSIZE
End Sub
Public Sub SetNonTopmost(Value As Form)
SetWindowPos Value.hWnd, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOACTIVATE Or SWP_SHOWWINDOW Or SWP_NOMOVE Or SWP_NOSIZE
End Sub
</code>Sv: om forms
Tack, funkar hur bra som helst!
hm..
men vad är skillnaden på att lägga frmB överst enligt metoden ovan och:
FrmB.Show , Me
om man startar frmB från en annan form?Sv: om forms
<code>
FrmB.Show , Me
</code>
Koden lägger bara FrmB formuläret framför Me. Medans Topmost sätter det över alla öppna föster. Ett Topmost fönster kommer ju givetvis samsas med andra Topmost fönster.