Newsgroup: it.comp.appl.access
Titolo: Ricavare top e left di una form

Mi farebbe comodo sapere dove sta una form (top e left),
rispetto alla finestra di access, ovviusli.
E magari anche height e width.
Come si fa?
Mi servirebbe per "sincronizzare" la posizione di due form
alternative.
Prometto che quando avro' risolto mandero' un esempio
pratico al sito comune ;-)
Bai
--
Lorenzo Coronati
--
<<vedo che i cretini sono tanti, il run time di 
acces si scarica liberamente nelle pagine di 
microsoft.com
 e non necessita di alcuna licenza>>
(Mitos, 16/11/2000)
--

 Lorenzo Coronati
Un esempio (tra i molti presenti) di due maschere sincronizzate si trova nel
db  FrmSmp97.mdb
(Scaricato dal sito della Microsoft qualche anno fa)
nell'esempio due maschere si aprono in sequenza , una in alto a sinistra la
seconda in basso a destra , scorrendo i record di una maschera in sintonia
scorrono i record della seconda.
Se questo ti serve di aiuto e non hai il db te lo posso inviare
Nel db come negli altri presenti nel sito (Sample .) ci sono suluzioni
interessanti , propongo di metterlo nel sito comune.
giuseppe

Se questo ti serve di aiuto e non hai il db te lo posso inviare
Ci darei un'occhiata volentieri :-)
TIA


"Lorenzo Coronati" <lorenzo.coronati@liberopuntoit> ha scritto nel messaggio
news:3a23f923...@news.libero.it...

Se per le due maschere imposti la proprietą Centratura automatica a NO, la
prima volta che le apri posizionale dove ti serve: quando le aprirai le
volte successive ti si posizioneranno nella posizione in cui erano al
momento che le hai chiuse.
Se poi voi fare il tutto da codice, mi sembra che dovresti risolvre il
problema con il metodo MoveSize dell'oggetto DoCmd.
--
Roberto
---------------------------------------------
il Sito Comune di it.comp.appl.access:
http://members.xoom.it/it_db_access/
---------------------------------------------

momento che le hai chiuse.
Certo, ma io vorrei che, se l'utente ne sposta una, l'altra
la segua.
Devono sempre essere sovrapposte, anche in caso di
ridimensionamento!
Cmq Robertino D'Agostino mi ha mandato un mdb che appena
avro' tempo mi spulcero' per bene.
Se trovo una buona soluzione la mando a Fede.
Grazie per l'interessamento.


 alternative.
prova questa.
Tratto dall'articolo Q143162 su MSDN
****************
Type RECT_Type
    left As Long
    top As Long
    right As Long
    bottom As Long
End Type
Declare Function apiGetWindowRect Lib "user32" Alias _
      "GetWindowRect" (ByVal hWnd As Long, lpRect As RECT_Type) As Long
Declare Function apiGetDC Lib "user32" Alias "GetDC" _
      (ByVal hWnd As Long) As Long
Declare Function apiReleaseDC Lib "user32" Alias "ReleaseDC" (ByVal _
      hWnd As Long, ByVal hDC As Long) As Long
Declare Function apiGetDeviceCaps Lib "gdi32" Alias "GetDeviceCaps" _
      (ByVal hDC As Long, ByVal nIndex As Long) As Long
Declare Function apiGetActiveWindow Lib "user32" Alias _
      "GetActiveWindow" () As Long
Declare Function apiGetParent Lib "user32" Alias "GetParent" (ByVal _
      hWnd As Long) As Long
Declare Function apiGetClassName Lib "user32" Alias "GetClassNameA" _
      (ByVal hWnd As Long, ByVal lpClassName As String, ByVal _
      nMaxCount As Long) As Long
Global Const TWIPSPERINCH = 1440
Public Sub dimmidovesei(F As Form)
    Dim l As Long
    Dim t As Long
    Dim w As Long
    Dim h As Long
    GetFormDimensions F, l, t, w, h
    MsgBox F.name & vbCrLf & _
        "l: " & l & vbCrLf & _
        "t: " & t & vbCrLf & _
        "w: " & w & vbCrLf & _
        "h: " & h
