グリッドタイプの配置を実現するために、いくつかのフレームを結合しようとしています。
左側では、フレームラインにギャップがあります。この線を下のフレームに結合するにはどうすればよいですか?
元の投稿への私のコメントで述べたように、「前に持ってくる」と「後ろに送る」を慎重に選択することでこれを解決できます....フレームにキャプションを付けたい場合は機能しません
コードでは、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
しかし、繰り返しますが、フレームにキャプションが必要な場合、これは機能しません
フレームキャプションの代わりにラベルを使用した大まかな例
' 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