Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Resize need / 7 сообщений из 7, страница 1 из 1
15.08.2006, 15:53
    #33919332
farbox
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Resize need
Здравствуйте господа знатоки, не подскажите ли вы мне какие-нибудь компоненты для ресайза проекта VB , я голову поломал пытаясь найти хоть что-то. Прописывать ресайз вручную - не реально - слишком много компонентов на формах.
Если хоть кто нибудь поможет , то я буду безгранично рад!
...
Рейтинг: 0 / 0
15.08.2006, 17:07
    #33919588
Aklin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Resize need
а что надорезайзить?
форму с кнопками и текстовым полем - вручную,
много компонентов, причем их размер именяется в k раз при изменении в k раз формы?
Код: plaintext
1.
2.
3.
4.
For Each Control In Me
With Control
End With
Next
раньше шло.

а так, опЯть же вручную относительно
Me.WindowsState
Me.ScaleWidth
Me.ScaleHeight
...
Рейтинг: 0 / 0
15.08.2006, 17:47
    #33919705
HandKot
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Resize need
Есть такой контрол

APEX Olectra Resizer 2.0.4
поддержка здесь APEX Olectra Resizer
...
Рейтинг: 0 / 0
21.08.2006, 13:35
    #33932186
farbox
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Resize need
а может мне ещё кто нибудь подскажет какие - нибудь методы для автоматического ресайза , неужели в программисты VB прописывают увеличение каждого контрола ?
...
Рейтинг: 0 / 0
21.08.2006, 14:00
    #33932279
Aklin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Resize need
Код: plaintext
1.
2.
3.
For Each Control In Me
With Control
End With
Next
все контролы соиразмерны форме.

А как ты хочешь? чтобы на форме 10 фреймов, 20 кнопой и 30 текстбоксов, и они резайзились согластно тому плану, который ты и придумал?
...
Рейтинг: 0 / 0
22.08.2006, 08:54
    #33933584
hawkV
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Resize need
Может поможет
...
Рейтинг: 0 / 0
25.08.2006, 07:39
    #33941882
djsun
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Resize need
'Когда-то у меня тоже была такая же проблема, и где-то я нашла хороший модуль. 'Попробуй его!
'это в модуле
Public FBold As Boolean

Public Type ctrObj
Name As String
Index As Long
Parrent As String
Top As Long
Left As Long
Height As Long
Width As Long
ScaleHeight As Long
ScaleWidth As Long
End Type
Private FormRecord() As ctrObj
Private ControlRecord() As ctrObj
Private bRunning As Boolean
Private MaxForm As Long
Private MaxControl As Long
Dim Fsize As Double
Private Function ActualPos(plLeft As Long) As Long
If plLeft < 0 Then
ActualPos = plLeft + 75000
Else
ActualPos = plLeft
End If
End Function

Private Function FindForm(pfrmIn As Form) As Long
Dim i As Long

FindForm = -1
If MaxForm > 0 Then
For i = 0 To (MaxForm - 1)
If FormRecord(i).Name = pfrmIn.Name Then
FindForm = i
Exit Function
End If
Next i
End If
End Function


Private Function AddForm(pfrmIn As Form) As Long
Dim FormControl As Control
Dim i As Long
ReDim Preserve FormRecord(MaxForm + 1)

FormRecord(MaxForm).Name = pfrmIn.Name
FormRecord(MaxForm).Top = pfrmIn.Top
FormRecord(MaxForm).Left = pfrmIn.Left
FormRecord(MaxForm).Height = pfrmIn.Height
FormRecord(MaxForm).Width = pfrmIn.Width
FormRecord(MaxForm).ScaleHeight = pfrmIn.ScaleHeight

FormRecord(MaxForm).ScaleWidth = pfrmIn.ScaleWidth
AddForm = MaxForm
MaxForm = MaxForm + 1

For Each FormControl In pfrmIn
i = FindControl(FormControl, pfrmIn.Name)
If i < 0 Then i = AddControl(FormControl, pfrmIn.Name)
Next FormControl
End Function