End Sub
Sub GetFormDimensions(F As Form, FLeft As Long, FTop As Long, _
         FWidth As Long, FHeight As Long)
    '*************************************************************
    ' PURPOSE: Returns the left, top, width, and height
    '          measurements of a form window in tdwips.
    ' ARGUMENTS:
    '    F: The form object whose measurements are to be determined.
    '    FLeft, FTop, FWidth, FHeight: Measurement variables
    '    that will return the dimensions of form F "by reference."
    ' NOTE: The FWidth and FHeight values will be equivalent to
    '    those provided by the form WindowWidth and WindowHeight
    '    properties.
    '*************************************************************
    Dim FormRect As RECT_Type
    Dim MDIClient As RECT_Type
    Dim MDIClientLeft As Long
    Dim MDIClientTop  As Long
    ' Get the screen coordinates and window size of the form.
    ' The screen coordinates are returned in pixels measured
    ' from the upper-left corner of the screen.
    apiGetWindowRect F.hWnd, FormRect
    FLeft = FormRect.left
    FTop = FormRect.top
    FWidth = FormRect.right - FormRect.left
    FHeight = FormRect.bottom - FormRect.top
    ' Convert the measurements from pixels to twips.
    ConvertPIXELSToTWIPS FLeft, FTop
    ConvertPIXELSToTWIPS FWidth, FHeight
    ' If the form is not a pop-up form, adjust the screen
    ' coordinates to measure from the top of the Microsoft
    ' Access MDIClient window. Position 0,0 for a pop-up form
    ' is the upper-left corner of the screen, whereas position
    ' 0,0 for a normal window is the upper-left corner of the
    ' Microsoft Access client window below the menu bar.
    If GetWindowClass(F.hWnd) <> "OFormPopup" Then
        ' Get the screen coordinates and window size of the
        ' MDIClient window.
        apiGetWindowRect apiGetParent(F.hWnd), MDIClient
        MDIClientLeft = MDIClient.left
        MDIClientTop = MDIClient.top
        ConvertPIXELSToTWIPS MDIClientLeft, MDIClientTop
        ' Adjust the form dimensions from the MDIClient
        ' measurements.
        FLeft = FLeft - MDIClientLeft
        FTop = FTop - MDIClientTop
    End If
End Sub
Sub ConvertPIXELSToTWIPS(X As Long, Y As Long)
    '*************************************************************
    ' PURPOSE: Converts the two pixel measurements passed as
    '          arguments to twips.
    ' ARGUMENTS:
    '    X, Y: Measurement variables in pixels. These will be
    '          converted to twips and returned through the same
    '          variables "by reference."
    '*************************************************************
    Dim hDC As Long, hWnd As Long, RetVal As Long
    Dim XPIXELSPERINCH, YPIXELSPERINCH
    Const LOGPIXELSX = 88
    Const LOGPIXELSY = 90
    ' Retrieve the current number of pixels per inch, which is
    ' resolution-dependent.
    hDC = apiGetDC(0)
    XPIXELSPERINCH = apiGetDeviceCaps(hDC, LOGPIXELSX)
    YPIXELSPERINCH = apiGetDeviceCaps(hDC, LOGPIXELSY)
    RetVal = apiReleaseDC(0, hDC)
    ' Compute and return the measurements in twips.
    X = (X / XPIXELSPERINCH) * TWIPSPERINCH
    Y = (Y / YPIXELSPERINCH) * TWIPSPERINCH
End Sub
Function GetWindowClass(hWnd As Long) As String
    '*************************************************************
    ' PURPOSE: Retrieve the class of the passed window handle.
    ' ARGUMENTS:
    '    hWnd: The window handle whose class is to be retrieved.
    ' RETURN:
    '    The window class name.
    '*************************************************************
    Dim Buff As String
    Dim BuffSize As Integer
    Buff = String$(255, " ")
    BuffSize = apiGetClassName(hWnd, Buff, 255)
    GetWindowClass = left$(Buff, BuffSize)
End Function
****************
-- 
Federico
--------------------------------------
Sito Comune di it.comp.appl.access
http://members.xoom.it/it_db_access
mailto:
it_db_...@usa.net
--------------------------------------
Tutte le richieste che mi arrivano
in privato, vengono cestinate.
--------------------------------------
Rimuovi paperino. per e-mail
--------------------------------------

Tratto dall'articolo Q143162 su MSDN
Cosi' ad occhio pero' mi sembra che serva solo per ricavare
le coordinate, e non per impostarle.
Cmq ho risolto con un esempio inviatomi da RoDAgo, che
ringrazio pubblicamente :-)
E' un modulo di classe che offre un'interfaccia molto ben
fatta alle stesse (+ o -) api, tratto dal Sybexone.
Grazie anche a Roberto e Giuseppe.
