Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«ΠžΡ„ΠΈΡΠ½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅Β». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 16

Автор Π˜Ρ€ΠΈΠ½Π° Π€Ρ€ΠΈΠ·Π΅Π½

BooleanVar = ΠΎΠ±ΡŠΠ΅ΠΊΡ‚. GetFormat(format)

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Π°Ρ BooleanVar ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ True, Ссли Π΄Π°Π½Π½Ρ‹Π΅ с ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΌ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠΌ входят Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚. ΠžΠ±ΡŠΠ΅ΠΊΡ‚ DataObject ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ±ΠΌΠ΅Π½ΠΈΠ²Π°Ρ‚ΡŒΡΡ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ с Π±ΡƒΡ„Π΅Ρ€ΠΎΠΌ ΠΎΠ±ΠΌΠ΅Π½Π° посрСдством ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² GetFromClipboard ΠΈ PutInClipboard. ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€

String = ΠΎΠ±ΡŠΠ΅ΠΊΡ‚. GetFromClipboard()

ΠΏΠΎΠΌΠ΅Ρ‰Π°Π΅Ρ‚ содСрТимоС Π±ΡƒΡ„Π΅Ρ€Π° ΠΎΠ±ΠΌΠ΅Π½Π° Π² DataObject, Π° Π²Ρ‹Π·ΠΎΠ²

ΠΎΠ±ΡŠΠ΅ΠΊΡ‚. PutInClipboard

пСрСносит Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· DataObject, ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠ΅ тСкстовый Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ 1, Π² Π±ΡƒΡ„Π΅Ρ€ ΠΎΠ±ΠΌΠ΅Π½Π°.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 28. Π€ΠΎΡ€ΠΌΠ° содСрТит Π΄Π²Π° тСкстовых поля, Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΈΠ· Π½ΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎ отобраТаСтся тСкст, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° dataobject Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ пСрСнСсти (ΠΏΠ΅Ρ€Π΅ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ) Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠ΅ тСкстовоС ΠΏΠΎΠ»Π΅. Π”Π°Π½Π½ΠΎΠ΅ дСйствиС происходит послС наТатия Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ Β«ΠšΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΒ», ΠΏΡ€ΠΈΡ‡Π΅ΠΌ всС ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠΌΡ‹Π΅ дСйствия ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‚ΡΡ Π² ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ ΠΌΠ΅Ρ‚ΠΊΠ΅ Π½Π° Ρ„ΠΎΡ€ΠΌΠ΅ (рис. 58).


Рис. 58. Π€ΠΎΡ€ΠΌΠ° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° 28 Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ конструктора ΠΈ Π² Ρ€Π°Π±ΠΎΡ‡Π΅ΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅


ВСхнология выполнСния

1. ΠΠΊΡ‚ΠΈΠ²ΠΈΠ·ΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Word ΠΈ сохранитС Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚.

2. ΠŸΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ Π² Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ VBA ΠΈ создайтС Ρ„ΠΎΡ€ΠΌΡƒ (рис. 58).

3. ΠŸΡ€ΠΎΠΏΠΈΡˆΠΈΡ‚Π΅ ΠΏΡ€ΠΈ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΎΠΊΠ½Π° Π² ΠΏΠΎΠ»Π΅ TextBox1 Ρ‚Π΅ΠΊΡΡ‚ΠΎΠ²ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΈ ΠΏΡ€ΠΎΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠΉΡ‚Π΅ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅:

Public NewData As DataObject

Public NumClick As Integer

Private Sub UserForm_Initialize()

Set NewData = New DataObject 'инициализация ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°

NumClick = 0

'число Ρ‰Π΅Π»Ρ‡ΠΊΠΎΠ²

TextBox1.Text = "ΠŸΡ€ΠΈΠΌΠ΅Ρ€ пСрСноса Π΄Π°Π½Π½Ρ‹Ρ… с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ

DataObjectΒ»

End Sub

4. ΠŸΡ€ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Ρ‰Π΅Π»Ρ‡ΠΊΠ°Ρ… ΠΏΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠ΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΡ€ΠΎΠΈΡΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ дСйствия, описанныС Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅:

Private Sub CommandButton1_Click()

Select Case NumClick

Case 0

NewData.SetText TextBox1.Text

Label1.Caption = «Из ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ поля Π² DataObjectΒ»

Case 1

NewData.PutInClipboard

Label1.Caption = «Из DataObject Π² Π±ΡƒΡ„Π΅Ρ€ ΠΎΠ±ΠΌΠ΅Π½Π°Β»

