|
//功能:添加新的彩信数据到数据库
//作者:陈鹏
//完成日期:2005-80-31
unit newmmsForlibrary;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ImgList, xpWindow, Mask, RzEdit, RzSpnEdt, StdCtrls, RzCmboBx, ExtCtrls, xpPanel, xpBitBtn, VirtualTrees, RzButton, RzRadChk,database, Buttons,StrUtils;
type TNewMMS = class(TForm) CancelBtn: TxpBitBtn; RightPanel: TBackPanel; lblTitle: TLabel; lblSubject: TLabel; lblType: TLabel; edtSubject: TEdit; RCBType: TRzComboBox; xpWindow1: TxpWindow; ilImages: TImageList; imgNewMsg: TImage; VSTreeResource: TVirtualStringTree; RzRadioButton1: TRzRadioButton; RzRadioButton2: TRzRadioButton; lblSmil: TLabel; XpBtnAdd: TxpBitBtn; XpBtnDelete: TxpBitBtn; ResourceAdd:TxpBitBtn; lblSize: TLabel; edtsize: TEdit; ilTreeImage: TImageList; dlgOpenAdd: TOpenDialog; procedure CancelBtnClick(Sender: TObject); procedure XpBtnAddClick(Sender: TObject); procedure FormCreate(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); procedure ResourceAddClick(Sender: TObject); procedure VSTreeResourceGetText(Sender: TBaseVirtualTree; Node: PVirtualNode; Column: TColumnIndex; TextType: TVSTTextType; var CellText: WideString); procedure XpBtnDeleteClick(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure edtSubjectMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); private function getFilenameFromFullpath(s:string):string; function getFileSize(sFileName:string):Longint; procedure getMMSContentType(); public totalSize:Longint; Stringlist:TStringList; procedure RefreshTree(); end;
type PResource=^TResource; TResource=record //彩信结构(好像没使用ClassID ,哈哈) classID:string; FullPath:string; end;
var NewMMS: TNewMMS;
implementation uses mmslibrarypage;
{$R *.dfm}
//功能:刷新树
procedure TNewMMS.RefreshTree(); begin VSTreeResource.RootNodeCount:=Stringlist.Count; VSTreeResource.Refresh; end;
procedure TNewMMS.CancelBtnClick(Sender: TObject); begin close; end;
procedure TNewMMS.XpBtnAddClick(Sender: TObject); var sql:string; smiltype:string; begin if RzRadioButton1.Checked=true then smiltype:='Smil 1.0' else smiltype:='Smil 2.0';
// sqL:='insert into mmslibrary(MMS_ID,MMS_Type,MMS_Smil,MMS_Size,MMS_Subject,MMS_Binary) values'+ // '("'+formatDatetime('yyyymmdd_hh:mm:ss', now)+'","'+RCbtype.Text+'","'+smiltype+'",'+edtsize.Text+',"'+ // edtIpSubject.Text+'","'+'test")';
//添加数据到数据库,但最后一项(二进制内存块) 还没添加
sqL:='insert into mmslibrary(MMS_ID,MMS_Type,MMS_Smil,MMS_Size,MMS_Subject) values'+ '("'+formatDatetime('yyyy-mm-dd hh:mm:ss', now)+'","'+RCbtype.Text+'","'+smiltype+'",'+inttostr(totalSize)+',"'+ edtSubject.Text+'")';
currentdatabase.ExecuteSqlNoQurey(sql); //连接数据库,就是这么容易 Close; ModalResult:=mrOk;//据此,mmslibraryform才能刷新树。这也曾是一个难题,哈哈 end;
procedure TNewMMS.FormCreate(Sender: TObject); begin currentdatabase.databases.GetByIndex(0); Stringlist:=Tstringlist.Create; VSTreeResource.NodeDataSize:=SizeOf(TResource); VSTreeResource.Header.Columns[0].Width:=VSTreeResource.ClientWidth; totalSize:=0; //用户选择彩信资源的文件总大小 end;
procedure TNewMMS.FormClose(Sender: TObject; var Action: TCloseAction); begin Action:=caFree; end;
procedure TNewMMS.ResourceAddClick(Sender: TObject); var temp:Longint; begin dlgOpenAdd.Filter:='text files(*.txt;*.html;*.htm)|*.txt;*.html;*.htm|pictual files(*.bmp;*.jpg;*.gif)|*.bmp;*.jpg;*.gif|sound files(*.wma;*.mp3)|*.wma;*.mp3|video files(*.avi;*.mp4)|*.avi;*.mp4|';
if dlgOpenAdd.Execute then begin temp:=totalSize+getFileSize(dlgOpenAdd.FileName);
if temp<102400 then //判断文件总大小不能超过100k,否则不予添加 begin totalSize:=temp; Stringlist.Add(dlgOpenAdd.FileName); edtsize.Text:=IntToStr(totalSize)+' Byte'; end else Exit; end; RefreshTree;
getMMSContentType;
end;
//自写函数,根据用户选择的文件,自动判断MMS的Type,虽长且繁,但好维护( )
procedure TNewMMS.getMMSContentType(); var i:Integer; extendname:string; text,picture,sound,video:Integer; begin text:=0; picture:=0; sound:=0; video:=0;
if Stringlist.Count=0 then RCBType.ItemIndex:=0;
for i := 0 to Stringlist.Count - 1 do begin extendname:=LowerCase( RightStr(Trim(Stringlist.Strings[i]),3)); if (extendname='txt') or (extendname='htm') or (extendname='tml') then text:=text+1; if (extendname='bmp') or (extendname='jpg') or (extendname='gif') then picture:=picture+1; if (extendname='wma') or (extendname='mp3') then sound:=sound+1; if (extendname='avi') or (extendname='mp4') then video:=video+1; end;
if (text>0) and (picture=0) and (sound=0) and (video=0) then RCBType.ItemIndex:=0;
if (text=0) and (picture>0) and (sound=0) and (video=0) then RCBType.ItemIndex:=1;
if (text>0) and (picture>0) and (sound=0) and (video=0) then RCBType.ItemIndex:=2;
if (text=0) and (picture=0) and (sound>0) and (video=0) then RCBType.ItemIndex:=3;
if (text>0) and (picture=0) and (sound>0) and (video=0) then RCBType.ItemIndex:=4;
if (text=0) and (picture>0) and (sound>0) and (video=0) then RCBType.ItemIndex:=5;
if (text>0) and (picture>0) and (sound>0) and (video=0) then RCBType.ItemIndex:=6;
if (text=0) and (picture=0) and (sound=0) and (video>0) then RCBType.ItemIndex:=7;
if (text>0) and (picture=0) and (sound=0) and (video>0) then RCBType.ItemIndex:=8;
if (text=0) and (picture>0) and (sound=0) and (video>0) then RCBType.ItemIndex:=9;
if (text>0) and (picture>0) and (sound=0) and (video>0) then RCBType.ItemIndex:=10;
if (text=0) and (picture=0) and (sound>0) and (video>0) then RCBType.ItemIndex:=11;
if (text>0) and (picture=0) and (sound>0) and (video>0) then RCBType.ItemIndex:=12;
if (text=0) and (picture>0) and (sound>0) and (video>0) then RCBType.ItemIndex:=13;
if (text>0) and (picture>0) and (sound>0) and (video>0) then RCBType.ItemIndex:=14;
end;
//自写函数,获取文件的大小,值为Byte,故数据类型选择longint
function TNewMMS.getFileSize(sFileName:string):Longint; var Attrs: Word; f: file of Byte; size: Longint; begin Attrs := FileGetAttr(sFileName); try AssignFile(f, sFileName); Reset(f); size := FileSize(f); finally CloseFile(f); end; result:=size; end;
procedure TNewMMS.VSTreeResourceGetText(Sender: TBaseVirtualTree; Node: PVirtualNode; Column: TColumnIndex; TextType: TVSTTextType; var CellText: WideString); var i:Integer; begin for I := 0 to Stringlist.Count - 1 do begin case Column of 0: CellText:=getFilenameFromFullpath(Stringlist[node.index]); end; end; end;
//自写函数,根据文件的绝对路径,得到包括 [1] [2] 下一页
|