Ein Stück Code ein- und ausschalten

Mister master

Erfahrenes Mitglied
Hi!

Also ich habe hier diesen code:

Visual Basic:
Option Explicit

'Deklaration: Globale Form API-Konstanten
Private Const SWP_NOMOVE As Long = &H2
Private Const SWP_NOSIZE As Long = &H1
Private Const HWND_TOPMOST As Long = -1&
Private Const HWND_NOTOPMOST As Long = -2&

'Deklaration: Globale Form API-Funktionen
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
    
Private Sub Form_Load()
    'Control-Eigenschaften initialisieren
    Check1.Caption = "Fenster obenhalten"
    Check1.Value = vbChecked
    Timer2.Interval = 250
    Timer2.Enabled = True
End Sub

Private Sub Check1_Click()
    If Check1.Value = vbChecked Then
        'Fenster im Vordergrund halten
        SetWindowPos hwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE + _
        SWP_NOSIZE
        Timer2.Enabled = True
    Else
        'Fenster kann von anderen Fensters überdeckt werden
        SetWindowPos hwnd, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE + _
        SWP_NOSIZE
        Timer2.Enabled = False
    End If
End Sub

Private Sub Label1_Click()

End Sub

Private Sub Timer2_Timer()
    'Wirkt einem Bug entgegen: Der Wert wird regelmäßig aktualisiert
    Call Check1_Click
End Sub

um meine Form immer im Vordergrund zu halten. Jetzt habe ich die Frage: Das ganze Zeug soll per Knopfdruck aktiviert werden, aber auch wieder über einen anderen Button deaktiviert werden können.
Wie mache ich das?
 
Hallo

Einfach wenn der Button gedrückt wurde z.B. eine Variable top = true

Bei Form_Resize prüfst du dann ob die Variable true ist und führst den Code aus...

mfg

Philipp9494
 
Mir stellt sich die Frage, wo das Problem liegt? Du kannst doch über die Checkbox wählen, ob die Form oben bleibt oder nicht. Was willst du noch zusätzlich dazufügen?


Der Doc!
 
-.- ach mist.

Ich war jetzt zwei Wochen mit einer kurzen
Unterbrechung weg auf Erholung ohne Computer, so dass ich einmal 2h ins inet konnte. Tut mir leid, da vergisst man so einiges.

Aber Grundsätzlich würde mich das schon interessieren, ob man wie bei Python sowas machen könnte wie

Code:
def obenhalten():
    #hier steht der code


run obenhalten()

in VB? Also ein ganzes Stück code nur mit einer Zeile starten?
(sorry wenn der Python code falsch ist, habs nur mal aus dem Gedächnis gemacht)
 
Sicher, du kannst ja eigene Funktionen und Prozeduren schreiben, die du dann aus anderem Code aufrufen kannst:
Visual Basic:
'Prozedur "Fenster im Vordergrund halten"
Sub FensterOben()
 SetWindowPos hwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE + _
  SWP_NOSIZE
 Timer2.Enabled = True
End Sub

'Prozedur "Fenster kann von anderen Fensters überdeckt werden"
Sub FensterNormal()
 SetWindowPos hwnd, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE + _
 SWP_NOSIZE
 Timer2.Enabled = False
End Sub

Private Sub Check1_Click()
 If Check1.Value = vbChecked Then
  FensterOben
 Else
  FensterNormal
End If
End Sub

Private Sub Timer2_Timer()
 'Wirkt einem Bug entgegen: Der Wert wird regelmäßig aktualisiert
 FensterOben
End Sub


Der Doc!
 
Zurück