|
16番会議室「玉石混淆みんなで作るSample蔵」に寄せられたサンプル
"クリップボード形式の名前を取得"
こんにちは、ぜえた です。
クリップボードに配置されているデータの形式名のリストを取得し
ます。#753の「クリップボード監視コンポーネント」のサンプルで
もあります。
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Controls, Forms, StdCtrls, CBWatch;
type
TForm1 = class(TForm)
ClipboardWatcher1: TClipboardWatcher;
ListBox1: TListBox;
procedure ClipboardWatcher1Change(Sender: TObject);
private
{ Private 宣言 }
public
{ Public 宣言 }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
function GetCBFormatName(Format: UINT): string;
const
PredefinedFormats1: array[CF_TEXT..CF_MAX] of string = (
'CF_TEXT', 'CF_BITMAP', 'CF_METAFILEPICT', 'CF_SYLK',
'CF_DIF', 'CF_TIFF', 'CF_OEMTEXT', 'CF_DIB',
'CF_PALETTE', 'CF_PENDATA', 'CF_RIFF', 'CF_WAVE',
'CF_UNICODETEXT', 'CF_ENHMETAFILE', 'CF_HDROP', 'CF_LOCALE',
'CF_MAX');
PredefinedFormats2: array[CF_OWNERDISPLAY..CF_DSPMETAFILEPICT] of string = (
'CF_OWNERDISPLAY', 'CF_DSPTEXT', 'CF_DSPBITMAP', 'CF_DSPMETAFILEPICT');
var
Buffer: array[0..255] of Char;
begin
case Format of
CF_TEXT..CF_MAX: Result := PredefinedFormats1[Format];
CF_OWNERDISPLAY..CF_DSPMETAFILEPICT: Result := PredefinedFormats2[Format];
CF_DSPENHMETAFILE: Result := 'CF_DSPENHMETAFILE';
else
if GetClipboardFormatName(Format, Buffer, SizeOf(Buffer)) > 0 then
Result := Buffer
else
Result := '';
end;
end;
procedure GetCBFormatNames(Strings: TStrings);
var
Format: UINT;
begin
Strings.BeginUpdate;
try
Strings.Clear;
if not OpenClipboard(0) then Exit;
try
Format := EnumClipboardFormats(0);
while Format <> 0 do begin
Strings.Add(GetCBFormatName(Format));
Format := EnumClipboardFormats(Format);
end;
finally
CloseClipboard;
end;
finally
Strings.EndUpdate;
end;
end;
procedure TForm1.ClipboardWatcher1Change(Sender: TObject);
begin
GetCBFormatNames(ListBox1.Items);
end;
end.
ぜえた (QZC05100)
Original document by ぜえた 氏 ID:(QZC05100)
ここにあるドキュメントは NIFTY SERVEの Delphi Users' Forum の16番会議室「玉石混淆みんなで作るSample蔵」に投稿されたサンプルです。これらのサンプルはボーランド株式会社がサポートする公式のものではありません。また、必ずしも動作が検証されているものではありません。これらのサンプルを使用したことに起因するいかなる損害も投稿者、およびフォーラムスタッフはその責めを負いません。使用者のリスクの範疇でご使用下さい。
Copyright 1996-2002 Delphi Users' Forum
|