Private Function FindControl(inControl As Control, inName As String) As Long
Dim i As Long
Dim intRakna As Integer
FindControl = -1
For i = 0 To (MaxControl - 1)
If ControlRecord(i).Parrent = inName Then
If ControlRecord(i).Name = inControl.Name Then
On Error Resume Next

If ControlRecord(i).Index = inControl.Index Then
FindControl = i
Exit Function
End If
On Error GoTo 0

End If
End If
Next i

End Function

Private Function AddControl(inControl As Control, inName As String) As Long
ReDim Preserve ControlRecord(MaxControl + 1)
On Error Resume Next

ControlRecord(MaxControl).Name = inControl.Name
ControlRecord(MaxControl).Index = inControl.Index
ControlRecord(MaxControl).Parrent = inName

If TypeOf inControl Is Line Then
ControlRecord(MaxControl).Top = inControl.Y1
ControlRecord(MaxControl).Left = ActualPos(inControl.X1)
ControlRecord(MaxControl).Height = inControl.Y2
ControlRecord(MaxControl).Width = ActualPos(inControl.X2)
Else
ControlRecord(MaxControl).Top = inControl.Top
ControlRecord(MaxControl).Left = ActualPos(inControl.Left)
ControlRecord(MaxControl).Height = inControl.Height
ControlRecord(MaxControl).Width = inControl.Width
End If

inControl.IntegralHeight = False

On Error GoTo 0
AddControl = MaxControl
MaxControl = MaxControl + 1
End Function

Private Function PerWidth(pfrmIn As Form) As Long
Dim i As Long

i = FindForm(pfrmIn)
If i < 0 Then i = AddForm(pfrmIn)

PerWidth = (pfrmIn.ScaleWidth * 100) \ FormRecord(i).ScaleWidth
End Function

Private Function PerHeight(pfrmIn As Form) As Single
Dim i As Long

i = FindForm(pfrmIn)
If i < 0 Then i = AddForm(pfrmIn)

PerHeight = (pfrmIn.ScaleHeight * 100) \ FormRecord(i).ScaleHeight
End Function

Private Sub ResizeControl(inControl As Control, pfrmIn As Form)
On Error Resume Next
Dim i As Long
Dim widthfactor As Single, heightfactor As Single
Dim minFactor As Single
Dim yRatio, xRatio, lTop, lLeft, lWidth, lHeight As Long
' Dim Fsize As Integer

yRatio = PerHeight(pfrmIn)
xRatio = PerWidth(pfrmIn)
i = FindControl(inControl, pfrmIn.Name)

If inControl.Left < 0 Then
lLeft = CLng(((ControlRecord(i).Left * xRatio) \ 100) - 75000)
Else
lLeft = CLng((ControlRecord(i).Left * xRatio) \ 100)
End If

lTop = CLng((ControlRecord(i).Top * yRatio) \ 100)
lWidth = CLng((ControlRecord(i).Width * xRatio) \ 100)
lHeight = CLng((ControlRecord(i).Height * yRatio) \ 100)
If pfrmIn.Width >= 12450 And pfrmIn.Width < 15360 Then
Fsize = 7
ElseIf pfrmIn.Width < 12450 Then
Fsize = 5
ElseIf pfrmIn.Width >= 15360 Then
Fsize = 8
End If
'Fsize = Round(lHeight / 30, 0)

If TypeOf inControl Is TextBox Or Command Then
inControl.FontSize = Fsize
End If
If TypeOf inControl Is Label Then
' Fsize = Round(lHeight / 20, 0)
inControl.FontSize = Fsize
End If
'If TypeOf inControl Is TextBox Or Label Or Command Then
'If FBold = True Then
' inControl.FontBold = True
' Else
' inControl.FontBold = False
' End If
'End If
If TypeOf inControl Is Line Then
If inControl.X1 < 0 Then
inControl.X1 = CLng(((ControlRecord(i).Left * xRatio) \ 100) - 75000)
Else
inControl.X1 = CLng((ControlRecord(i).Left * xRatio) \ 100)
End If

