Обсуждение:Clip.32 - Работа c системным Clipboard-ом из РСЛ.

5 (1)
  • Развернуть Обсуждение:Clip.32 - Работа c системным Clipboard-ом из РСЛ. ( Обсуждение примера  22.04.2004 16:45 )
    0(0)
    Clip.d32 + Clip_t.d32 + исходники + пример использования с dtb.d32.

    18.08.2004 – Переписана функция lgGetClipboardData. Теперь для Windows NT и выше содержимое буфера предварительно переводится из UniCode.
    16.07.2004 – Переписана функция lgSetClipboardData. Теперь проверяется версия ОС и, если она Windows NT и выше, строка предварительно переводится в UniCode.

    Модуль предназначен для работы с Clipboard-ом. Можно получить текстовое содержимое Clipboard-а, можно скопировать строку в Clipboard.
    Модуль работает в 2-х и в 3-х звенке. Для работы в 3-х звенке в каталоге терминала (term.exe) должна находиться терминальная часть длм-ки: clip_t.d32. Модуль самостоятельно определяет в какой конфигурации он работает и вызывает либо локальные функции, либо терминальные.
    Данные DLM не содержат объектов, поэтому не зависят от версий DLM, и будут работать с RSL любой версии.

    ФУНКЦИИ
    Функция: Описание: Входные параметры: Выходные параметры:
    string lgGetClipboardData ( [bool OEM=true]) Функция возвращает содержимое Clipboard-а OEM – по умолчанию текст возвращается в кодировке OEM, если задать false – текст будет возвращаться в кодировке ANSI
    bool lgSetClipboardData (string Text, [bool OEM=true]) Функция копирует текст в Clipboard OEM – по умолчанию текст возвращается в кодировке OEM, если задать false – текст будет возвращаться в кодировке ANSI. Возвращает true – при удаче, и false при ошибке.

    Посмотреть пример
    >> Ответить
    • Развернуть сочетания клавиш ( Victor March  23.04.2004 11:23 )
      0(0)
      /* 2 Григ - огромнейший респект!*/

      macro support_Dialog(dial,cmd,id,key)
      ....
      if ((key==22)or(key==418))/*ctrl+v ; ctrl+Ins*/
      ....
      /*lgSetClipboardData (string Text, [bool OEM=true]) */
      .....
      elif ((key==3)or (key==402))/*ctrl+c ; alt+Ins (shift+Ins не ловится ;) )*/
      ....
      /* lgGetClipboardData ( [bool OEM=true]) */
      .....
      end;
      ....

      end;


      >> Ответить
    • Развернуть простите, очепятка ( Victor March  23.04.2004 11:27 )
      0(0)

      Alt+Ins == 418
      ctrl+ins == 402
      >> Ответить
    • Развернуть Доработка (+) ( григ  16.07.2004 14:43 )
      0(0)
      16.07.2004 – Переписана функция lgSetClipboardData. Теперь проверяется версия ОС и, если она Windows NT и выше, строка предварительно переводится в UniCode.
      >> Ответить
    • Развернуть Если звезды зажигаются - значит это кому нибуть нужно ? ( Senator  20.07.2004 11:13 )
      0(0)
      Если не затруднит - пару примеров - зачем это нужно ?
      а то "Можно получить текстовое содержимое Clipboard-а, можно скопировать строку в Clipboard." как чебурашка - "могу копать- могу не копать"
      Ну нарисую я диалог - ну поставлю обработчик на нажатие комбинаций клавишь - и чё ... этож каждое поле надо обрабатывать- не в нём ли нажато CTRL-V. Кстати, Григ, если бы ты ушёл с Win'98 то знал-бы что средствами даже win'2000 можно в любое поле делать вставку из кликборда (мышкой - клик на шапке-изменить-вставить). А в бездиалоговых макросах я не представляю как это можно использовать.
      >> Ответить
      • Развернуть Там есть макрос - пример для использования в dtb (+) ( григ  20.07.2004 11:53 )
        0(0)
        В dtb нет проблем узнать на каком поле произошло нажатие клавиш, т.к. имеется параметр Sender.
        За стандартный диалог я не отвечаю - это к RSSL.
        Про 2000 я в курсе, эта штука работает и в 98й, кстати. Только вот на мой взгляд криво она копирует, часть символов копируется неправильно, только видимая часть поля (в поле). И потом: либо копирование, либо выбор объектов. Поэтому для собственного удобства работы с dtb.d32 я сделал эту длм-ку. Не нужна - не пользуйся. Вернее можешь пользоваться как примером длм-ки - исходники там есть.

        >> Ответить