?? unitevlo.pas
字號:
unit unitEvlo;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, XPMan, ComCtrls, DB, ADODB, ImgList, StdCtrls, ExtCtrls;
type
TfrmDM = class(TForm)
tv: TTreeView;
XPManifest1: TXPManifest;
ImageList1: TImageList;
fdType: TRadioGroup;
edtVR: TLabeledEdit;
tabEV: TTabControl;
memEV: TMemo;
edtWe: TLabeledEdit;
Label1: TLabel;
btnOK: TButton;
btnCancel: TButton;
btnApp: TButton;
procedure tvMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure fdTypeClick(Sender: TObject);
procedure tabEVChange(Sender: TObject);
procedure tvChange(Sender: TObject; Node: TTreeNode);
procedure edtVRChange(Sender: TObject);
procedure memEVChange(Sender: TObject);
procedure tvEdited(Sender: TObject; Node: TTreeNode; var S: String);
procedure edtWeChange(Sender: TObject);
procedure btnAppClick(Sender: TObject);
procedure btnOKClick(Sender: TObject);
private
{ Private declarations }
evMemo: TList;
tabName: string;
procedure CreateTree;
procedure GetVal(temp:TTreeNode);
//procedure SetVal(temp:TTreeNode);
procedure ExeSQL(sql:String);
public
{ Public declarations }
end;
var
frmDM: TfrmDM;
function CreEvMana(evMe: TList;tabNa:string):integer;
implementation
uses unitDataType,unitDM;
{$R *.dfm}
function CreEvMana(evMe: TList;tabNa:string):integer;
var
temp: TfrmDM;
begin
temp:=TfrmDM.Create(Application);
temp.evMemo := evMe;
temp.CreateTree;
temp.tabName:=tabNa;
try
temp.ShowModal;
finally
temp.Free;
end;
result:=0;
end;
procedure TfrmDM.ExeSQL(sql:String);
var
ao:TADOQuery;
begin
ao:=TADOQuery.Create(nil);
ao.Connection:= DM.AC;
ao.SQL.Add (sql);
ao.ExecSQL;
ao.Free;
end;
procedure TfrmDM.CreateTree;
var
t0,t1,t2,t3: TTreeNode;
MyRec: PDes;
i,j,k: integer;
begin
with tv do
begin
//建立根結點
Items.Clear;
t0:=nil;
for i:=0 to evMemo.Count-1 do
begin
myrec:=evMemo.Items[i];
if myRec^.FPID = 0 then
begin
t0:=Items.AddObjectFirst(nil,myRec^.FFNa,myRec);
t0.ImageIndex :=1;
t0.SelectedIndex :=2;
end;
end;
//一級指標
for i:=0 to evMemo.Count-1 do
begin
myrec:=evMemo.Items[i];
if myRec^.FPID = PDes(t0.Data)^.FID then
begin
t1:=Items.AddChildObject(t0,myRec^.FFNa,myRec);
t1.ImageIndex :=1;
t1.SelectedIndex :=2;
//二級指標
for j:=0 to evMemo.Count -1 do
begin
myrec:=evMemo.Items[j];
if myRec^.FPID = PDes(t1.Data)^.FID then
begin
t2:=Items.AddChildObject(t1,myRec^.FFNa,myRec);
t2.ImageIndex :=1;
t2.SelectedIndex :=2;
//三級指標
for k:=0 to evMemo.Count - 1 do
begin
myRec:=evMemo.Items[k];
if myRec^.FPID = PDes(t2.Data)^.FID then
begin
t3:=Items.AddChildObject(t2,myRec^.FFNa,myRec);
t3.ImageIndex :=1;
t3.SelectedIndex :=2;
end;
end;
end;
end;
end;
end;
t0.Expand(true);
t0.Selected :=true;
end;
end;
procedure TfrmDM.GetVal(temp:TTreeNode);
var
s:string;
begin
fdType.ItemIndex := ord(PDes(temp.Data)^.FFFt);
edtVR.Text := PDes(temp.Data)^.FVal;
edtWe.Text := format('%.2f',[PDes(temp.Data)^.FFWe]);
case tabEV.TabIndex of
0: s:=PDes(temp.Data)^.FFTa;
1: s:=PDes(temp.Data)^.FFEv;
2: s:=PDes(temp.Data)^.FFDj;
end;
memEV.Lines.Clear;
memEV.Lines.Text := s;
end;
procedure TfrmDM.tvMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var
temp: TTreeNode;
begin
if Button=mbLeft then
begin
temp:=tv.GetNodeAt(x,y);
temp.Selected := true;
GetVal(temp);
end;
end;
procedure TfrmDM.fdTypeClick(Sender: TObject);
var
temp: TTreeNode;
begin
temp:=tv.Selected;
PDes(temp.Data)^.FFFt := fdType.ItemIndex = 1;
end;
procedure TfrmDM.tabEVChange(Sender: TObject);
var
temp: TTreeNode;
s:string;
begin
temp:=tv.Selected;
case tabEV.TabIndex of
0: s:=PDes(temp.Data)^.FFTa;
1: s:=PDes(temp.Data)^.FFEv;
2: s:=PDes(temp.Data)^.FFDj;
end;
memEV.Lines.Clear;
memEV.Lines.Text := s;
end;
procedure TfrmDM.tvChange(Sender: TObject; Node: TTreeNode);
begin
GetVal(node);
end;
procedure TfrmDM.edtVRChange(Sender: TObject);
var
temp: TTreeNode;
begin
temp:=tv.Selected;
PDes(temp.Data)^.FVal := edtVR.Text;
end;
procedure TfrmDM.memEVChange(Sender: TObject);
var
temp: TTreeNode;
s: string;
begin
temp:=tv.Selected;
s:=memEV.Lines.Text;
case tabEV.TabIndex of
0: PDes(temp.Data)^.FFTa:=s;
1: PDes(temp.Data)^.FFEv:=s;
2: PDes(temp.Data)^.FFDj:=s;
end;
end;
procedure TfrmDM.tvEdited(Sender: TObject; Node: TTreeNode; var S: String);
begin
PDes(Node.Data)^.FFNa := S;
end;
procedure TfrmDM.edtWeChange(Sender: TObject);
var
temp: TTreeNode;
begin
temp:=tv.Selected;
try
PDes(temp.Data)^.FFWe := strtofloat(edtWe.Text);
except
Application.MessageBox('adf','weewr');
edtWe.Text := format('%.2f',[PDes(temp.Data)^.FFWe]);
end;
end;
procedure TfrmDM.btnAppClick(Sender: TObject);
var
i:integer;
temp: TTreeNode;
sql:String;
myRec: PDes;
begin
for i:=0 to tv.Items.Count-1 do
begin
temp:=tv.Items.Item[i];
myRec:=temp.Data;
sql:='UPDATE '+tabName+' SET parentID='+ inttostr(myRec^.FPID);
sql:=sql+', Fieldname="'+myRec^.FFNa;
sql:=sql+'", Valuerange="'+myRec^.FVal;
sql:=sql+'", Targetdescription="'+myRec^.FFTa;
sql:=sql+'", Evaluatestandard="'+myRec^.FFEv;
sql:=sql+'", fieldtype='+inttostr(ord(myRec^.FFFt));
sql:=sql+', fieldweight='+format('%.2f',[myRec^.FFWe]);
//sql:=sql+', fieldcount="'+myRec^.FFCo;
sql:=sql+', datajudge="'+myRec^.FFDj;
sql:=sql+'" WHERE ID='+inttostr(myRec^.FID);
ExeSQL(sql);
end;
end;
procedure TfrmDM.btnOKClick(Sender: TObject);
begin
btnAppClick(sender);
end;
end.
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -