何の事か解らない方は以下の画像をご覧下さい。
「あー、アレか!」そうですこれが "プレビューハンドラ" ([整理 | レイアウト | プレビュー ウィンドウ] で表示される奴) です。プレビューハンドラは Explorer 拡張の一種で実体は DLL です。
画像のプレビューハンドラは
- *.dpr, *.pas, *.dpk, *.inc を関連付け
- プレビューウィンドウには TEditor (Unicode Edition) を使用
…したサンプルになっています。元ネタがちゃんとありますので、他の拡張子用のプレビューハンドラを作るのはとっても簡単です。
[Is there a Preview Handler VCL for Windows 7? (StackOverflow)]
http://stackoverflow.com/questions/5195988/is-there-a-preview-handler-vcl-for-windows-7
サンプルと同じプレビューハンドラを作ってみましょう。まずは↑から PreviewHandler.pas を作ります。http://stackoverflow.com/questions/5195988/is-there-a-preview-handler-vcl-for-windows-7/6212448#6212448 ←これをファイルにするだけです。
次に DLL のプロジェクトを作ります。
[PascalPreview.dpr]
library PascalPreview;
uses ComServ, PreviewHandler, uPascalPreview in 'uPascalPreview.pas';
exports DllGetClassObject, DllCanUnloadNow, DllRegisterServer, DllUnregisterServer, DllInstall;
{$R *.res}
begin end.
次にユニットを一つ追加します。これが本体となります。
unit uPascalPreview;
interface
uses SysUtils, Classes, Controls, StdCtrls, Graphics, PreviewHandler, HEditor, DelphiFountain;
const // Ctrl+Shift+G でアプリケーション毎に生成する事 CLASS_ProjectPreviewHandler: TGUID = '{BA747F72-7F31-4D36-B72F-A882CA387F11}'; // *.dpr CLASS_PackagePreviewHandler: TGUID = '{68345243-DB20-4176-AF59-5C0385FBC15A}'; // *.dpk CLASS_PascalPreviewHandler: TGUID = '{E55BD47F-761B-4D3E-A9BA-2AD51093DD6E}'; // *.pas CLASS_IncludePreviewHandler: TGUID = '{199DCB7D-7DA1-497A-830B-8FDC86AB7D28}'; // *.inc
type TPascalPreviewHandler = class(TFilePreviewHandler) private FEditor: TEditor; FDelphiFountain: TDelphiFountain; protected public constructor Create(AParent: TWinControl); override; procedure Unload; override; procedure DoPreview(const FilePath: string); override; end;
implementation
{ TPascalPreviewHandler }
constructor TPascalPreviewHandler.Create(AParent: TWinControl); var i: Integer; begin // プレビューハンドラ作成 inherited; // TEditor FEditor := TEditor.Create(AParent); FEditor.Parent := AParent; // TDelphiFountain FDelphiFountain := TDelphiFountain.Create(AParent); // Property Settings FEditor.Fountain := FDelphiFountain; FEditor.Align := alClient; FEditor.ReadOnly := True; FEditor.WordWrap := False; FEditor.Ruler.Visible := True; FEditor.Ruler.BkColor := clBtnFace; FEditor.Leftbar.Visible := True; FEditor.Leftbar.LeftMargin := 0; FEditor.Leftbar.Column := 1; FEditor.Leftbar.BkColor := clBtnFace; FEditor.Margin.Left := FEditor.Margin.Top; FEditor.ScrollBars := ssBoth; FEditor.Font.Name := 'MS ゴシック'; FEditor.Font.Size := 11; // Fountain Settings FDelphiFountain.AsmBlock.Color := clTeal; FDelphiFountain.Comment.Color := clGreen; FDelphiFountain.Comment.Style := [fsItalic]; FDelphiFountain.DBCS.Color := clWhite; FDelphiFountain.DBCS.BkColor := clRed; FDelphiFountain.Int.Color := clBlue; FDelphiFountain.Str.Color := clBlue; FDelphiFountain.Reserve.Color := clNavy; FDelphiFountain.Reserve.Style := [fsBold]; for i:=0 to FDelphiFountain.Brackets.Count-1 do begin FDelphiFountain.Brackets[i].ItemColor.Color := clGreen; FDelphiFountain.Brackets[i].ItemColor.Style := [fsItalic]; end; end;
procedure TPascalPreviewHandler.DoPreview(const FilePath: string); begin // プレビュー FEditor.Lines.LoadFromFile(FilePath); FEditor.Repaint; end;
procedure TPascalPreviewHandler.Unload; begin // プレビューハンドラアンロード inherited; end;
initialization // プレビューハンドラを登録 (*.dpr, *.pas, *.dpk, *.inc) TPascalPreviewHandler.Register(CLASS_ProjectPreviewHandler, 'dprfile', 'Delphi Project file Preview Handler', '.dpr'); TPascalPreviewHandler.Register(CLASS_PackagePreviewHandler, 'dpkfile', 'Delphi Package file Preview Handler', '.dpk'); TPascalPreviewHandler.Register(CLASS_PascalPreviewHandler, 'pasfile', 'Delphi Source file Preview Handler', '.pas'); TPascalPreviewHandler.Register(CLASS_IncludePreviewHandler, 'incfile', 'Delphi Include file Preview Handler', '.inc'); end.
コンパイルして DLL が出来たら Windows のシステムフォルダへコピーし、
regsvr32 PascalPreview.dll
これで登録されます (管理者権限が必要です)。登録解除は
regsvr32 -U PascalPreview.dll
です。ね、とっても簡単でしょう?(Uni) SynEdit で書き換えるのも難しくないですよね?詳細は Uwe Raabe 氏のブログ記事を参照してください。
See Also:
[Windows 7 Previews – the Delphi Way (The Art of Delphi Programming )]
http://www.uweraabe.de/Blog/2011/06/01/windows-7-previews-the-delphi-way/
[TEditor ver2.52 Unicode Edition (Delphi Forum)]
http://ht-deko.minim.ne.jp/delphiforum/?vasthtmlaction=viewtopic&t=1522
[Preview Handlers (Microsoft Developer Network)]
http://msdn.microsoft.com/ja-jp/library/bb776867.aspx
|