Case 2

TextBox2.Paste

Label1.Caption = «Из Π±ΡƒΡ„Π΅Ρ€Π° ΠΎΠ±ΠΌΠ΅Π½Π° Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠ΅ ΠΏΠΎΠ»Π΅Β»

End Select

NumClick = NumClick + 1

If NumClick = 3 Then NumClick = 0

End Sub

5. ΠžΡ‚ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ΠΈ запуститС Ρ„ΠΎΡ€ΠΌΡƒ Π½Π° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅. ΠŸΠ΅Ρ€Π΅Π½ΠΎΡ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ поля Π² Π΄Ρ€ΡƒΠ³ΠΎΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΈΡ‚ΡŒ ΠΈ Ρ‡Π΅Ρ€Π΅Π· Π±ΡƒΡ„Π΅Ρ€ ΠΎΠ±ΠΌΠ΅Π½Π°, минуя DataObject. Для копирования Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· поля Π²Π²ΠΎΠ΄Π° Π² Π±ΡƒΡ„Π΅Ρ€ ΠΎΠ±ΠΌΠ΅Π½Π° ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π‘ΠΎΡ€Ρƒ.

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². РСализация Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ DragAndDrop

Для копирования Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΠ· поля Π²Π²ΠΎΠ΄Π° Π² Π±ΡƒΡ„Π΅Ρ€ ΠΎΠ±ΠΌΠ΅Π½Π° ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π‘ΠΎΡ€Ρƒ. Однако ΠΏΡ€ΠΈ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ интСрфСйса Π² Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²Ρ‹Ρ… Ρ„ΠΎΡ€ΠΌΠ°Ρ… ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Ρ‚Π΅Ρ…Π½ΠΈΠΊΠΎΠΉ DragAndDrop (ΠŸΠ΅Ρ€Π΅ΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ ΠΈ ΠžΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ). НСкоторый ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ захватываСтся ΠΌΡ‹ΡˆΡŒΡŽ, пСрСтаскиваСтся ΠΊ Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ Ρ†Π΅Π»Π΅Π²ΠΎΠΌΡƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ ΠΈ отпускаСтся, измСняя ΠΏΡ€ΠΈ этом свойства Ρ†Π΅Π»Π΅Π²ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°. Π’ΠΈΠΏΠΈΡ‡Π½Ρ‹ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ являСтся Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅Ρ‚Π°ΡΠΊΠΈΠ²Π°Ρ‚ΡŒ элСмСнт ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ списка Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ. Π”Ρ€ΡƒΠ³ΠΎΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ – пСрСтаскиваниС писСм ΠΈ опусканиС ΠΈΡ… Π² ΠΏΠΎΡ‡Ρ‚ΠΎΠ²Ρ‹ΠΉ ящик. Π’Π°ΠΆΠ½Ρ‹ΠΌ элСмСнтом этой Ρ‚Π΅Ρ…Π½ΠΈΠΊΠΈ являСтся ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ внСшнСго Π²ΠΈΠ΄Π° курсора. Π—Π°Ρ…Π²Π°Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° происходит ΠΏΡ€ΠΈ ΠΏΠΎΠ΄Π²Π΅Π΄Π΅Π½ΠΈΠΈ курсора ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ Π»Π΅Π²ΠΎΠΉ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΌΡ‹ΡˆΠΈ. Π’ этот ΠΌΠΎΠΌΠ΅Π½Ρ‚ курсор мСняСт внСшнюю Ρ„ΠΎΡ€ΠΌΡƒ. Когда происходит ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ ΠΌΡ‹ΡˆΠΈ, Ρ‚ΠΎ Π² Ρ‚Π΅Ρ… областях, Π³Π΄Π΅ располоТСн Ρ†Π΅Π»Π΅Π²ΠΎΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, курсор снова мСняСт Ρ„ΠΎΡ€ΠΌΡƒ, показывая, Ρ‡Ρ‚ΠΎ Ρ†Π΅Π»ΡŒ достигнута. Если Π² этот ΠΌΠΎΠΌΠ΅Π½Ρ‚ ΠΎΡ‚ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ Π»Π΅Π²ΡƒΡŽ ΠΊΠ½ΠΎΠΏΠΊΡƒ ΠΌΡ‹ΡˆΠΈ, Ρ‚ΠΎ опСрация пСрСмСщСния заканчиваСтся ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ. Если ΠΎΡ‚ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΊΠ½ΠΎΠΏΠΊΡƒ ΠΌΡ‹ΡˆΠΈ Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… областях, Ρ‚ΠΎ это ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ Π½Π΅ΡƒΠ΄Π°Ρ‡Π΅. ΠžΠ±ΡŠΠ΅ΠΊΡ‚ DataObject ΠΈ Π΅Π³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄ StartDrag ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ‡Π°ΡΡ‚ΡŒΡŽ этой Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 29. Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒ, ΠΈΠΌΠ΅ΡŽΡ‰ΡƒΡŽ Π΄Π²Π° элСмСнта управлСния: список ΠΈ тСкстовоС ΠΏΠΎΠ»Π΅. ΠŸΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΌΡ‹ΡˆΠΈ ΠΈΠ· списка ΠΏΠ΅Ρ€Π΅Ρ‚Π°ΡΠΊΠΈΠ²Π°ΡŽΡ‚ Π² тСкстовоС ΠΏΠΎΠ»Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΉ элСмСнт, Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ Π² спискС (рис. 59, 60, 61).

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎ Π·Π°ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ элСмСнты списка, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ содСрТит наимСнования мСсяцСв Π³ΠΎΠ΄Π°. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΡŽ DragAndDrop ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° DataObject, позволяСт ΠΏΠ΅Ρ€Π΅Ρ‚Π°Ρ‰ΠΈΡ‚ΡŒ Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹ΠΉ элСмСнт ΠΈΠ· списка Π² тСкстовоС ΠΏΠΎΠ»Π΅ Π²Ρ‹Π±ΠΎΡ€Π° (рис. 60). ΠŸΡ€ΠΈ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΌ дСйствии, Ρ‚. Π΅. пСрСтаскивании Π½Π΅ Π² тСкстовоС ΠΏΠΎΠ»Π΅, происходит Π²Ρ‹Π·ΠΎΠ² ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π°ΡŽΡ‰Π΅Π³ΠΎ сообщСния (рис. 61).


