Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Рисование деревьев с разукрашиванием

Читайте также:
  1. В листьях деревьев
  2. Валка и трелевка (пакетирование) деревьев машиной ЛП-17А
  3. Глава XL; Рисование
  4. Задание 1. Рисование примитивов. Автоматическая анимация
  5. Задание 1. Рисование примитивов. Точные трансформации
  6. Как выбрать породы деревьев для выращивания
  7. Как вырастить саженцы деревьев в комнатных условиях

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 | Нарушение авторских прав



mybiblioteka.su - 2015-2024 год. (0.023 сек.)