[ mdax @ 25.05.2005. 12:10 ] @
Kako da napravim da pomeranje glavne forme utiče na pomeranje druge forme, odnosno kako da ih povežem kada nema EVENT.

Ovako Druga forma je u glavnoj formi. Klikom na glavnu formu i njenim pomeranjem hoću da se i druga forma pomera kao da je sastavni deo glavne forme.

Svaka pomoć bi mi dobro došla! HVALA!
[ Aleksandar Ružičić @ 25.05.2005. 12:24 ] @
moras da subclassusjes glavnu formu i da cekas WM_MOVE poruku...
[ mdax @ 28.05.2005. 22:34 ] @
Ali koko se to radi!
Imaš li bar neki primer.
[ Marko_L @ 28.05.2005. 23:10 ] @
Možeš to da uradiš i drugačije.Recimo sa Timer kontrolom.Probaj ovako, napravi dve forme (Form1 i Form2), na glavnu formu stavi Timer kontrolu i na toj formi stavi sledeći kod
Code:
Dim Levo1 As Long
Dim Gore1 As Long
Dim Levo2 As Long
Dim Gore2 As Long
Dim LevoR As Long
Dim GoreR As Long
Private Sub Form_Load()
Form2.Show
Timer1.Interval = 1
Timer1.Enabled = True
End Sub
Private Sub Timer1_Timer()
If LevoR = 0 And GoreR = 0 Then
Levo1 = Form1.Left
LevoR = Levo1
Gore1 = Form1.Top
GoreR = Gore1
Levo2 = Form2.Left
Gore2 = Form2.Top
End If
Levo1 = Form1.Left
Gore1 = Form1.Top
If LevoR <> Levo1 Or GoreR <> Gore1 Then
Form2.Move Form2.Left + (Levo1 - LevoR), Form2.Top + (Gore1 - GoreR)
LevoR = Levo1
GoreR = Gore1
End If
End Sub

Vidi da li ti završava posao.
[ GMC @ 29.05.2005. 15:31 ] @
imam i ja jedno pitanje a mislim da mozeu ovu temu:


kako da u jednu glavnu formu ubacim par drugih formi , ali tako da se nemogu "odvuci" van te glavne forme nage da djeluju kao njen dio , da te nove forme mogu pomjerat unutar ove glavne ali ne i van nje, i plus da radi ovo sto je pitao Marko_L , da se pomice zajedno sa glavnom formom (ali doboro ovo za pomicanje ste objasnili)

Hvala
[ Marko_L @ 29.05.2005. 17:04 ] @
Ubaci u projekat MDI form, i svim formama koje želiš da staviš u nju podesi svojstvo MDIChild na True.A što se tiče pomeranja, u tom slučaju ti ne treba ovaj kod koji sam postovao iznad jer će se CHILD forma svakako pomerati zajedno sa MDI formom.
[ GMC @ 30.05.2005. 14:57 ] @
Hvala!

A jeli mi mozete jos reci kako da ogranicim kretanje ovoe child forme, znaci da joj zabranim da je korisnik misem dovuce npr. na odredjenu daljinu od lijeve ivice MDIforme? Jeli to moguce uraditi? (Ovo pitam jer planiram da smjestim uz tu ljevu ivicu listu sa svim otvorenim formama a ne zelim da se ove child forme mogu dovuci preko te liste...)

[ Marko_L @ 30.05.2005. 16:16 ] @
Hmmm...ne znam na šta misliš, pošto CHILD forma i ne može da ode dalje od leve ivice MDI forme, u stvari može, ali na MDI formi se automatski pojavljuje scroll i ako skroluješ videćeš da jeleva ivica child forme i dalje na levoj ivici MDI forme.No, ukoliko ne želiš da se ta child forma pomera, možeš da joj staviš svojstvo Moveable na False.A što se tiče toga da druge forme ne mogu da je prekriju, pretraži malo forum, bilo je reči o tome kako da se forma postavi da bude always on top.
[ GMC @ 30.05.2005. 16:38 ] @
Pogresno si me shvatio,
Mislio sam kako da zabranim da se child forma pomjeri na odredjeni dio unutar MDIforme, recimo par centimetara od ljeve ivice(prema sredini forme) , ali nije bitno sada jer sam rijesio taj problem uz pomoc ovog movable, i border 0 , tako da sam dobio uglavnom ono sto mi je trebalo

Hvala u svkaom slucaju!
[ mdax @ 30.05.2005. 20:56 ] @
Hvala, ali moželi preko API-ja?
[ Aleksandar Ružičić @ 30.05.2005. 21:25 ] @
APi za postavljanje jedne forme na drugu?
korisiti SetParent (za tacnu deklaraciju pogledaj u API-Guideu):
Code:

 Private Sub Form_Load()
  SetParent Me.hWnd, Form1.hWnd
 End Sub


ovo ce ti postaviti Form2 na Form1 (bez MDI formi)
[ GMC @ 30.05.2005. 21:27 ] @
Ja se stvarno izvinjavam ali opet imam problem, slican onome sto sam mislio da sam rijesio?
Dakle sad sam stavio coolbar na vrh MDIforme i pored ostalog imam dva - tri child prozora koji imaju movable = true , ali kad pokusam da maknem te forme u vrh ekrana one se "zavuku" ispod toolbara a to mi ne odgovara. Dali je moguce to rijesiti ili cu morati i tu napraviti novu formu pa je oznacit kao staticnu pa na nju stavit coolbar?

Hvala!
[ Marko_L @ 30.05.2005. 22:22 ] @
@mdax
Pomeranje dve forma uz pomoć API-ja.

U modul
Code:
Option Explicit

Public OldWindowProc As Long
Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hwnd As Long, _
ByVal msg As Long, ByVal wParam As Long, lParam As WINDOWPOS) As Long
Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Public Const GWL_WNDPROC = (-4)

Type WINDOWPOS
    hwnd As Long
    hWndInsertAfter As Long
    x As Long
    y As Long
    cx As Long
    cy As Long
    flags As Long
End Type
' Process messages.
Public Function NewWindowProc(ByVal hwnd As Long, ByVal msg As Long, ByVal wParam As Long, lParam As WINDOWPOS) As Long
Const WM_NCDESTROY = &H82
Const WM_WINDOWPOSCHANGING = &H46

    ' If we're being destroyed,
    ' restore the original WindowProc.
    If msg = WM_NCDESTROY Then
        SetWindowLong _
            hwnd, GWL_WNDPROC, _
            OldWindowProc
    Else
        ' See if the window is moving.
        If msg = WM_WINDOWPOSCHANGING Then
            ' The window is moving. Keep the others with it.
            Form2.Move Form1.Left + Form1.Width, Form1.Top - 360
        End If
    End If

    ' Continue normal processing. VERY IMPORTANT!
    NewWindowProc = CallWindowProc( _
        OldWindowProc, hwnd, msg, wParam, _
        lParam)
End Function


Na formi

Code:
Private Sub Form_Load()
Form2.Show
OldWindowProc = SetWindowLong( _
     hwnd, GWL_WNDPROC, _
     AddressOf NewWindowProc)
End Sub


[ mdax @ 01.06.2005. 00:06 ] @
Hvala, pokušaću to.