16番会議室「玉石混淆みんなで作るSample蔵」に寄せられたサンプル
"起動時に自動読込み(アイコンへのD&D対応)"
この発言は #00249 J-OH! さんのソフト起動時に指定ファイルを読込む に対するコメントです
●説明
アプリ起動時に、iniファイルに指定されたファイル、又は
アイコンへDrag&Dropされたファイルの読み込みを行います。
●使用するコンポ
OpenDialog, CheckBox
* IniFilesをusesに追加して下さい。
* D&Dされたファイル名をLongFileNameにしたい場合は、
Mes 15 #147を参考にして下さい。
●サンプルコード
{Form1のinterface部}
...
public
procedure MyFileOpen;// 読込み処理ルーチン
end;
...
{ アプリ起動時: 自動読込の設定&ファイル名取得 }
procedure TForm1.FormCreate(Sender: TObject);
begin
with TIniFile.Create(ChangeFileExt(paramstr(0),'.ini')) do
try
CheckBox1.Checked := ReadBool('Option', 'AutoOpen', False);
OpenDialog1.FileName := ReadString('File', 'Open', 'UNTITLED.TXT');
finally
Free;
end;
// 初期ディレクトリ
OpenDialog1.InitialDir := ExtractFileDir(OpenDialog1.FileName);
end;
{ アプリ終了時: 自動読込の設定&ファイル名保存 }
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
with TIniFile.Create(ChangeFileExt(paramstr(0),'.ini')) do
try
WriteBool('Option', 'AutoOpen', CheckBox1.Checked);
WriteString('File', 'Open', OpenDialog1.FileName);
finally
Free;
end;
end;
{ ファイル読込み処理: * 各自の用途に応じて処理を変えて下さい }
procedure TForm1.MyFileOpen;
var
f: file;// *
Buffer: array [0..3] of Char;// *
begin
{$I+} // 入出力例外を発生させる (コンパイラ設定でI/Oチェックがオンの場合はいらない)
FileMode := 0; // 読み出し専用
AssignFile(f, OpenDialog1.FileName);
try
Reset(f, 1);// *
except
On EInOutError do // ファイルが開けない場合の処理
begin
MessageBeep(MB_ICONEXCLAMATION);
ShowMessage(ExtractFileName(OpenDialog1.FileName) + ' が開けません!');
Exit;
end;
end;
try
BlockRead(f, Buffer, 4);// *
finally
CloseFile(f);
end;
Caption := Buffer;// *
end;
{プロジェクトソース}
program Sample;
uses
// ExtractFileExtを使ってるので、SysUtilsを追加
Forms, SysUtils,
Unit1 in 'Unit1.pas' {Form1},
...
{$R *.RES}
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
...
{ Application.Runの直前に }
// アイコンにD&Dしてファイル名を渡す場合、ファイルの種類をチェック
if ExtractFileExt(ParamStr(1)) = '.TXT' then
Form1.OpenDialog1.Filename := ParamStr(1);
// ファイルを開く
if (ExtractFileExt(ParamStr(1)) = '.TXT')
or (Form1.CheckBox1.Checked = True) then
Form1.MyFileOpen;
Application.Run;
end.
MISO:(CXP06505)
Original document by MISO 氏 ID:(CXP06505)
ここにあるドキュメントは NIFTY SERVEの Delphi Users' Forum の16番会議室「玉石混淆みんなで作るSample蔵」に投稿されたサンプルです。これらのサンプルはボーランド株式会社がサポートする公式のものではありません。また、必ずしも動作が検証されているものではありません。これらのサンプルを使用したことに起因するいかなる損害も投稿者、およびフォーラムスタッフはその責めを負いません。使用者のリスクの範疇でご使用下さい。
Copyright 1996-2002 Delphi Users' Forum
|