MyBaseを試してみる。(PreviewHandlerで表示)
と書いていますが、今回は、MyBaseとは直接関係ないです(^-^)
以前、PreviewHandlerで自分のデータをExplorerで表示したいなと思って、下記サイトのサンプルをダウンロードし、試したことがありました。しかしながらDelphi2009のShlObjにはIPreviewHandlerが定義されておらず、コンパイルできませんでした。
今回、XE2を使ってMyBaseのデータをListViewで表示させてみました。サンプルのMyPreviewHandlerというユニットを次のものに入れ替えます。(MyBaseのファイルは、mbsという拡張子で保存しています。)
The Art of Delphi Programming
Windows 7 Previews – the Delphi Way
こんな感じで、表示することができます。
ただ項目部分をクリックすると次のようなエラーが表示されます。サンプルのまま、検証もせずに使っているので、今回は、OKとしておきますけど(^-^)
コンパイルしてできたDLLをregsvr32を使って登録します。
「ファイル名を指定して実行...」の場合
「ファイル名を指定して実行...」の場合
(参考)
MSDNマガジン
マネージ プレビュー ハンドラ フレームワークで独自の方法でデータを表示する
以前、PreviewHandlerで自分のデータをExplorerで表示したいなと思って、下記サイトのサンプルをダウンロードし、試したことがありました。しかしながらDelphi2009のShlObjにはIPreviewHandlerが定義されておらず、コンパイルできませんでした。
今回、XE2を使ってMyBaseのデータをListViewで表示させてみました。サンプルのMyPreviewHandlerというユニットを次のものに入れ替えます。(MyBaseのファイルは、mbsという拡張子で保存しています。)
The Art of Delphi Programming
Windows 7 Previews – the Delphi Way
こんな感じで、表示することができます。
ただ項目部分をクリックすると次のようなエラーが表示されます。サンプルのまま、検証もせずに使っているので、今回は、OKとしておきますけど(^-^)
unit MyPreviewHandler;
interface
uses
PreviewHandler, System.Classes, Vcl.Controls, Vcl.StdCtrls,
Vcl.ComCtrls, MidasLib, Datasnap.DBClient;
const
CLASS_MyPreviewHandler: TGUID = '{9E4BFFE4-BA9C-449C-A6B5-4FF82B15FA91}';
type
TMyPreviewHandler = class(TFilePreviewHandler)
private
FListView: TListView;
FCDS: TClientDataSet;
protected
public
constructor Create(AParent: TWinControl); override;
procedure Unload; override;
procedure DoPreview(const FilePath: string); override;
end;
implementation
uses
SysUtils;
constructor TMyPreviewHandler.Create(AParent: TWinControl);
var
Col: TListColumn;
begin
inherited;
FCDS := TClientDataSet.Create(AParent);
FListView:= TListView.Create(AParent);
FListView.Parent := AParent;
FListView.Align := alClient;
FListView.Viewstyle:=vsReport;
FListView.ReadOnly := True;
Col := FListView.Columns.Add;
Col.Caption := 'ORD';
Col.Width := 40;
Col := FListView.Columns.Add;
Col.Caption := 'ITEM';
Col.Width := 200;
Col := FListView.Columns.Add;
Col.Caption := 'QTY';
Col.Alignment := taRightJustify;
Col.Width := 80;
Col := FListView.Columns.Add;
Col.Caption := 'UNIT';
Col.Alignment := taCenter;
Col.Width := 50;
Col := FListView.Columns.Add;
Col.Caption := 'PRICE';
Col.Alignment := taRightJustify;
Col.Width := 80;
Col := FListView.Columns.Add;
Col.Caption := 'AMOUNT';
Col.Alignment := taRightJustify;
Col.Width := 80;
end;
procedure TMyPreviewHandler.DoPreview(const FilePath: string);
var
LI: TListItem;
begin
FCDS.FileName := FilePath;
FCDS.Open;
try
FCDS.First;
while not FCDS.EOF do
begin
LI := FListView.Items.add;
LI.Caption := FCDS.FieldByName('ORD').AsString;
LI.SubItems.Add(FCDS.FieldByName('ITEM').AsString);
LI.SubItems.Add(FCDS.FieldByName('QTY').AsString);
LI.SubItems.Add(FCDS.FieldByName('UNIT').AsString);
LI.SubItems.Add(FormatCurr('#,',FCDS.FieldByName('PRICE').AsCurrency));
LI.SubItems.Add(FormatCurr('#,',FCDS.FieldByName('QTY').AsFloat*
FCDS.FieldByName('PRICE').AsCurrency));
FCDS.Next;
end;
finally
FCDS.Close;
end;
end;
procedure TMyPreviewHandler.Unload;
begin
FListView.Items.Clear;
inherited;
end;
initialization
TMyPreviewHandler.Register(CLASS_MyPreviewHandler, 'mbs', 'MyBase Preview Handler', '.mbs');
end.
コンパイルしてできたDLLをregsvr32を使って登録します。
regsvr32 d:\MyPreviewHandlerLib.dll
「ファイル名を指定して実行...」の場合
regsvr32 /u d:\MyPreviewHandlerLib.dll
「ファイル名を指定して実行...」の場合
(参考)
MSDNマガジン
マネージ プレビュー ハンドラ フレームワークで独自の方法でデータを表示する
| 固定リンク

