?? ufrmmain.pas
字號:
unit ufrmMain;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ActnMenus, ToolWin, ActnMan, ActnCtrls, StdActns, ActnList,
XPStyleActnCtrls, ImgList, ExtCtrls, ComCtrls,jpeg,DB, DBCtrls, Menus,uDM;
type
TMainForm = class(TForm)
ToolbarImages: TImageList;
ActionManager1: TActionManager;
EditCopy1: TEditCopy;
EditPaste1: TEditPaste;
EditCut1: TEditCut;
EditSelectAll1: TEditSelectAll;
actView1: TAction;
actView2: TAction;
actView3: TAction;
actView4: TAction;
actNew: TAction;
actEdit: TAction;
actDelete: TAction;
actFind: TAction;
actPrint: TAction;
actExit: TAction;
ActionMainMenuBar1: TActionMainMenuBar;
StatusBar1: TStatusBar;
ActionToolBar2: TActionToolBar;
Panel1: TPanel;
Splitter1: TSplitter;
Panel2: TPanel;
Tree: TTreeView;
ListView1: TListView;
imlSmall: TImageList;
imlLarge: TImageList;
Splitter2: TSplitter;
Image1: TImage;
actRefresh: TAction;
PopupMenu1: TPopupMenu;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
procedure FormCreate(Sender: TObject);
procedure TreeClick(Sender: TObject);
procedure actViewExecute(Sender: TObject);
procedure ListView1CustomDraw(Sender: TCustomListView;
const ARect: TRect; var DefaultDraw: Boolean);
procedure FormDestroy(Sender: TObject);
procedure ListView1SelectItem(Sender: TObject; Item: TListItem;
Selected: Boolean);
procedure actEditExecute(Sender: TObject);
procedure actExitExecute(Sender: TObject);
procedure actNewExecute(Sender: TObject);
procedure actRefreshExecute(Sender: TObject);
procedure actDeleteExecute(Sender: TObject);
procedure ListView1DblClick(Sender: TObject);
procedure FormResize(Sender: TObject);
private
FJpg:TJPEGImage;
procedure AddChildNodes(nodeName:String;SQLStr:string;imlID:integer);
public
FdmMain: TdmMain;
end;
var
MainForm: TMainForm;
implementation
uses ufrmEdit;
{$R *.dfm}
procedure TMainForm.AddChildNodes(nodeName:String;SQLStr:string;imlID:integer);
var
curID,SubNodeName:string;
subnode,subnodechild:TTreenode;
begin
subnode:=tree.Items.AddChild(tree.TopItem,nodeName);
subnode.ImageIndex:=imlID;
with FdmMain.adqBook do
begin
close;
sql.Clear;
sql.Add(SQLStr);
open;
first;
while not Eof do
begin
curID:=trim(FieldByName('a').AsString);
SubNodeName:=curID;
subnodechild:=tree.items.addchild(subnode,SubNodeName);
subnodechild.ImageIndex:=2;
next;
end;
end;
end;
procedure TMainForm.FormCreate(Sender: TObject);
var
NewColumn: TListColumn;
begin
FdmMain:=TDmMain.Create(self);
actRefreshExecute(nil);
with ListView1 do
begin
SmallImages := imlSmall;
LargeImages := imlLarge;
NewColumn := Columns.Add;
NewColumn.Caption :='書名';
NewColumn.Width:=280;
NewColumn := Columns.Add;
NewColumn.Caption :='譯著者';
NewColumn.Width:=80;
NewColumn := Columns.Add;
NewColumn.Caption :='出版社';
NewColumn.Width:=100;
NewColumn := Columns.Add;
NewColumn.Caption :='出版時間';
NewColumn.Width:=80;
end;
Fjpg:=TJPEGImage.Create;
Fjpg.LoadFromFile('bg003.jpg');
end;
procedure TMainForm.TreeClick(Sender: TObject);
var
a,b:string;
I: Integer;
ListItem: TListItem;
begin
a:=tree.Selected.Text;
with FdmMain.adqBook do
begin
Filtered:=false;
if (a<>'全部') then
begin
b:=tree.Selected.Parent.Text;
Filtered:=false;
if (b<>'全部') then
begin
Filter:=b+'='+#39+a+#39;
Filtered:=True;
end;
end;
end;
with ListView1 do
begin
SmallImages := imlSmall;
LargeImages := imlLarge;
Clear;
with FdmMain.adqBook do
begin
first;
for I := 0 to RecordCount - 1 do
begin
ListItem := Items.Add;
Listitem.Caption :=FieldByName('圖書名稱').AsString;
ListItem.ImageIndex :=2;
ListItem.SubItems.Add(FieldByName('譯著者').AsString);
ListItem.SubItems.Add(FieldByName('出版社').AsString);
ListItem.SubItems.Add(FieldByName('出版時間').AsString);
next;
end;
end;
end;
end;
procedure TMainForm.actViewExecute(Sender: TObject);
begin
ListView1.ViewStyle := TViewStyle((Sender as TComponent).Tag);
end;
procedure TMainForm.ListView1CustomDraw(Sender: TCustomListView;
const ARect: TRect; var DefaultDraw: Boolean);
var
x,y,w,h:Integer;
begin
with FJpg do
begin
w:=Width;
h:=Height;
end;
y:=0;
while y<ListView1.Height do
begin
x:=0;
while x<ListView1.Width do
begin
ListView1.Canvas.Draw(x,y,FJpg);
Inc(x,w);
end;
Inc(y,h);
end;
end;
procedure TMainForm.FormDestroy(Sender: TObject);
begin
FJpg.free;
end;
procedure TMainForm.ListView1SelectItem(Sender: TObject; Item: TListItem;
Selected: Boolean);
begin
FdmMain.adqBook.Locate('圖書名稱',Item.Caption,[loPartialKey]);
TBlobField(FdmMain.adqBook.FieldByName('封面照片')).SaveToFile('1.bmp');
Image1.Picture.LoadFromFile('1.bmp');
end;
procedure TMainForm.actEditExecute(Sender: TObject);
var
EditForm:TEditForm;
NeedRefresh:Boolean;
begin
NeedRefresh:=False;
EditForm :=TEditForm.Create(nil);
try
FdmMain.adqBook.edit;
if (EditForm.ShowModal=mrOK) then
begin
FdmMain.adqBook.post;
NeedRefresh:=True;
end
else
FdmMain.adqBook.Cancel;
finally
EditForm.Free;
end;
if NeedRefresh then
begin
FdmMain.adqBook.Filtered:=false;
Tree.FullCollapse;
end;
end;
procedure TMainForm.actExitExecute(Sender: TObject);
begin
close;
end;
procedure TMainForm.actNewExecute(Sender: TObject);
var
EditForm:TEditForm;
NeedRefresh:Boolean;
begin
NeedRefresh:=True;
EditForm :=TEditForm.Create(nil);
try
FdmMain.adqBook.Append;
if (EditForm.ShowModal=mrOK) then
begin
try
FdmMain.adqBook.Post;
except
on e:exception do
begin
if e.Message='Empty row cannot be inserted. Row must have at least one column value set' then
application.MessageBox('沒有輸入內容的空記錄無效!','提示',MB_ICONWARNING);
FdmMain.adqBook.Cancel;
NeedRefresh:=False;
end;
end;
end
else
begin
FdmMain.adqBook.Cancel;
NeedRefresh:=False;
end;
finally
EditForm.Free;
end;
if NeedRefresh then
actRefreshExecute(nil);
end;
procedure TMainForm.actRefreshExecute(Sender: TObject);
var
strQry:string;
RootNode:TTreenode;
begin
FdmMain.adqBook.Filtered:=false;
tree.Items.Clear;
RootNode:= Tree.Items.Add(nil, '全部'); { Add a root node }
RootNode.ImageIndex:=1;
strQry:='select distinct 出版社 as a from mybook ';
AddChildNodes('出版社',strQry,3);
strQry:='select distinct 印次 as a from mybook ';
AddChildNodes('印次',strQry,4);
strQry:='select distinct 類別 as a from mybook ';
AddChildNodes('類別',strQry,5);
strQry:='select distinct 出版時間 as a from mybook ';
AddChildNodes('出版時間',strQry,6);
with FdmMain.adqBook do
begin
close;
sql.Clear;
sql.Add('select * from mybook order by 圖書名稱');
open;
StatusBar1.Panels[1].Text:='共有記錄'+inttostr(RecordCount)+'條。';
end;
StatusBar1.Panels[0].Text:=DateTimeTostr(now);
end;
procedure TMainForm.actDeleteExecute(Sender: TObject);
var
str:Pchar;
begin
str:=Pchar('是否刪除記錄《'+FdmMain.adqBook.FieldByName('圖書名稱').AsString+'》?');
if (Application.MessageBox(str,'提示',MB_YESNO+MB_ICONQUESTION)=IDYES) then
begin
FdmMain.adqBook.Delete;
FdmMain.adqBook.Post;
end;
end;
procedure TMainForm.ListView1DblClick(Sender: TObject);
begin
actEditExecute(nil);
end;
procedure TMainForm.FormResize(Sender: TObject);
begin
image1.Update;
end;
end.
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -