Лекция: If TypeOf Screen.ActiveControl Is TextBox Then

В случае, если из текста ничего не выделено, мы должны сделать недоступными строки «Вырезать», «Копировать» и «Удалить». Для этого надо ее свойству .Enabled присвоить значение False. Если ничего не выделено, значит длина выделения (свойство .SelLength) равна нулю. Это можно было бы записать приблизительно так:

  If Screen.ActiveControl.SelLength=0 Then mnuCut.Enabled = False

Однако, для краткости записи мы можем напрямую присвоить свойству .Enabled значение длины выделения .SelLength, исходя из того, что значение ноль всегда соответствует для логических типов False, а любое положительное — True. В итоге то мы получаем более короткую, но по смыслу абсолютно такую же запись. Кроме того, при этом, нам не надо каждый раз в начале процедуры восстанавливать доступность строк, так как длина строки больше нуля сама переведет .Enabled в состояние True.

mnuCut.Enabled = Screen.ActiveControl.SelLength

аналогично две другие строки
mnuCopy.Enabled = Screen.ActiveControl.SelLength
mnuDelate.Enabled = Screen.ActiveControl.SelLength

Далее мы должны запретить Вставить, если формат данных в буфере не соответствует требуемому. Здесь даже еще проще. Метод .GetFormat возвращает True, если формат соответствет проверяемому и False — если нет. Именно эти значения мы напрямую и присваиваем для свойства .Enabled строки mnuPaste.

mnuPaste.Enabled = Clipboard.GetFormat(vbCFText)

Абсолютно также мы поступаем с веткой для графических данных

ElseIf TypeOf Screen.ActiveControl Is PictureBox Then
mnuCut.Enabled = Screen.ActiveControl.Picture
mnuCopy.Enabled = Screen.ActiveControl.Picture
mnuDelate.Enabled = Screen.ActiveControl.Picture
mnuPaste.Enabled = Clipboard.GetFormat(vbCFDIB)
End If
End Sub

 

 


 

еще рефераты
Еще работы по информатике