Image问题(50分)

  • 主题发起人 主题发起人 fwcy
  • 开始时间 开始时间
F

fwcy

Unregistered / Unconfirmed
GUEST, unregistred user!
本人希望系统主画面是可以由用户自己选择的,在退出整个系统后,
再进入系统仍然是用户自己刚选择的那个画面!(本人不想把那幅画记进数据库)
if OpenPictureDialog1.Execute then
Image1.Picture.LoadFromFile(OpenPictureDialog1.Filename);
退出怎样保留OpenPictureDialog1.Filename呢?
 
可以写个INI文件啊!
每次读入都是INI文件里指定的哪个不就OK了!
 
TO:CDYXL
怎么写呀?
 
写入注册表中!
 
请给出详细代码!
 
procedure TForm1.Button1Click(Sender: TObject);

var
MyIniFile: TIniFile;
begin
MyIniFile := TIniFile.Create('myapp.ini');
Memo1.Clear;
MyIniFile.ReadSectionValues('Transfer', Memo1.Lines);
if Memo1.Lines.Values['Title1'] <> 'Picture Painter' then
MyIniFile.WriteString('Transfer', 'Title1', 'Picture Painter');
MyIniFile.Free;
end;

procedure TForm1.Button2Click(Sender: TObject);

var
MyIniFile: TIniFile;
begin

MyIniFile := TIniFile.Create('myapp.ini');

{ if the entry wasn抰 there before, delete it now }
if Memo1.Lines.Values['Title1'] = '' then
MyIniFile.DeleteKey('Transfer', 'Title1')
{ otherwise, restore the old value }
else
MyIniFile.WriteString('Transfer', 'Title1', Memo1.Lines.Values['Title1']);
MyIniFile.Free;
end;
上面给个写的例子给你,
你自己看帮助吧!查找TIniFile。
 

如果仅仅是保存图片文件的信息,用TStringList的LoadFromFile就行了。
在OnFormShow事件中使用。
 
是仅仅保存图片信息,怎么写?
 
把文件名写入一个文件中,
只保存图片的话,把图片写入 Temp.Bmp
每次启动都从那里调。
 
你可以把文件名写死
例如
修改图片时
if OpenPictureDialog1.Execute then
begin
Image1.Picture.LoadFromFile(OpenPictureDialog1.Filename);
Image1.Picture.SaveToFile('XXX.bmp');
end;
程序启动时
if OpenPictureDialog1.Execute then
begin
Image1.Picture.LoadFromFile('XXX.bmp');
end;
 
const
PIC_FILENAME = 'c:/a';//保存图片信息

//参数是显示图片的TImage
procedure LoadPic(img: TImage);
var
strl: TStringList;
begin
strl := TStringList.Create;
try
strl.LoadFromFile(PIC_FILENAME);
img.Picture.LoadFromFile(strl.Strings[0]);
except
end;
strl.Free;
end;

//参数是图片的名称
procedure SavePic(str: string);
var
strl: TStringList;
begin
strl := TStringList.Create;
strl.Add(str);
try
strl.SaveToFile(PIC_FILENAME);
except
end;
strl.free;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
if OpenPictureDialog1.Execute then
begin
SavePic(OpenPictureDialog1.Filename);
LoadPic(image1);//Image1.Picture.LoadFromFile(OpenPictureDialog1.Filename);
end;
end;

procedure TForm1.FormShow(Sender: TObject);
begin
LoadPic(image1);
end;
 
TO:影子:
按你的方法点击单击事件时图片不能立即刷新!
procedure TForm1.Button1Click(Sender: TObject);
begin
if OpenPictureDialog1.Execute then
begin
SavePic(OpenPictureDialog1.Filename);
LoadPic(image1);//Image1.Picture.LoadFromFile(OpenPictureDialog1.Filename);
end;
end;
 

可以的,你也可以用注释的那部份代码。
 
TO:影子:
你试试就知了不行的。用注释的那部份代码也不行。
 
我放图片的窗口是MDIFORM,用下面的代码也不能刷新!真奇怪!
if OpenPictureDialog1.Execute then
Image1.Picture.LoadFromFile(OpenPictureDialog1.Filename);
 

注释的那段代码是来自你原来的程序,不会有问题的吧?
我试过是可以刷新的,你跟踪代码看看。
 
TO:影子
我放图片的窗口是MDIFORM,我刚才试了,用下面的代码也不能刷新!真奇怪!
if OpenPictureDialog1.Execute then
Image1.Picture.LoadFromFile(OpenPictureDialog1.Filename);
 
问题出在你的窗口是MDIFORM上,MDI窗口的背景图片是不能用IMAGE控件的,应该写代码。
DELPHI的书上有专门讲MDIFORM的背景图的设置。
 

我的可以啊。
试试放上一个panel,在panel上放一个image看看。
 
后退
顶部