datatree和数据库绑定的最少代码 -20050829完成

2008-04-09 04:20:45来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折

『绝对原创 飞飞』

unit mmslibrarypage;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ImgList, VirtualTrees, ComCtrls, ToolWin, mpToolBar,basicModal,DataModal,
database,myScroll,insertdemon,mysql,newmmsForlibrary;

type
TMMSLibraryForm = class(TPageForm)
mainToolBar: TmpToolBar;
btnNewMMS: TToolButton;
btnDelete: TToolButton;
DataTree: TVirtualStringTree;
ilImages: TImageList;
btnImport: TToolButton;
btn2: TToolButton;
btn3: TToolButton;
btn4: TToolButton;
btn5: TToolButton;
btnExport: TToolButton;
btnRefresh: TToolButton;
procedure FormCreate(Sender: TObject);
procedure btnNewMMSClick(Sender: TObject);
procedure btnDeleteClick(Sender: TObject);
procedure btnImportClick(Sender: TObject);
procedure btnExportClick(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure btnRefreshClick(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure DataTreeGetText(Sender: TBaseVirtualTree; Node: PVirtualNode;
Column: TColumnIndex; TextType: TVSTTextType;
var CellText: WideString);
procedure DataTreeInitNode(Sender: TBaseVirtualTree; ParentNode,
Node: PVirtualNode; var InitialStates: TVirtualNodeInitStates);

private
{ Private declarations }
stringlist:TStringList;
public
procedure refreshtree();
end;

procedure GetMMSFromLibrary(dparam: TStringList; mysql_rows: PMYSQL_ROW);

type
PMMSTreeNode=^TMMStreeNode;

//自定义的datatree的结构
TMMStreeNode=record
mmsid:string;
mmstype:string;
mmssmil:string;
mmssize:Integer;
mmssubject:string;
end;

var
MMSLibraryForm: TMMSLibraryForm;

implementation

{$R *.dfm}

procedure TMMSLibraryForm.FormCreate(Sender: TObject);
begin
Self.Font:=Application.MainForm.Font; //保持程序中字体一致
stringlist:=TStringList.Create; //保存要显示的数据
DataTree.NodeDataSize:=SizeOf(TMMStreeNode); //初始化datatree的节点大小
end;

procedure TMMSLibraryForm.FormShow(Sender: TObject);
var
pdbinfo: PDatabaseInfo;
column : TVirtualTreeColumn;
Header : TStrings;
i : Integer;
node : PVirtualNode;
data : PINT;

sql : string;
pnode1 : PMMSTreeNode;
begin
Header:=TStringList.Create;

//添加显示的列名
if trim(Header.Text)='''''''' then
begin
Header.Add(''''ID'''');
Header.Add(''''Type'''');
Header.Add(''''Smil 1.0/2.0'''');
Header.Add(''''Size(B)'''');
Header.Add(''''Subject'''');
end;

//设置列的显示

for i:=0 to Header.Count-1 do
begin
column:= DataTree.Header.Columns.Add;
column.Text:= Header[I];
column.Width:=dataTree.ClientWidth div 6;
if i=4 then
column.Width:= dataTree.ClientWidth div 3-10;
end;

// 连接数据库,获取指定的数据库(是不是忒简单

pdbinfo:=currentdatabase.databases.GetByIndex(0);

Refreshtree;

end;

procedure TMMSLibraryForm.refreshtree();
var
sql : string;
begin
DataTree.Clear;
stringlist.Clear;

sql:=''''select MMS_ID,MMS_Type,MMS_Smil,MMS_Size,MMS_Subject from mmslibrary'''';

//回调函数:让被调用者调用调用者自身的函数。执行ExeuteSQlQurey时调用了GetMMSFromLibrary

(***********************************************************************************************************

procedure TDatabase.ExeuteSQlQurey(dparam: Pointer; sql: string; callback: TDbDataCallBack);
var
aHandle, db: pmysql;
qresult: PMYSQL_RES;
mysql_rows: PMYSQL_ROW;
iRtn, fcount, i: Integer;
begin

try
aHandle := mysql_init(nil);
//mysql_real_connect(aHandle, nil, nil, nil, nil, 0, nil, 0);
if commonconfig.remotemode = 0 then
db := mysql_real_connect(aHandle, nil, nil, nil, PAnsichar(FCurrentDataBase), 0, nil, 0)
else
db := mysql_real_connect(aHandle, PAnsichar(RHost), PAnsichar(RUser), PAnsichar(RPassword), PAnsichar(FCurrentDataBase), 0, nil, 0);

if db <> nil then
begin
iRtn := mysql.mysql_query(db, Pchar(sql));
if iRtn = 0 then
begin
qresult := mysql.mysql_store_result(db);
if qresult <> nil then
begin
fcount := mysql.mysql_num_rows(qresult);
for i := 0 to fcount - 1 do
begin
mysql_rows := mysql.mysql_fetch_row(qresult);

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:如何获取TWebBrowser控件的超级链接

下一篇:解决了datatree的‘死节点’问题