Prog:: Visual Basic
Pretazeni okna
Titulni strana

Forum
Builder (10)
Problemy a algoritmy (250)
Java (61)
Web (123)
Win32 (74)
PowerBuilder

Archiv
Obecne
Nastroje
Win32
Java
Web

Internet
Megaprint
Technet
Namodro
Lupa
 
Reklama

Pretazeni okna trochu jinak

Pokud chcete zmenit pozici okna, tak ho uchopite za titulkovy pruh a pretahnete ho na novou pozici. Je to opravdu jedina moznost? Nasledujici kod umozni pretazeni okna uchopenim za jeho libovolnou cast.

Option Explicit
Dim TlacitkoDole As Boolean
Dim x1 As Single
Dim y1 As Single


Private Sub Form_MouseDown(Button As Integer, 
        Shift As Integer, X As Single, Y As Single)
    ' Pokud je okno maximalizovane nebo minimalizovane
    ' ukonci se provadeni procedury
    If WindowState = vbMaximized Or 
	              WindowState = vbMinimized Then Exit Sub
    ' Test tlacitka - pokracuje se jen pri levem tlacitku
    If Button <> vbLeftButton Then Exit Sub
    
    ' Tlacitko je zmacknute
    TlacitkoDole = True
    ' Ulozeni aktualni pozice kurzoru
    x1 = X
    y1 = Y
End Sub

Private Sub Form_MouseMove(Button As Integer, 
        Shift As Integer, X As Single, Y As Single)
    ' Pokud je zmacknute leve tlacitko mysi
    If TlacitkoDole Then
        ' Zmena pozice okna
        ' Vyraz (X - x1) a (Y - y1) je zmena polohy kurzoru
        ' mysi vuci pozici, kde bylo stisknuto tlacitko. O tento
        ' kousek se take posune okno
        Form1.Left = Form1.Left + (X - x1)
        Form1.Top = Form1.Top + (Y - y1)
    End If
End Sub

Private Sub Form_MouseUp(Button As Integer, Shift As Integer, 
        X As Single, Y As Single)
    ' Uvolneni tlacitka mysi
    TlacitkoDole = False
End Sub

Tento kod lze pouzit i v MS Office 97/2000 aplikacich, jen je nutne konstanty (vbMaximized = 2, vbMinimized = 1, vbLeftButton = 1) uvest ciselnou hodnotou.

Stazeni zdrojoveho kodu prikladu: posunokna.zip (1,4 kB)

Testovano a odladeno: Visual Basic 6.0 Enterprise Edition, melo by pracovat ve vsech verzich VB

Stepan Bechynsky, http://www.builder.cz/stepan



Reklama

 
 

cbob@builder.cz