Рис. 59. Π€ΠΎΡ€ΠΌΠ° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° 29 Π² Ρ€Π΅ΠΆΠΈΠΌΠ΅ конструктора


Рис. 60. Π€ΠΎΡ€ΠΌΠ° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° 29 Π² Ρ€Π°Π±ΠΎΡ‡Π΅ΠΌ Ρ€Π΅ΠΆΠΈΠΌΠ΅


Рис. 61. Окно прСдупрСТдСния ΠΎ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π½ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ


Когда ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π·Π°Ρ…Π²Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹ΠΉ ΠΈΠΌ элСмСнт списка, Ρ‚ΠΎ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ событиС. Π’ нашСм ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ это событиС MouseMove, ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄ StartDrag ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° DataObject, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ…Ρ€Π°Π½ΠΈΡ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ пСрСтаскиваСмого элСмСнта. Бинтаксис ΠΌΠ΅Ρ‚ΠΎΠ΄Π°:

Function StartDrag([Effect As fmDropEffect]) As

fmDropEffect

Π­Ρ‚Π° функция ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ вызываСтся Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π΅ присваивания Π²ΠΈΠ΄Π°:

ResultEffect=ΠΎΠ±ΡŠΠ΅ΠΊΡ‚. StartDrag([effect as fmDropEffect])

ΠΠ΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Effect ΠΈ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°Ρ‚ ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»Π΅Π½ΠΈΡŽ fmDropEffect. ΠšΠΎΠ½ΡΡ‚Π°Π½Ρ‚Ρ‹, входящиС Π² это пСрСчислСниС, ΠΈΠΌΠ΅ΡŽΡ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ значСния:

β€’ fmDropEffectNone = 0 – Π½Π΅ ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ Π½Π΅ ΠΏΠ΅Ρ€Π΅Π΄Π²ΠΈΠ³Π°Ρ‚ΡŒ ΠΎΠΏΡƒΡ‰Π΅Π½Π½Ρ‹ΠΉ исходный элСмСнт Π½Π° мСсто назначСния;

β€’ fmDropEffectCopy =1 – ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΡƒΡ‰Π΅Π½Π½Ρ‹ΠΉ исходный элСмСнт Π½Π° мСсто назначСния;

β€’ fmDropEffectMove = 2 – ΠΏΠ΅Ρ€Π΅Π΄Π²ΠΈΠ½ΡƒΡ‚ΡŒ ΠΎΠΏΡƒΡ‰Π΅Π½Π½Ρ‹ΠΉ исходный элСмСнт Π½Π° мСсто назначСния;

