Как нарисовать блок-схему в vba
Формулировка задачи:
Как нарисовать несколько квадратов с соединительными линиями в vba?
т.е. квадрат от него линия, еще один квадрат, далее еще линия и так 4 раза
Решение задачи: «Как нарисовать блок-схему в vba»
textual
Листинг программы
Option Explicit
Private Type POINTAPI
x As Double
Y As Double
End Type
Private Declare Function GetDC Lib "user32" (ByVal hWnd As Long) As Long
Private Declare Function MoveToEx Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal Y As Long, lpPoint As POINTAPI) As Long
Private Declare Function LineTo Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal Y As Long) As Long
Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Dim Coord As New Collection
Dim n_kv
Const maxPoint = 4
Private Sub UserForm_Click()
Dim hds, hWnd
Dim pt As POINTAPI, nx, ny, kx, ky, i
nx = Split("50,150,50,50,250,350,250,250,50,150,50,50,250,350,250,250,150,300,250,100", ",") 'массив координат x
ny = Split("50,50,90,50,50,50,90,50,190,190,230,190,190,190,230,190,70,90,210,90", ",") 'массив координат
kx = Split("150,150,150,50,350,350,350,250,150,150,150,50,350,350,350,250,250,300,150,100", ",") 'массив координат
ky = Split("50,90,90,90,50,90,90,90,190,230,230,230,190,230,230,230,70,190,210,190", ",") 'массив координат
hWnd = FindWindow("thunderDFrame", Draw.Caption)
hds = GetDC(hWnd)
For i = 0 To UBound(nx)
MoveToEx hds, nx(i), ny(i), pt
LineTo hds, kx(i), ky(i)
Next i
End Sub
Private Sub UserForm_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Me.Hide
Draw.Show
End Sub