Delphi Tips 
-----------------------------

0210  D1   D2   D3   D4   D5   D6   D7   3.1   95   98    作成: 1999/08/21 おばQ rev 1.1
   B1   B3   B4   B5   B6   B7   NT3   NT4   2K   XP  更新: 1999/08/21 おばQ 編集
クリップボードのフォーマットを知る

クリップボードのフォーマットは
ヘルプを見ると幾つか定義されています。

プロフェッショナル版以上のDelphiに付属する
VCLのソースをみると
windows.pasに定義されていることが分ります。
CF_TEXTは単に1という値で定義されています

こちらの定義を用いれば現在のクリップボードのフォーマットが分ります。
定義されていないクリップボードフォーマットもありますが
その場合には単に数値として取得してみます。

procedure ClipFormat;
    function ShowMessageCF(Value: Integer): String;
      case Value of
        CF_TEXT:
          Result := 'CF_TEXT';
        CF_BITMAP:
          Result := 'CF_BITMAP';
        CF_METAFILEPICT:
          Result := 'CF_METAFILEPICT';
        CF_SYLK:
          Result := 'CF_SYLK';
        CF_DIF:
          Result := 'CF_DIF';
        CF_TIFF:
          Result := 'CF_TIFF';
        CF_OEMTEXT:
          Result := 'CF_OEMTEXT';
        CF_DIB:
          Result := 'CF_DIB';
        CF_PALETTE:
          Result := 'CF_PALETTE';
        CF_PENDATA:
          Result := 'CF_PENDATA';
        CF_RIFF:
          Result := 'CF_RIFF';
        CF_WAVE:
          Result := 'CF_WAVE';
        CF_UNICODETEXT:
          Result := 'CF_UNICODETEXT';
        CF_ENHMETAFILE:
          Result := 'CF_ENHMETAFILE';
        CF_HDROP:
          Result := 'CF_HDROP';
        CF_LOCALE:
          Result := 'CF_LOCALE';
        CF_MAX:
          Result := 'CF_MAX';
        CF_OWNERDISPLAY:
          Result := 'CF_OWNERDISPLAY';
        CF_DSPTEXT:
          Result := 'CF_DSPTEXT';
        CF_DSPBITMAP:
          Result := 'CF_DSPBITMAP';
        CF_DSPMETAFILEPICT:
          Result := 'CF_DSPMETAFILEPICT';
        CF_DSPENHMETAFILE:
          Result := 'CF_DSPENHMETAFILE';

        CF_PRIVATEFIRST:
           Result := 'CF_PRIVATEFIRST';
        CF_PRIVATELAST:
          Result := 'CF_PRIVATELAST';

        CF_GDIOBJFIRST:
          Result := 'CF_GDIOBJFIRST';
        CF_GDIOBJLAST:
          Result := 'CF_GDIOBJLAST';
        else
          Result := IntToStr(Value);
      end;//case
      ShowMessage(Result);
    end;
var
  i: Integer;
begin
  for i := 0 to 1100 do
    if Clipboard.HasFormat(i) then
      ShowMessageCF(i);
end;

1100までループさせているのは最後のCF_GDIOBJLASTが
1023で定義されていたからです。

FormにButton1を貼り付けて以下のように実装してみてください。

procedure TForm1.Button1Click(Sender: TObject);
begin
  ClipFormat;
end;

ボタンを押すと現在のクリップボードデータのフォーマットがShowMessageで表示されます
参照: <その他Windows関連> <Windows>

[新規作成] [最新の情報に更新]

How To
Lounge
KeyWords


Tips
Delphi
Home
Osamu Takeuchi osamu@big.or.jp