Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






  • Сервис онлайн-записи на собственном Telegram-боте
    Тот, кто работает в сфере услуг, знает — без ведения записи клиентов никуда. Мало того, что нужно видеть свое расписание, но и напоминать клиентам о визитах тоже. Нашли самый бюджетный и оптимальный вариант: сервис VisitTime.
    Для новых пользователей первый месяц бесплатно.
    Чат-бот для мастеров и специалистов, который упрощает ведение записей:
    Сам записывает клиентов и напоминает им о визите;
    Персонализирует скидки, чаевые, кэшбэк и предоплаты;
    Увеличивает доходимость и помогает больше зарабатывать;
    Начать пользоваться сервисом
  • 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

     

     

    В Visual Basic существуют объекты, не отображаемые на форме, но использование которых несложно и может принести некоторую пользу. В прошлых главах мы говорили об объектах Printer, Err и DataObject. Давайте поговорим еще о парочке.

    Объект Screen.

    По-сути, объект Screen представляет собой весь экран или иначе Десктоп (DeskTop). Как и другие объекты, объект Screen имеет определенные свойства. Так, например, почему-то считается, что для определения разрешения экрана надо использовать API-функции. Но это прекрасно можно сделать и внутренними возможностями VB. У объекта Screen есть свойства .Height и .Width, которые и возвращают высоту и ширину экрана в твипах. Эти самые твипы легко преобразовать в пиксели, если использовать два других свойства объекта Screen - .TwipsPerPixelX (которое возвращает количество твипов в пикселе по-горизонтали) и .TwipsPerPixelY (которое возвращает количество твипов в пикселе по-вертикали). Таким образом, чтобы определить разрешение экрана, мы пишем приблизительно следующий код:

    Private Sub Command1_Click()
    'Объявить переменные
    Dim VisotaScr As Long 'для высоты
    Dim ShirinaScr As Long 'для ширины
    VisotaScr = Screen.Height / Screen.TwipsPerPixelX 'узнаем ширинуэкрана и преобразовываем ее в пиксели
    ShirinaScr = Screen.Width / Screen.TwipsPerPixelY 'узнаем высоту экрана и преобразовываем ее в пиксели
    Text1 = VisotaScr & " x " & ShirinaScr 'выводим результат в Text1

    End Sub

    Еще одно свойство .ActiveControl содержит ссылку на элемент управления (и его свойства), имеющий фокус. Смысл использования этого свойства следующий. Например, у тебя на формe три текстбокса. И ты хочешь активный текстбокс очистить. Вот в этом случае и можно использовать свойство .ActiveControl, например

    Screen.ActiveControl.Text=" "

    т. е. очищается тот объект (в нашем случае TextBox), на котором в данный момент находится фокус. Это, конечно, несколько упрощено, поскольку, во-первых, необходимо проверить, а текстбокс ли это? Может у тебя на форме есть другие элементы, например, PictureBox. Во-вторых, реально это свойство можно использовать только в меню, так как меню не получает фокус и активным элементом остается выбранный объект. При использовании, например, свойства .ActiveControl в процедуре CommandButton, при нажатии на кнопку Command1 фокус перейдет с нужного нам элемента на командную кнопку и мы не получим желаемого результата. Ниже, в этой главе, мы на примере работы с объектом Clipboard будем использовать это свойство применительно к меню.

    Аналогично свойству .ActiveControl и свойство и .ActiveForm, но содержит ссылку на активную форму. Тогда, чтобы добраться до какого-либо элемента можно применить, например, такой оператор:






    © 2023 :: MyLektsii.ru :: Мои Лекции
    Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
    Копирование текстов разрешено только с указанием индексируемой ссылки на источник.