|
//功能:添加新的彩信数据到数据库 //作者:陈鹏 //完成日期: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
[1] [2] 下一页 没有相关教程
|