function PasteSpecialEnabledfForm: TForm;const Pints: array of BOLEFormat): Boolean;
Она проверяет, есть ли в буфере обмена данные поддерживаемых формой Form форматов и, если это так, возвращает True. Если вы вызвали PasteSpecialDIg, не произведя проверку с помощью этой функции, то диалог появится, но в случае отсутствия данных не произведет никаких действий.
Посмотрите на приведенный ниже пример использования вызова диалога PasteSpecialDIg:
Code: |
procedure TFormI.PasteItemClick(Sender: TObject); var DataFormat: Word; DataHandle: THandle; Thelnfo: Pointer; begin if PasteSpecialEnabledfSelf, Pints) then if PasteSpecialDIg(Formi, Fmts, 0, DataFormat, DataHandle, Thelnfo) then if DataFormat = Word(-l) then begin OLEContainerl.PInitInfo := Thelnfo; ReleaseOLEInitInfo(Thelnfo); end else if DataFormat in [CP_BITMAP, CF_METAPILEPICT] then Iinagel -Picture .Assign (Clipboard) ; end; |
Если вы хотите ограничиться вставкой из буфера обмена только объектов OLE, возможно значительно упростить описанный выше механизм. Функции
function PasteSpecialOLEDIg(Form: TForm; HelpContext: THelpContext;
var PInitInfo: Pointer): Boolean;
function PasteSpecialOLEEnabled(Form: TForm): Boolean;
являются полными аналогами PasteSpecialDIg и PasteSpecialEnabled — но только в части, касающейся OLE. Список зарегистрированных форматов по-прежнему необходим, но в нем будут играть роль только форматы для связанного и внедренного объектов.
Пример вызова диалога PasteSpecialOLEDIg короче предыдущего:
Code: |
procedure TFormI.PasteitemClick(Sender: TObject); var Thelnfo: Pointer; begin if PasteSpecialOLEEnabled(Self, Fmts) then if PasteSpecialOLEDIg(Formi, 0, Thelnfo) then begin OLEContainerl.PInitInfo := Thelnfo; ReleaseOLEInitInfo(Thelnfo) ; end; end; |
С помощью переключателей (радиокнопок), имеющихся в диалогах вставки, пользователь может определить, хочет ли он встроить или связать объект с вашим приложением.
Если в контейнере содержится связанный объект, то его состояние можно проверить и изменить, вызвав соответствующий диалог из функции:
procedure LinksDig(Form: TForm; HelpContext: THelpContext);
Если связанного объекта нет, то вызов LinksDig не имеет смысла. Убедитесь в целесообразности при помощи функции:
Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.
ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!