Читайте также: |
|
procedure TForm1.FillTree(ods:TOracleDataSet;Var Tree:TTreeView);
var
ANode, NextNode: TTreeNode;
ALevel:integer;
CurrStr,pr:String;
Bitmap: TBitmap;
Bitmap1:TBitmap;
ПРОДОЛЖЕНИЕ ПРИЛОЖЕНИЯ 1
Bitmap2:TBitmap;
Bitmap3:TBitmap;
Bitmap4:TBitmap;
p:PNodeData;
i_s:String;
begin
with ods do
begin
First;
ANode:= nil;
Tree.Items.Clear;
while not eof do
begin
CurrStr:=FieldByName('Name').AsString+'('+FieldByName('ID_REF').AsString+' --- '+FieldByName('COL_DIF').AsString+')';
ALevel:= FieldByName('Level').AsInteger-1;
If ANode = nil then
begin
ANode:= Tree.Items.AddChild(nil, CurrStr);
end
else if ANode.Level = ALevel then
ANode:= Tree.Items.AddChild(ANode.Parent,CurrStr)
else if ANode.Level< ALevel then
ANode:= Tree.Items.AddChild(ANode,CurrStr)
else if ANode.Level>ALevel then
begin
ПРОДОЛЖЕНИЕ ПРИЛОЖЕНИЯ 1
NextNode:=ANode.Parent;
while NextNode.Level> ALevel do
NextNode:= NextNode.Parent;
ANode:= Tree.Items.AddChild(NextNode.Parent,CurrStr);
end;
If Tree.Name='TvMK1' then begin
If FieldByName('ID_REF').AsString<>'' then
memo3.Lines.Add(FieldByName('ID_REF').AsString+'='+IntToStr(Tree.Items.Count-1));
end
else
If FieldByName('ID_REF').AsString<>'' then begin
i_s:=Memo3.Lines.Values[FieldByName('ID').AsString];
M_1_2.Lines.Add(i_s+'='+IntToStr(Tree.Items.Count-1));
M_2_1.Lines.Add(IntToStr(Tree.Items.Count-1)+'='+i_s);
end;
If FieldByName('COL_DIF').AsString='' then
begin
ANode.MakeVisible;
ANode.ImageIndex:=2;
ANode.SelectedIndex:=2;
end
else
If (FieldByName('COL_DIF').AsString<> '00000000000')
then begin
If copy(FieldByName('COL_DIF').AsString,1,1)='1' then
begin
ANode.MakeVisible;
ПРОДОЛЖЕНИЕ ПРИЛОЖЕНИЯ 1
ANode.ImageIndex:=1;
ANode.SelectedIndex:=1;
end
else
If copy(FieldByName('COL_DIF').AsString,1,1)='2'
then begin
ANode.MakeVisible;
ANode.ImageIndex:=5;
ANode.SelectedIndex:=5;
end
else
begin
ANode.MakeVisible;
ANode.ImageIndex:=3;
ANode.SelectedIndex:=3;
end;
end
else If FieldByName('SL').AsString='0' then begin
ANode.MakeVisible;
ANode.ImageIndex:=4;
ANode.SelectedIndex:=4;
end;
New(P);
p^.ID:=FieldByName('ID').AsInteger;
p^.COL_DIF:=FieldByName('COL_DIF').AsString;
p^.ID_REF:=FieldByName('ID_REF').AsInteger;
ПРОДОЛЖЕНИЕ ПРИЛОЖЕНИЯ 1
p^.Tree_ID:= Tree.Items.Count-1;
p^.arr[1]:=FieldByName('KOD_PF').AsString;
p^.arr[2]:=FieldByName('REG_N').AsString;
p^.arr[3]:=FieldByName('N_MK').AsString;
p^.arr[4]:=FieldByName('ED_IZM').AsString;
p^.arr[5]:=FieldByName('R_PF').AsString;
p^.arr[6]:=FieldByName('R_IZ').AsString;
p^.arr[7]:=FieldByName('KI').AsString;
p^.arr[8]:=FieldByName('SKI').AsString;
p^.arr[9]:=FieldByName('N_FILE').AsString;
ANode.Data:=p;
pr:=FieldByName('PRZ_CH').AsString;
Next;
end;
end;
Tree.FullExpand;
Tree.Selected:=Tree.Items[0];
end;
procedure TForm1.TvMK1Click(Sender: TObject);
var xNode: TTreeNode;
begin
xNode:=TvMK1.Selected;
if TNodeData(TvMK1.Selected.Data^).COL_DIF='00000000000' then begin // Нет различий
L_NoLink.Visible:=False;
L_Ok.Visible:=True; // Показ сообщения “Нет различий”
SG_RS.Visible:=False;
end;
ПРОДОЛЖЕНИЕ ПРИЛОЖЕНИЯ 1
if TNodeData(TvMK1.Selected.Data^).ID_REF>0 then begin
// Если есть связь с другим деревом, то связанную строку другого дерева сделать активной(выбранную)
tvMK2.Selected:=TvMK2.Items[StrToInt(M_1_2.Lines.Values[IntToStr(TNodeData(tvMK1.Selected.Data^).Tree_ID)])];
end
else begin
if TvMK2.SelectionCount>0 then TvMK2.Selected.Selected:=False;
L_NoLink.Visible:=True; // Показ сообщения "Нет связанной строки"
L_Ok.Visible:=False;
SG_RS.Visible:=False;
end;
if (TNodeData(tvMK1.Selected.Data^).COL_DIF<>'00000000000') and // Есть различия
(TNodeData(tvMK1.Selected.Data^).ID_REF>0) then
Show_Diff(TNodeData(tvMK1.Selected.Data^),TNodeData(tvMK2.Selected.Data^));
if PageControl1.ActivePage=TabSheet2 then begin
ODS_ShowLev.Close;
ODS_ShowLev.ClearVariables;
ODS_ShowLev.SetVariable('N_MK1',StrToInt(Form2.Edit1.Text));
if tvMK1.SelectionCount>0 then ODS_ShowLev.SetVariable('ID1',TNodeData(TvMK1.Selected.Data^).ID);
ODS_ShowLev.SetVariable('N_MK2',StrToInt(Form2.Edit2.Text));
if TvMK2.SelectionCount>0 then ODS_ShowLev.SetVariable('ID2',TNodeData(TvMK2.Selected.Data^).ID);
ODS_ShowLev.Open;
end;
if PageControl1.ActivePage=TabSheet3 then begin
ODS_MKOper1.Close;
ПРОДОЛЖЕНИЕ ПРИЛОЖЕНИЯ 1
ODS_MKOper1.ClearVariables;
ODS_MKOper2.Close;
ODS_MKOper2.ClearVariables;
ODS_MKOper1.SetVariable('N_MK1',StrToInt(Form2.Edit1.Text));
if TvMK1.SelectionCount>0 then ODS_MKOper1.SetVariable('ID1',TNodeData(TvMK1.Selected.Data^).ID);
ODS_MKOper2.SetVariable('N_MK2',StrToInt(Form2.Edit2.Text));
if TvMK2.SelectionCount>0 then ODS_MKOper2.SetVariable('ID2',TNodeData(TvMK2.Selected.Data^).ID);
ODS_MKOper1.Open;
ODS_MKOper2.Open;
end;
end;
procedure TForm1.TvMK2Click(Sender: TObject);
var xNode: TTreeNode;
begin
xNode:=TvMK2.Selected;
if TNodeData(TvMK2.Selected.Data^).COL_DIF='00000000000' then begin
L_NoLink.Visible:=False;
L_Ok.Visible:=True;
SG_RS.Visible:=False;
end;
if TNodeData(TvMK2.Selected.Data^).ID_REF>0 then begin
TvMK1.Selected:=TvMK1.Items[StrToInt(M_2_1.Lines.Values[IntToStr(TNodeData(TvMK2.Selected.Data^).Tree_ID)])];
end
else begin
ПРОДОЛЖЕНИЕ ПРИЛОЖЕНИЯ 1
if TvMK1.SelectionCount>0 then TvMK1.Selected.Selected:=False;
L_NoLink.Visible:=True;
L_Ok.Visible:=False;
SG_RS.Visible:=False;
end;
if (TNodeData(TvMK2.Selected.Data^).COL_DIF<>'00000000000') and
(TNodeData(TvMK2.Selected.Data^).ID_REF>0) then
Show_Diff(TNodeData(tvMK1.Selected.Data^),TNodeData(TvMK2.Selected.Data^));
if PageControl1.ActivePage=TabSheet2 then begin
ODS_ShowLev.Close;
ODS_ShowLev.ClearVariables;
ODS_ShowLev.SetVariable('N_MK1',StrToInt(Form2.Edit1.Text));
if tvMK1.SelectionCount>0 then ODS_ShowLev.SetVariable('ID1',TNodeData(TvMK1.Selected.Data^).ID);
ODS_ShowLev.SetVariable('N_MK2',StrToInt(Form2.Edit2.Text));
if TvMK2.SelectionCount>0 then ODS_ShowLev.SetVariable('ID2',TNodeData(TvMK2.Selected.Data^).ID);
ODS_ShowLev.Open;
end;
if PageControl1.ActivePage=TabSheet3 then begin
ODS_MKOper1.Close;
ODS_MKOper1.ClearVariables;
ODS_MKOper2.Close;
ODS_MKOper2.ClearVariables;
ODS_MKOper1.SetVariable('N_MK1',StrToInt(Form2.Edit1.Text));
if TvMK1.SelectionCount>0 then ODS_MKOper1.SetVariable('ID1',TNodeData(TvMK1.Selected.Data^).ID);
ODS_MKOper2.SetVariable('N_MK2',StrToInt(Form2.Edit2.Text));
ПРОДОЛЖЕНИЕ ПРИЛОЖЕНИЯ 1
if TvMK2.SelectionCount>0 then ODS_MKOper2.SetVariable('ID2',TNodeData(TvMK2.Selected.Data^).ID);
ODS_MKOper1.Open;
ODS_MKOper2.Open;
end;
end;
// Заполнение StringGrid данными различающихся параметров(названия и значения)
procedure TForm1.Show_Diff(p1,p2:TNodeData);
var i:integer;
begin
L_NoLink.Visible:=False;
L_Ok.Visible:=False;
SG_RS.Visible:=True;
SG_RS.Cells[1,0]:='Разница';
SG_RS.Cells[0,0]:='Маршрут 1'+Form2.Edit1.Text;
SG_RS.Cells[2,0]:=Маршрут 2'+Form2.Edit2.Text;
SG_RS.RowCount:=2;
SG_RS.Cells[1,1]:='';
SG_RS.Cells[0,1]:='';
SG_RS.Cells[2,1]:='';
SG_RS.Height:=60;
for i:=1 to 11 do begin
if p1.col_dif[i]='1' then begin
if SG_RS.RowCount=2 then begin
SG_RS.Cells[1,1]:=Diff_Bill[i,2];
SG_RS.Cells[0,1]:=p1.arr[i];
SG_RS.Cells[2,1]:=p2.arr[i];
ПРОДОЛЖЕНИЕ ПРИЛОЖЕНИЯ 1
SG_RS.RowCount:=SG_RS.RowCount+1;
if SG_RS.Height<TabSheet1.Height-50 then SG_RS.Height:=SG_RS.Height+18;
end
else begin
SG_RS.Cells[1,SG_RS.RowCount-1]:=Diff_Bill[i,2];
SG_RS.Cells[0,SG_RS.RowCount-1]:=p1.arr[i];
SG_RS.Cells[2,SG_RS.RowCount-1]:=p2.arr[i];
SG_RS.RowCount:=SG_RS.RowCount+1;
if SG_RS.Height<TabSheet1.Height-50 then SG_RS.Height:=SG_RS.Height+18;
end;
end;
end;
SG_RS.RowCount:=SG_RS.RowCount-1;
end;
procedure TForm1.PageControl1Change(Sender: TObject);
begin
if PageControl1.ActivePage=TabSheet2 then begin
ODS_ShowLev.Close;
ODS_ShowLev.ClearVariables;
ODS_ShowLev.SetVariable('N_MK1',StrToInt(Form2.Edit1.Text));
if tvMK1.SelectionCount>0 then ODS_ShowLev.SetVariable('ID1',TNodeData(TvMK1.Selected.Data^).ID);
ODS_ShowLev.SetVariable('N_MK2',StrToInt(Form2.Edit2.Text));
if TvMK2.SelectionCount>0 then ODS_ShowLev.SetVariable('ID2',TNodeData(TvMK2.Selected.Data^).ID);
ODS_ShowLev.Open;
end;
if PageControl1.ActivePage=TabSheet3 then begin
ПРОДОЛЖЕНИЕ ПРИЛОЖЕНИЯ 1
ODS_MKOper1.Close;
ODS_MKOper1.ClearVariables;
ODS_MKOper2.Close;
ODS_MKOper2.ClearVariables;
ODS_MKOper1.SetVariable('N_MK1',StrToInt(Form2.Edit1.Text));
if TvMK1.SelectionCount>0 then ODS_MKOper1.SetVariable('ID1',TNodeData(TvMK1.Selected.Data^).ID);
ODS_MKOper2.SetVariable('N_MK2',StrToInt(Form2.Edit2.Text));
if TvMK2.SelectionCount>0 then ODS_MKOper2.SetVariable('ID2',TNodeData(TvMK2.Selected.Data^).ID);
ODS_MKOper1.Open;
ODS_MKOper2.Open;
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
close;
end;
end.
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, EkzSearch, Oracle;
type
TForm2 = class(TForm)
EkzSearch1: TEkzSearch;
ПРОДОЛЖЕНИЕ ПРИЛОЖЕНИЯ 1
Button1: TButton;
Button2: TButton;
Edit1: TEdit;
Edit2: TEdit;
Button3: TButton;
Button4: TButton;
OracleSession1: TOracleSession;
OracleLogon1: TOracleLogon;
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form2: TForm2;
implementation
uses unit1;
{$R *.dfm}
procedure TForm2.Button3Click(Sender: TObject);
begin
Дата добавления: 2015-12-07; просмотров: 46 | Нарушение авторских прав