0

グリッドタイプの配置を実現するために、いくつかのフレームを結合しようとしています。

ここに画像の説明を入力してください

左側では、フレームラインにギャップがあります。この線を下のフレームに結合するにはどうすればよいですか?

4

2 に答える 2

1

元の投稿への私のコメントで述べたように、「前に持ってくる」と「後ろに送る」を慎重に選択することでこれを解決できます....フレームにキャプションを付けたい場合は機能しません

コードでは、zorderを使用して同じことを行うことができます:

' 1 form with :
'    1 frame : name=Frame1    index=0
Option Explicit

Private Sub Form_Load()
  Dim intIndex As Integer
  Frame1(0).Caption = ""
  For intIndex = 1 To 8
    Load Frame1(intIndex)
    Frame1(intIndex).Visible = True
  Next intIndex
End Sub

Private Sub Form_Resize()
'  PlaceNormal
'  PlaceOverlap 0
  PlaceOverlap 1
End Sub

Private Sub PlaceNormal()
  Dim intRow As Integer, intCol As Integer
  Dim sngWidth As Single, sngHeight As Single
  sngWidth = ScaleWidth / 3
  sngHeight = ScaleHeight / 3
  For intRow = 0 To 2
    For intCol = 0 To 2
      Frame1(intRow * 3 + intCol).Move intCol * sngWidth, intRow * sngHeight, sngWidth, sngHeight
    Next intCol
  Next intRow
End Sub

Private Sub PlaceOverlap(intOrder As Integer)
  Dim intRow As Integer, intCol As Integer
  Dim sngWidth As Single, sngHeight As Single
  sngWidth = ScaleWidth / 3
  sngHeight = ScaleHeight / 3 + 120
  For intRow = 0 To 2
    For intCol = 0 To 2
      Frame1(intRow * 3 + intCol).Move intCol * sngWidth, intRow * (sngHeight - 120), sngWidth, sngHeight
      Frame1(intRow * 3 + intCol).ZOrder intOrder
    Next intCol
  Next intRow
End Sub

しかし、繰り返しますが、フレームにキャプションが必要な場合、これは機能しません

于 2012-11-21T09:49:37.933 に答える
1

フレームキャプションの代わりにラベルを使用した大まかな例

' 1 form with :
'    1 frame : name=Frame1    index=0
'    1 label in Frame1 : name=Label1    index=0
Option Explicit

Private Sub Form_Load()
  Dim intIndex As Integer
  Frame1(0).Caption = ""
  Label1(0).Caption = "0"
  Label1(0).Alignment = vbCenter
  For intIndex = 1 To 8
    Load Frame1(intIndex)
    Frame1(intIndex).Visible = True
    Load Label1(intIndex)
    Label1(intIndex).Visible = True
    Label1(intIndex).Caption = CStr(intIndex)
    Set Label1(intIndex).Container = Frame1(intIndex)
  Next intIndex
End Sub

Private Sub Form_Resize()
  PlaceOverlap 1
End Sub

Private Sub PlaceOverlap(intOrder As Integer)
  Dim intIndex As Integer
  Dim intRow As Integer, intCol As Integer
  Dim sngWidth As Single, sngHeight As Single
  sngWidth = ScaleWidth / 3
  sngHeight = ScaleHeight / 3 + 120
  For intRow = 0 To 2
    For intCol = 0 To 2
      intIndex = intRow * 3 + intCol
      With Frame1(intIndex)
        .Move intCol * sngWidth, intRow * (sngHeight - 120) - 120, sngWidth, sngHeight
        Label1(intIndex).Move 120, 120, .Width - 240, 195
        .ZOrder intOrder
      End With 'Frame1(intIndex)
    Next intCol
  Next intRow
End Sub
于 2012-11-21T12:33:17.403 に答える