循环(50分)

  • 主题发起人 主题发起人 bdabc
  • 开始时间 开始时间
B

bdabc

Unregistered / Unconfirmed
GUEST, unregistred user!
我这有2天图像资料,一天里面1小时一张图,2天共48张图。图以年月日为文件名,如2006040808.jpg(2006年04月08点),然后显示,显示按扭为:第一张,下一张,上一张,最后一张。想知道如何编程,当到了‘第一张’时如何显示第一张,‘最后一张’如何显示?点‘下一张’时,如何跳转?若今天点了2006040708.jpg时,今天如何显示?
 
好好利用一下
formatdatetime('YYYYMMDDhh".jpg"',datetime);//把时间格式化成你想要的格式很简单的东西
 
下面是一个图片浏览器的例子,你可以在FileListBox中排序,在用

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, ExtCtrls, FileCtrl,jpeg, ComCtrls;

type
TForm1 = class(TForm)
GroupBox1: TGroupBox;
DriveComboBox1: TDriveComboBox;
DirectoryListBox1: TDirectoryListBox;
FilterComboBox1: TFilterComboBox;
FileListBox1: TFileListBox;
Panel1: TPanel;
B_next: TBitBtn;
ScrollBox1: TScrollBox;
Image1: TImage;
B_pre: TBitBtn;
B_exit: TBitBtn;
StatusBar1: TStatusBar;
procedure FormCreate(Sender: TObject);
procedure FileListBox1Click(Sender: TObject);
procedure B_nextClick(Sender: TObject);
procedure B_exitClick(Sender: TObject);
procedure Image1DblClick(Sender: TObject);
procedure B_preClick(Sender: TObject);
procedure FileListBox1Change(Sender: TObject);
procedure DriveComboBox1Change(Sender: TObject);
procedure DirectoryListBox1Change(Sender: TObject);
procedure FilterComboBox1Change(Sender: TObject);
private
{ Private declarations }
procedure getpic;
public
{ Public declarations }
jpg_image: Tjpegimage;
num: integer; //图片在文件列表中的位置
filename: String; //图片文件名
end;

var
Form1: TForm1;

implementation

uses Unit2;

{$R *.dfm}

procedure TForm1.getpic;
var
str: String;
begin
str:=ansiuppercase(extractfileext(FileListBox1.Items[num])); //文件扩展名
if (str='.BMP') or (str='.ICO') then //如果是位图文件或图标文件
Image1.Picture.LoadFromFile(FileListBox1.Items[num])
else if (str='.JPG') then //如果是JPEG格式
begin
jpg_image.LoadFromFile(FileListBox1.Items[num]);
Image1.Picture.Graphic:=jpg_image;
end;
filename:='现在的文件是:'+FileListBox1.Items[num];
StatusBar1.SimpleText:=filename;
B_next.Enabled:=True;
B_pre.Enabled:=True;
if num=0 then //如果是第一个文件
B_pre.Enabled:=False
else if (num=FileListBox1.Items.Count-1) then //如果是最后一个文件
B_next.Enabled:=False;
FileListBox1.ItemIndex:=num; //定位文件列表框中的位置
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
jpg_image:=TJpegimage.Create; //创建JPG对象
FileListBox1Change(sender); //尝试显示文件
end;

procedure TForm1.FileListBox1Click(Sender: TObject);
begin
num:=FileListBox1.ItemIndex; //单击文件列表框中的文件,num设为条目的索引值
getpic;
end;

procedure TForm1.B_nextClick(Sender: TObject);
begin
Inc(num); //文件num加1
getpic;
end;

procedure TForm1.B_exitClick(Sender: TObject);
begin
Close;
jpg_image.Free; //释放JPG对象
end;

procedure TForm1.Image1DblClick(Sender: TObject);
begin
Form2:=TForm2.Create(Application); //动态创建Form2窗口
Form2.Show; //显示Form2窗口
Form1.Hide; //隐藏主窗口
end;

procedure TForm1.B_preClick(Sender: TObject);
begin
Dec(num); //文件num减1
getpic;
end;

procedure TForm1.FileListBox1Change(Sender: TObject);
begin
if FileListBox1.Items.Count>0 then
getpic //如果文件列表框中文件数不为0,尝试显示图片
else
begin
B_next.Enabled:=False;
B_pre.Enabled:=False;
end;
end;

procedure TForm1.DriveComboBox1Change(Sender: TObject);
begin
num:=0;
end;

procedure TForm1.DirectoryListBox1Change(Sender: TObject);
begin
num:=0;
end;

procedure TForm1.FilterComboBox1Change(Sender: TObject);
begin
num:=0;
//目录、过滤器发生变化时,将文件设置位第一个
end;

end.
 
这个很好解决的。
重点在于你是否怎么理解的。
技术支持QQ:136293586
 
后退
顶部