Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Плещёв ИП 2010-04-04 doc.doc
Скачиваний:
108
Добавлен:
13.05.2015
Размер:
5.96 Mб
Скачать

11.3. Изменение размеров объектов

Составим универсальную процедуру ChangeSize, которая исполь­зует­ся для изменения размеров объектов. Разместим ее в модуле (п. 7.1). Зацепив объект в фокусе за его край или угол мышкой, можно изменить его размеры при выполнении приложения.

Текст процедуры ChangeSize

Public Sub ChangeSize(Source As Control, Button As Integer, _

Shift As Integer, X As Single, Y As Single)

‘Source- имя изменяемого объекта. Остальные параметры аналогичны ‘одноимен­ным параметрам процедуры обработки событияMouseDown.

Static TypeChange As String ‘тип изменения размера объекта Source

If Screen.ActiveControl.Name<>Source.Name Then Exit Sub ‘нет фокуса

IfButton= 0Then‘мышка не нажата

TypeChange= ““ ‘очистка переменной

Screen.ActiveForm.MousePointer= 0 ‘указатель мышки в виде стрелочки

If Y + 15 = (Source.Top) And _

(Source.Left <= X + 15) And (X <= Source.Left + Source.Width) Then _

TypeChange= “Вверх“ ‘изменение размера вверх

If X = (Source.Left + Source.Width) And _

(Source.Top <= Y + 15) And (Y <= Source.Top + Source.Height) Then _

TypeChange=TypeChange+ “Вправо“ ‘изменение размера вправо

If Y = (Source.Top + Source.Height) And _

(Source.Left <= X + 15) And (X <= Source.Left + Source.Width) Then _

TypeChange=TypeChange+ “Вниз“ ‘изменение размера вниз

If X + 15 = Source.Left And _

(Source.Top <= Y + 15) And (Y <= Source.Top + Source.Height) Then _

TypeChange=TypeChange+ “Влево“ ‘изменение размера влево

If TypeChange = “Вниз“ Or TypeChange = “Вверх“ Then

Screen.ActiveForm.MousePointer = 7 ‘указатель мышки в виде ↕

ElseIf TypeChange = “Влево“ Or TypeChange = “Вправо“ Then

Screen.ActiveForm.MousePointer = 9 ‘указатель мышки в виде ↔

ElseIf TypeChange = “ВверхВлево“ Or TypeChange = “ВправоВниз“ Then

Screen.ActiveForm.MousePointer = 8 ‘указатель мышки в виде \

ElseIf TypeChange = “ВверхВправо“ Or TypeChange = “ВнизВлево“ Then

Screen.ActiveForm.MousePointer = 6 ‘указатель мышки в виде /

End If

End If

If Button = 1 And InStr(TypeChange, “Вверх“) And Source.Height + _

Source.Top - Y > 0 Then

Source.Height=Source.Height+Source.Top-Y:Source.Top=Y ‘новые размеры

End If

If Button = 1 And InStr(TypeChange, “Вправо“) And X - Source.Left > 0 Then

Source.Width = X - Source.Left ‘новая ширина объекта

End If

If Button = 1 And InStr(TypeChange, “Вниз“) And Y - Source.Top > 0 Then

Source.Height = Y - Source.Top ‘новая высота объекта

End If

If Button = 1 And InStr(TypeChange, “Влево“) And Source.Width + _

Source.Left - X Then

Source.Width=Source.Width+Source.Left-X: Source.Left=X ‘новые размеры

End If

End Sub

Эта процедура вызывается из процедуры обработки событияMouseMoveдля формы. В процедурах обработки событийMouseMoveдля изменяемых объектов следует указать команду:

Screen.ActiveForm.MousePointer=0 ‘указателя мышки в виде стрелочки

Примерприменения процедурыChangeSize.

Private Sub Form_MouseMove(Button As Integer, Shift As Integer, _

XAsSingle,YAsSingle) ‘процедура обработки перемещения мышки

Module1.ChangeSize Picture1,Button,Shift,X,Y ‘изменение объекта Picture1

Module1.ChangeSize Text1, Button, Shift, X, Y ‘изменение объекта Text1

End Sub

Private Sub Picture1_MouseMove(Button As Integer, Shift As Integer, _

X As Single, Y As Single)

Screen.ActiveForm.MousePointer=0 ‘указателя мышки в виде стрелочки

End Sub

Private Sub Text1_MouseMove(Button As Integer, Shift As Integer, _

X As Single, Y As Single)

Screen.ActiveForm.MousePointer=0 ‘указателя мышки в виде стрелочки

End Sub