β€’ fmDropEffectCopyOrMove = 3 – ΡΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π²ΠΈΠ½ΡƒΡ‚ΡŒ ΠΎΠΏΡƒΡ‰Π΅Π½Π½Ρ‹ΠΉ исходный элСмСнт Π½Π° мСсто назначСния.

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Effect Π·Π°Π΄Π°Π΅Ρ‚ Ρ†Π΅Π»ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΈ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ 1 (fmDropEffectCopy). ΠžΠ±Ρ‹Ρ‡Π½ΠΎ ΠΎΠ½ опускаСтся, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π·Π°Π΄Π°Π΅Ρ‚ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π²Π΅Ρ€ΠΎΡΡ‚Π½ΡƒΡŽ Ρ†Π΅Π»ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ. Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ StartDrag, опрСдСляСт Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ выполнСния ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ. Π•Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для Π°Π½Π°Π»ΠΈΠ·Π° Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΆΠ΅ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΎ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ пСрСтаскивания Π½Π° самом Π΄Π΅Π»Π΅. ΠœΠ΅ΠΆΠ΄Ρƒ запуском ΠΌΠ΅Ρ‚ΠΎΠ΄Π° StartDrag Π² ΠΏΡ€Π°Π²ΠΎΠΉ части ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° присваивания ΠΈ присваиваниСм Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° Π»Π΅Π²ΠΎΠΉ части ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ResultEffect Π² процСссС пСрСмСщСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° происходит ΠΌΠ½ΠΎΠ³ΠΎ событий. Π Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ этих событий, ΠΈ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ закончился этот процСсс.

ВСхнология выполнСния

1. ΠΠΊΡ‚ΠΈΠ²ΠΈΠ·ΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Word ΠΈ сохранитС Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚.

2. ΠŸΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ Π² Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ VBA ΠΈ создайтС Ρ„ΠΎΡ€ΠΌΡƒ (рис. 59).

3. Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ события Initialize для Π΄ΠΈΠ°Π»ΠΎΠ³ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π°, ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‰Π΅Π³ΠΎ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ состояния:

Private Sub UserForm_Initialize()

With Me.ListBox1

AddItem Β«ΡΠ½Π²Π°Ρ€ΡŒΒ»

AddItem Β«Ρ„Π΅Π²Ρ€Π°Π»ΡŒΒ»

AddItem Β«ΠΌΠ°Ρ€Ρ‚Β»

AddItem Β«Π°ΠΏΡ€Π΅Π»ΡŒΒ»

AddItem Β«ΠΌΠ°ΠΉΒ»

AddItem «июнь»

AddItem «июль»

AddItem «август»

AddItem Β«ΡΠ΅Π½Ρ‚ΡΠ±Ρ€ΡŒΒ»

AddItem Β«ΠΎΠΊΡ‚ΡΠ±Ρ€ΡŒΒ»

AddItem Β«Π½ΠΎΡΠ±Ρ€ΡŒΒ»

AddItem Β«Π΄Π΅ΠΊΠ°Π±Ρ€ΡŒΒ»

End With

End Sub

4. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ инициализируСтся список Β«ΠœΠ΅ΡΡΡ† Π³ΠΎΠ΄Π°Β», ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠΉ имя ListBox1. Π“ΠΎΡ‚ΠΎΠ²ΡΡΡŒ ΠΏΠ΅Ρ€Π΅Ρ‚Π°Ρ‰ΠΈΡ‚ΡŒ этот элСмСнт Π² Π΄Ρ€ΡƒΠ³ΠΎΠ΅ мСсто, ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π²Ρ‹Π±ΠΈΡ€Π°Π΅Ρ‚ элСмСнт этого списка. Π—Π°Ρ‚Π΅ΠΌ ΠΎΠ½ Π½Π°ΠΆΠΈΠΌΠ°Π΅Ρ‚ Π»Π΅Π²ΡƒΡŽ ΠΊΠ»Π°Π²ΠΈΡˆΡƒ ΠΌΡ‹ΡˆΠΈ, ΠΈ Ρƒ списка Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ событиС MouseMove, ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ². ΠŸΡ€ΠΈΠ²Π΅Π΄Π΅ΠΌ тСкст этого ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°:

Private Sub ListBox1_MouseMove(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)

Dim MyDataObject As DataObject

Dim Msg As String

