[ Srdjan Prpa @ 08.07.2007. 14:27 ] @
Da li moze kako da se namesti da mogu da pomeram prozor kad mi je Border Style 0 i da li mogu preko label da pomeram prozor isto kad mi je Border Style 0? |
[ Srdjan Prpa @ 08.07.2007. 14:27 ] @
[ Marko_L @ 08.07.2007. 14:41 ] @
Može, ali moraćeš da koristiš API. Evo jednog rešenja na brzaka, mada ima i drugih načina
Code: Option Explicit Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long Private MouseDownForm As Boolean Private MouseDownFormX As Single Private MouseDownFormY As Single Private Type POINTAPI X As Long Y As Long End Type Private Sub form_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single) MouseDownForm = True MouseDownFormX = X MouseDownFormY = Y End Sub Private Sub form_MouseUp(Button As Integer, Shift As Integer, X As Single, Y As Single) MouseDownForm = False End Sub Private Sub form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) If MouseDownForm = False Then Exit Sub Dim Z As POINTAPI Call GetCursorPos(Z) Me.Top = (Z.Y * 15) - MouseDownFormY Me.Left = (Z.X * 15) - MouseDownFormX End Sub [ Srdjan Prpa @ 08.07.2007. 15:36 ] @
Mozes li malo jasnije da mi objasnis kako se koristi taj API ili jos bolje da mi odradis u VB jedan primerak pa da mi stavis na forum!
tnx [ Shadowed @ 08.07.2007. 15:45 ] @
Ima druga varijanta sa API-jem, jednostavnija i elegantnija, al' ne znam napamet a vec sam postovao na forumu. Mozda ce skin u pretrazi ovog foruma dati dobar rezultat.
[ Marko_L @ 08.07.2007. 15:55 ] @
API je prosto rečeno skup funkcija sadržanih u samom operativnom sistemu koje možeš deklarišeš i pozivaš po potrebi. za detalje skini programčić API Guide (imaš link u TOP temi) u kome imaš spisak funkcija sa sve načinom deklaracije, opisom za šta koja služi, sintaksom i primerima kako se koriste. Što se tiče primera, kod koji sam ti dao je upravo to. Iskopiraj ga u formu i moći ćeš da prevlačiš istu po ekranu tako što klikneš bilo gde na njoj. Što se tiče objašnjenja kako primer radi, u pitanju je prilično jednostavna stvar i koristi samo jedan API poziv GetCursorPos koji nam vraća trenutnu poziciju kursora i nekoliko promenljivih. Ono što zapravo radimo jeste da prilikom klika na formu, odnosno okidanja MouseDown eventa podešavamo flag MouseFormDown na true, koji označava da li je dugme kliknuto ili nije i očitavamo trenutnu poziciju kursora na formi radi kasnijeg izračunavanja gde forma treba da se nađe na ekranu u odnosu na to u kom delu forme je kliknuto kako ne bi dolazilo do seckanja. Zatim u MouseMove eventu radimo samo izračunavanje, odnosno postavljanje forme na mesto gde smo je povukli. i konačnu u MouseUp eventu forme vraćamo flag na False kako se forma ne bi pomerala ako dugme na mišu nije pritisnuto. Kao što rekoh, postoje i drugi načini da se ovo uradi, a za to istraži malo Api pomoću već pomenutog APIGuide-a.
[ Marko_L @ 08.07.2007. 15:59 ] @
Citat: Ima druga varijanta sa API-jem, jednostavnija i elegantnija, al' ne znam napamet a vec sam postovao na forumu. Mozda ce skin u pretrazi ovog foruma dati dobar rezultat. Da, zato i rekoh da pogleda API Guide :) Evo primera upravo iz njega. Code: Private Declare Function SendMessage Lib "User32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long Private Declare Sub ReleaseCapture Lib "User32" () Const WM_NCLBUTTONDOWN = &HA1 Const HTCAPTION = 2 Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) 'KPD-Team 1999 'URL: http://www.allapi.net/ 'E-Mail: [email protected] Dim lngReturnValue As Long If Button = 1 Then 'Release capture Call ReleaseCapture 'Send a 'left mouse button down on caption'-message to our form lngReturnValue = SendMessage(Me.hWnd, WM_NCLBUTTONDOWN, HTCAPTION, 0&) End If End Sub [ Shadowed @ 08.07.2007. 17:12 ] @
To je to.
[ Srdjan Prpa @ 08.07.2007. 18:53 ] @
Jel mozete jos da uradite jedan primerak i da ga okacite na forum!
[ Marko_L @ 08.07.2007. 22:24 ] @
Pa ako ne možeš da se snađeš da uradiš najobičniji copy paste sa foruma, slobodno se odma' mani programiranja :)
Evo korak po korak: 1. Selektuj sav kod (ovaj poslednji što sam ostavio) 2. Pritisni CTRL+C na tastaturi 3. Otvori VB 4. Dodaj jednu formu (ako već nije dodata) 5. Klikni 2 puta levim dugmetom miša na tu formu i otvoriće ti se prozor za unos koda 6. Pritisni CTRL+V na tastaturi 7. Startuj program 8. Klikni mišem bilo gde na formi i probaj da je vučeš po ekranu Eto, ja bolje ne umem da objasnim. [ Shadowed @ 08.07.2007. 22:36 ] @
U vezi 5), moras brzo da kliknes drugi put; takozvani dupli klik.
[ Srdjan Prpa @ 09.07.2007. 02:18 ] @
Hvala svima namestio sam!
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.
|