Разработать программу для просмотра рисунков. Программа должна отражать рисунок, загруженный с помощью стандартного диалогового окна обзора. Кроме того, любой рисунок должен быть связан с данной программой, и открываться ней по двойному щелчку мыши или нажатию клавиши <Enter> в Проводнике или любой кому друг файлменеджер.
Направьте меня на путь истинный... Каким способом лучше связать картинки и программу... Пишите свои советы, может кто уже видел такое в нете, пишите... По крайней мере я не нашел(
Решение:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, Buttons, ExtDlgs, jpeg, Registry, ShlObj;
type
TForm1 = class(TForm)
pnl1: TPanel;
pnl2: TPanel;
pnl3: TPanel;
img1: TImage;
btn2: TSpeedButton;
btn3: TSpeedButton;
btn1: TBitBtn;
dlgOpenPic1: TOpenPictureDialog;
chk1: TCheckBox;
procedure FormCreate(Sender: TObject);
procedure chk1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
dir: string;
PicturesName: array of string;
Count: Integer;
Reg: TRegistry;
implementation
{$R *.dfm}
function Load(FName:string): boolean;
begin
form1.img1.Picture.LoadFromFile(FName);
end;
procedure Associate;
var s:string;
begin
dir:=ExtractFileDir(Application.ExeName);
Reg:=TRegistry.Create;
Reg.RootKey := HKEY_CLASSES_ROOT;
Reg.OpenKey('.jpg\OpenWithProgids\', true);
Reg.WriteString('TestApplication.jpg', '');
Reg.OpenKey('\TestApplication.jpg\DefaultIcon\', true);
s:=dir+Application.ExeName+',0';
Reg.WriteString('', s);
Reg.OpenKey('\TestApplication.jpg\Shell\Open\', true);
Reg.WriteString('', 'Îòêðûòü â TestApplication');
Reg.OpenKey('command\', true);
s:=dir+Application.ExeName+'" "%1"';
Reg.WriteString('', s);
Reg.Free;
SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, nil, nil);
end;
procedure DeleteAssociate;
begin
Reg:=TRegistry.Create;
Reg.RootKey := HKEY_CLASSES_ROOT;
reg.DeleteKey('.jpg');
reg.DeleteKey('TestApplication.jpg');
Reg.Free;
SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, nil, nil);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
if ParamCount <> 0 then Load(ParamStr(1));
end;
procedure TForm1.chk1Click(Sender: TObject);
begin
if(chk1.Checked) then
Associate else
DeleteAssociate;
end;
end.