Msg = Β«Π’ΠΈΠ΄ΠΈΠΌΠΎ, Π’Ρ‹ ΡƒΡ€ΠΎΠ½ΠΈΠ»ΠΈ мСсяц ΠΏΡ€ΠΈ пСрСтаскивании. ΠŸΠΎΠ²Ρ‚ΠΎΡ€ΠΈΡ‚Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ!Β»

If Button = 1 Then

Debug.Print Β«MouseMoveΒ»

Set MyDataObject = New DataObject

Dim Effect As Integer

MyDataObject.SetText ListBox1.Value

Effect = MyDataObject.StartDrag(fmDropEffectCopy)

If Effect = 0 Then MsgBox (Msg)

Debug.Print "Effect = ", Effect

End If

End Sub

5. ΠžΡ‚ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠΉΡ‚Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ΠΈ запуститС Ρ„ΠΎΡ€ΠΌΡƒ Π½Π° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅.

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ элСмСнты управлСния

Π’ VBA, ΠΊΡ€ΠΎΠΌΠ΅ пСрСчислСнных стандартных элСмСнтов управлСния, имССтся ряд Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ…. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ элСмСнты управлСния ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ, ΠΎΠ±Π»Π°Π΄Π°ΡŽΡ‰ΠΈΠΌΠΈ ΠΊΠ°ΠΊ ΠΎΠ±Ρ‰ΠΈΠΌΠΈ для всСх элСмСнтов управлСния свойствами ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ, Ρ‚Π°ΠΊ ΠΈ присущими Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠΌ свойствами ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ. Для добавлСния Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… элСмСнтов управлСния Π½Π° панСль элСмСнтов Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ:

1) Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ БСрвис + Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ элСмСнты (Tools + Additional Controls);

2) Π² появившСмся Π½Π° экранС ΠΎΠΊΠ½Π΅ Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ элСмСнты (Additional Controls) (рис. 62) Π² спискС ДоступныС элСмСнты (Available Controls) ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Ρ„Π»Π°ΠΆΠΎΠΊ Π½Π°ΠΏΡ€ΠΎΡ‚ΠΈΠ² добавляСмого элСмСнта;

3) Π½Π°ΠΆΠ°Ρ‚ΡŒ ΠΊΠ½ΠΎΠΏΠΊΡƒ ОК.

Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ Π½Π΅Π½ΡƒΠΆΠ½ΠΎΠ³ΠΎ элСмСнта управлСния ΠΈΠ· ΠΏΠ°Π½Π΅Π»ΠΈ элСмСнтов происходит Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ добавлСнию, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ„Π»Π°ΠΆΠΎΠΊ ΡΠ½ΠΈΠΌΠ°ΡŽΡ‚.



Рис. 62. Окно добавлСния Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… элСмСнтов


Π‘Ρ€Π΅Π΄ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… элСмСнтов управлСния ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΌ являСтся элСмСнт управлСния Calendar (ΠΊΠ°Π»Π΅Π½Π΄Π°Ρ€ΡŒ) (рис. 63). Π­Ρ‚ΠΎΡ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ прСдставляСт срСдство для ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ ΡƒΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ интСрфСйса ΠΏΠΎ Π²Π²ΠΎΠ΄Ρƒ Π΄Π°Ρ‚. Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ управлСния конструируСтся Π² Ρ„ΠΎΡ€ΠΌΠ΅ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠšΠ°Π»Π΅Π½Π΄Π°Ρ€ΡŒ (Calendar).



Рис. 63. Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ управлСния calendar, располоТСнный Π½Π° Ρ„ΠΎΡ€ΠΌΠ΅


ΠŸΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΠΈΠΌ основныС свойства элСмСнта управлСния Calendar (Ρ‚Π°Π±Π». 14).


Π’Π°Π±Π»ΠΈΡ†Π° 14

Бвойства Calendar

ΠŸΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»ΠΈΠΌ основныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ элСмСнта управлСния Calendar (Ρ‚Π°Π±Π». 15).


Π’Π°Π±Π»ΠΈΡ†Π° 15

ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ Calendar

Π’ качСствС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° использования калСндаря ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅ΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρƒ, которая считываСт ΠΈΠ· калСндаря Π²Ρ‹Π±Ρ€Π°Π½Π½ΡƒΡŽ Π΄Π°Ρ‚Ρƒ ΠΈ Π²Π²ΠΎΠ΄ΠΈΡ‚ Π΅Π΅ Π² ячСйку Ρ€Π°Π±ΠΎΡ‡Π΅Π³ΠΎ листа: