openpicturedialog i '*.ini'

0

Na formie mam obrazek który można zmienić za pomocą komponentu OPENPICTUREDIALOG moje pytanie to w jaki sposób doprowadzić do zapamiętania nowo otwartego obrazka tak żeby po ponownym uruchomieniu programu był tam ostatnio otwarty obrazek. [???]
[b]Mam takie coś[/b]
if openpicturedialog.execute then
image.picture.loadfromfile(openpicturedialog.filename);

Wiem że trzeba stworzyć plik *.ini ale zupełnie nie mam pojęcia co mam tam pisać (czytałem o tym w artykułach ale lekko nie pokapowałem';-(' ).

Proszę o POSTY, wmiarę zrozumiałe napisane :-)

D Z I Ę K I !!!!!!

0

Jak masz artykuł o rejestrze i go przeczytałeś to stanowi problem zapisanie wartości do rejestru/pliku INI??

0

Ja ci to zrobilem w Rejestrze moze kod jesczez nie jest tak dobrze napsiane bo jeslki nie amsz na poczatku jesczez zdjecia to ci nie zaladuje chyba ale jelsi juz masz to ci zaladuje mussizz jesczez jakos zrobc ze jelsi nie ma zdecie to niech otworzuy sie okienko do wybrania zdjecia apotem jesli juz jest to niech sie laduje
a kod wyglada nastepujaco:

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, ExtDlgs, Registry;

type
TForm1 = class(TForm)
OpenPictureDialog1: TOpenPictureDialog;
Image1: TImage;
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
Reg:TRegistry;
begin
Reg:=TRegistry.Create;
Reg.RootKey:=HKEY_USERS;
Reg.OpenKey('zdjecie',true);
OpenPictureDialog1.Execute;
Image1.Picture.LoadFromFile(OpenPictureDialog1.FileName);
Reg.WriteString('sciezka',OpenPictureDialog1.FileName);
end;

procedure TForm1.FormCreate(Sender: TObject);
var
Reg:TRegistry;
begin
Reg:=TRegistry.Create;
Reg.RootKey:=HKEY_USERS;
Reg.OpenKey('zdjecie',true);
Image1.Picture.LoadFromFile(Reg.ReadString('sciezka'));
end;

end.

0

Przede wszystkim to on nie wygląda następująco tylko ohydnie (tag ukradli, czy co?). Poza tym jest prymitywny i śmieci w rejestrze.

0

Może nie wygląda OK ale działa
Wielkie DZIĘKI URBI

0

ale się kod urbiego bedzie walił... gdzie try? gdzie if? to jest poprawiony kod i nie bedzie głupich wywałek (np. jak user kliknie w opendialogu anuluj)

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, ExtDlgs, Registry;

type
TForm1 = class(TForm)
OpenPictureDialog1: TOpenPictureDialog;
Image1: TImage;
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ private declarations }
public
{ public declarations }
end;

var
Form1: TForm1;

implementation

{ $R *.dfm }

procedure TForm1.Button1Click(Sender: TObject);
var
Reg:TRegistry;
begin
Reg:=TRegistry.Create;
try
Reg.RootKey:=HKEY_USERS;
Reg.OpenKey('zdjecie',true);
if OpenPictureDialog1.Execute then
begin
Image1.Picture.LoadFromFile(OpenPictureDialog1.FileName);
Reg.WriteString('sciezka',OpenPictureDialog1.FileName);
end;
finally
Reg.Free;
end;
end;

procedure TForm1.FormCreate(Sender: TObject);
var
Reg:TRegistry;
begin
Reg:=TRegistry.Create;
try
Reg.RootKey:=HKEY_USERS;
Reg.OpenKey('zdjecie',true);
Image1.Picture.LoadFromFile(Reg.ReadString('sciezka'));
finally
Reg.Free;
end;
end;

end.

ps. uczcie się porządnego formatowania kodu (odstępy też!)

1 użytkowników online, w tym zalogowanych: 0, gości: 1