How to resize side by side controls in MS ACCESS 2007

☆樱花仙子☆ 提交于 2019-12-13 05:38:01

问题


I have a form in which there are various fields, for ex. Two textboxes are side by side. These 2 textbox have anchor property left,top and other right,top.

Now when I resize the form the controls are aligned to left and the other textbox to right. But when as screen is maximized it leaves a blank space in between these two textboxes.

So then I made the anchor property of both textbox to both,both the controls overlapped.

PS: working on MS ACCESS 2007. anchoring property above is Horizontal, Vertical

EDIT : In Normal window

_______________________Min Max Close_

| First_Name TEXTBOX Last_Name TEXTBOX |

|_______________________________|

When Maximized to whole screen it gives me

_____________________________________Min Max Close_

| First_Name TEXTBOX ............................. Last_Name TEXTBOX |

|______________________________________________|

And I need this way as below

_____________________________________Min Max Close_

| F i r s t_N a m e T E X T B O X ........ L a s t_N a m e T E X T B O X |

|______________________________________________|

I am trying to explain by doing all this as I am not allowed to upload a image, Sorry for that....


回答1:


Paste the following code into your form, change the field names, and see what happens. The two fields will 'grow' as you increase the form width, yet maintain their Anchor. Note: I updated on 3/3 to handle the field labels.

Option Compare Database
Option Explicit

Dim fviInsideWidth  As Integer
Dim fviSaveInsideWidth  As Integer
Dim fviFormWidth    As Integer
Dim fviFldWidth     As Integer
Dim fviFieldGap     As Integer
Dim fviRemainder    As Integer
Dim fviLblWidth     As Integer
Dim fviRLblToTxt    As Integer
Dim fvstrLLabel     As String
Dim fvstrRLabel     As String

Private Sub Form_Open(Cancel As Integer)
    fviSaveInsideWidth = Me.InsideWidth
    fviInsideWidth = Me.InsideWidth
    fviFormWidth = Me.Width
    fviFldWidth = Me.fldLeft.Width + Me.fldRight.Width
    fviRemainder = fviInsideWidth - fviFldWidth
    fviFieldGap = Me.fldRight.Left - (Me.fldLeft.Left + Me.fldLeft.Width)
    fvstrLLabel = Me.fldLeft.Controls.Item(0).Name
    fvstrRLabel = Me.fldRight.Controls.Item(0).Name
    fviLblWidth = Me.Controls(fvstrRLabel).Width
    fviRLblToTxt = Me.fldRight.Left - Me.Controls(fvstrRLabel).Left
    'Debug.Print "Open - InsideWidth = " & fviInsideWidth & "  Fields: " & fviFldWidth & "  Remainder: " & fviRemainder
    'Debug.Print "Open - Form Width  = " & Me.Width & vbTab & "Diff = " & fviInsideWidth - fviFormWidth
End Sub

Private Sub Form_Close()
    Me.fldLeft.Width = fviFldWidth
    Me.fldRight.Width = fviFldWidth
    Me.InsideWidth = fviSaveInsideWidth
End Sub


Private Sub Form_Resize()
    Dim ifldWidth   As Integer
    Dim ifrmWidth   As Integer
    fviInsideWidth = Me.InsideWidth
    ifrmWidth = fviInsideWidth - 1110
    Me.Width = ifrmWidth
    ifldWidth = Int((fviInsideWidth - fviRemainder) / 2)
    Me.fldLeft.Width = ifldWidth
    Me.fldRight.Left = Me.fldLeft.Left + Me.fldLeft.Width + fviFieldGap
    Me.Controls(fvstrRLabel).Left = Me.fldRight.Left - fviRLblToTxt
    Me.fldRight.Width = ifldWidth
    'Debug.Print "Resize - InsideWidth = " & fviInsideWidth & vbTab & "Form Width = " & Me.Width & " Flds: " & ifldWidth & " Right=" & Me.fldLeft.Left + Me.fldLeft.Width + fviFieldGap
    'Debug.Print "Resize Form: " & Me.Width & " Flds: " & ifldWidth
    Me.Repaint
End Sub


来源:https://stackoverflow.com/questions/22077559/how-to-resize-side-by-side-controls-in-ms-access-2007

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!