inControl.Y1 = CLng((ControlRecord(i).Top * yRatio) \ 100)
If inControl.X2 < 0 Then
inControl.X2 = CLng(((ControlRecord(i).Width * xRatio) \ 100) - 75000)
Else
inControl.X2 = CLng((ControlRecord(i).Width * xRatio) \ 100)
End If

inControl.Y2 = CLng((ControlRecord(i).Height * yRatio) \ 100)
Else
inControl.Move lLeft, lTop, lWidth, lHeight
inControl.Move lLeft, lTop, lWidth
inControl.Move lLeft, lTop
End If
End Sub

Public Sub ResizeForm(pfrmIn As Form)
Dim FormControl As Control
Dim isVisible As Boolean
Dim StartX, StartY, MaxX, MaxY As Long
Dim bNew As Boolean

If Not bRunning Then
bRunning = True

If FindForm(pfrmIn) < 0 Then
bNew = True
Else
bNew = False
End If

If pfrmIn.Top < 30000 Then
isVisible = pfrmIn.Visible
On Error Resume Next

If Not pfrmIn.MDIChild Then
On Error GoTo 0
'pfrmIn.Visible = False
Else
If bNew Then
StartY = pfrmIn.Height
StartX = pfrmIn.Width
On Error Resume Next

For Each FormControl In pfrmIn
If FormControl.Left + FormControl.Width + 200 > MaxX Then _
MaxX = FormControl.Left + FormControl.Width + 200
If FormControl.Top + FormControl.Height + 500 > MaxY Then _
MaxY = FormControl.Top + FormControl.Height + 500
If FormControl.X1 + 200 > MaxX Then _
MaxX = FormControl.X1 + 200
If FormControl.Y1 + 500 > MaxY Then _
MaxY = FormControl.Y1 + 500
If FormControl.X2 + 200 > MaxX Then _
MaxX = FormControl.X2 + 200
If FormControl.Y2 + 500 > MaxY Then _
MaxY = FormControl.Y2 + 500
Next FormControl
On Error GoTo 0

pfrmIn.Height = MaxY
pfrmIn.Width = MaxX
End If
On Error GoTo 0

End If

For Each FormControl In pfrmIn
ResizeControl FormControl, pfrmIn
Next FormControl
On Error Resume Next

If Not pfrmIn.MDIChild Then
On Error GoTo 0
pfrmIn.Visible = isVisible
Else
If bNew Then
pfrmIn.Height = StartY
pfrmIn.Width = StartX

For Each FormControl In pfrmIn
ResizeControl FormControl, pfrmIn
Next FormControl
End If
End If
On Error GoTo 0

End If
bRunning = False
End If
End Sub

Public Sub SaveFormPosition(pfrmIn As Form)
Dim i As Long

If MaxForm > 0 Then
For i = 0 To (MaxForm - 1)
If FormRecord(i).Name = pfrmIn.Name Then
FormRecord(i).Top = pfrmIn.Top
FormRecord(i).Left = pfrmIn.Left
FormRecord(i).Height = pfrmIn.Height
FormRecord(i).Width = pfrmIn.Width
Exit Sub
End If
Next i
AddForm (pfrmIn)
End If
End Sub

Public Sub RestoreFormPosition(pfrmIn As Form)
Dim i As Long

If MaxForm > 0 Then
For i = 0 To (MaxForm - 1)
If FormRecord(i).Name = pfrmIn.Name Then
If FormRecord(i).Top < 0 Then
pfrmIn.WindowState = 2
ElseIf FormRecord(i).Top < 30000 Then
pfrmIn.WindowState = 0
pfrmIn.Move FormRecord(i).Left, FormRecord(i).Top, FormRecord(i).Width, FormRecord(i).Height
Else
pfrmIn.WindowState = 1
End If
Exit Sub
End If
Next i
End If
End Sub

'вызываешь в форме

Private Sub Form_Resize()
On Error Resume Next
ResizeForm Me

End Sub

'Удачи! ;)
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Resize need / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]