0
Tải bản đầy đủ (.pdf) (75 trang)

Thiết kế giao diện cho các chức năng của phần mềm

Một phần của tài liệu QUẢN LÝ SƠ ĐỒ NGUYÊN LÝ LƯỚI ĐIỆN TRUNG ÁP TRONG TỔNG CÔNG TY ĐIỆN LỰC MIỀN BẮC (Trang 40 -40 )

4.2.1. Màn hình chính Gồm 3 khu vực:

- Menu (khu vực 1: nằm trong khu hình chữ nhật bên trái màn hình)

- Khu vực thể hiện và thực hiện quản lý sơ đồ nguyên lý lƣới điện (khu vực 2: Hình chữ nhật có diện tích lớn nhất phía trên, bên phải màn hình)

40

Hình 7

Khu vực 1: bao gồm các chức năng menu chƣơng trình: - Cập nhật Danh mục đơn vị quản lý

- Thay đổi trạng thái máy cắt

- Các báo cáo, thống kê của chƣơng trình

Khu vực 2: Khu vực chính để thể hiện, quản lý các đối tƣợng trên lƣới: - Cập nhật trên sơ đồ

- Gọi module cập nhật thông tin quản lý

- Thêm các đối tƣợng quản lý phía sau trên lƣới.

Khu vực 3: Khu vực thể hiện các trạng thái (trạng thái của chƣơng trình, trạng thái của các đối tƣợng)

Mã XAML thiết kế giao diện:

<UserControl x:Class="LVTN.MainPage"

xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

41 xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d" d:DesignHeight="768" d:DesignWidth="1280" xmlns:sdk="http://schemas.microsoft.com/winfx/2006/xaml/presentation/sdk" xmlns:toolkit="http://schemas.microsoft.com/winfx/2006/xaml/presentation/tool kit">

<Canvas x:Name="LayoutRoot" Background="Black"

MouseMove="LayoutRoot_MouseMove"

MouseLeftButtonDown="LayoutRoot_MouseLeftButtonDown"

MouseLeftButtonUp="LayoutRoot_MouseLeftButtonUp" Height="691"

Width="1280" HorizontalAlignment="Left" VerticalAlignment="Top">

<Rectangle Fill="#FF020202" Stroke="White" StrokeThickness="2"

Height="51" Width="1129" Canvas.Top="629" Canvas.Left="139"/>

<Rectangle Stroke="White" StrokeThickness="2" Height="25"

Width="56" Canvas.Left="162" Canvas.Top="643">

<Rectangle.Fill>

<LinearGradientBrush EndPoint="1.49,1.682"

StartPoint="0.379,0.226">

<GradientStop Color="Black" Offset="0"/>

<GradientStop Color="White" Offset="1"/>

</LinearGradientBrush>

</Rectangle.Fill>

</Rectangle>

<TextBox x:Name="ctlOutput" Height="80" Width="1129"

BorderThickness="2" FontSize="9.333" Foreground="White"

Canvas.Left="139" Canvas.Top="498"

ScrollViewer.VerticalScrollBarVisibility="Auto" Text="Practical Silverlight

Development Console: Welcome" TextWrapping="Wrap"

VerticalScrollBarVisibility="Auto">

<TextBox.Background>

<LinearGradientBrush EndPoint="0.987,1.221" StartPoint="0.121,- 1.16">

<GradientStop Color="Black"/>

<GradientStop Color="#FF454545" Offset="1"/>

</LinearGradientBrush>

</TextBox.Background>

42

<CheckBox x:Name="chkGridlines" Foreground="White"

Canvas.Left="214" Canvas.Top="476" Content="Gridlines" IsChecked="True"

FontSize="9.333" Style="{StaticResource GlossyBlackCheckBoxStyle}"/>

<CheckBox x:Name="chkTrackMouse" Foreground="White"

Canvas.Left="282" Canvas.Top="476" Content="Log MouseMove"

FontSize="9.333" Style="{StaticResource GlossyBlackCheckBoxStyle}"/>

<Button x:Name="btnClearConsole" Height="25" Width="40"

Canvas.Left="139" Canvas.Top="589" Content="Clear"

ToolTipService.ToolTip="Clear the console" Click="btnClearConsole_Click"

Style="{StaticResource BlackGlossyButton}" Foreground="White"/>

<TextBlock x:Name="ctlCoords" Width="96" Canvas.Left="527"

Canvas.Top="476" FontSize="9.333" Foreground="#FFFFFCFC" Text="(0, 0)"

TextAlignment="Right" TextWrapping="Wrap"/>

<Rectangle x:Name="ctlBounds" Stroke="White" StrokeThickness="2" Height="464" Width="1071" Canvas.Left="197" Canvas.Top="6" Fill="Black" ScrollViewer.VerticalScrollBarVisibility="Auto" ScrollViewer.HorizontalScrollBarVisibility="Auto" />

<CheckBox x:Name="chkConsole" Foreground="White"

Canvas.Left="140" Canvas.Top="476" Content="Console" IsChecked="True"

Checked="chkConsole_Checked" Unchecked="chkConsole_Unchecked"

FontSize="9.333" Style="{StaticResource GlossyBlackCheckBoxStyle}"/>

<ToggleButton x:Name="btnArrow" Width="31" Canvas.Left="243"

Canvas.Top="639" Content="--&gt;" Height="31" FontSize="12"

ToolTipService.ToolTip="Selection" Checked="btnArrow_Checked"

Unchecked="btnArrow_Unchecked" Style="{StaticResource

BlackGlossyToggleButton}" Foreground="White"/>

<TextBlock Canvas.Left="175" Canvas.Top="649" Text="Tools"

TextWrapping="Wrap" Foreground="White" FontSize="9.333"

FontWeight="Bold"/>

<Rectangle Canvas.Left="8" Canvas.Top="6" Height="464"

Name="rectangle1" Stroke="White" StrokeThickness="2" Width="189" />

<Grid>

43 <RowDefinition />

<RowDefinition Height="Auto" />

</Grid.RowDefinitions>

<StackPanel HorizontalAlignment="Left">

<TextBlock Text="Danh mục" Foreground="White"

Margin="25,15,35,5" FontWeight="Bold" />

<Border Margin="35,0,0,0">

<StackPanel HorizontalAlignment="Left">

<HyperlinkButton Content="Danh mục đơn vị quản lý"

Name="dvi_edit" Click="dvi_edit_Click" />

</StackPanel>

</Border>

<TextBlock Text="Tác vụ quản lý" Foreground="White"

Margin="25,10,0,5" FontWeight="Bold" />

<Border Margin="35,0,0,0">

<StackPanel HorizontalAlignment="Left">

<HyperlinkButton Content="Thay đổi trạng thái máy cắt"

Name="doi_ttmc" Click="doi_ttmc_Click" />

<HyperlinkButton Content="Thống kê mất điện"

Name="tk_mat_dien" Click="tk_mat_dien_Click" />

</StackPanel>

</Border>

<Border Margin="35,10,0,0">

<StackPanel HorizontalAlignment="Left">

<HyperlinkButton Content="Quit" Name="quit"

Click="quit_Click" /> </StackPanel> </Border> </StackPanel> </Grid> <ToggleButton Name="btnDay" Width="178" Height="31" FontSize="12"

ToolTipService.ToolTip="Đƣờng dây" Foreground="Black" Canvas.Left="287"

Canvas.Top="640" Checked="btnDay_Checked"

Unchecked="btnDay_Unchecked" />

</Canvas> </UserControl>

44 4.2.2. Menu thực thi

Tại mỗi đối tƣợng có thể bấm phải chuột để hiển thị menu thực thi các nhiệm vụ:

Hình 8

- Thêm đối tƣợng phía sau

- Chỉnh sửa thông tin quản lý của đối tƣợng hiện thời

Khi bấm lựa chọn thêm mới một đối tƣợng quản lý (đƣờng dây, trạm biến áp, …), chƣơng trình sẽ gọi tới module cập nhật mới đối tƣợng tƣơng ứng:

45

Hình 9 4.3. Thiết kế cơ sở dữ liệu

Đối tƣợng quản lý trong phần mềm thể hiện trong luận văn này gồm 4 đối tƣợng chính nhƣ sau:

- Đƣờng dây - Trạm biến áp - Máy cắt - Cột

Ngoài ra, để phục vụ cho công tác quản lý, cần thêm thƣ viện: Danh mục đơn vị 4.3.1. Thông tin quản lý

DS_DuongDay: Lƣu trữ thông tin các đƣờng dây trên lƣới.

Tên trƣờng Kiểu Tính chất Ghi chú

Ma_Duong_Day nvarchar(50) Không cho phép null – Primary Key

46

Ten_Duong_Day nvarchar(200) Tên đƣờng dây Thong_So nvarchar(200) Thông số kỹ thuật Ma_Dvi_Qly nvarchar(50) Mã đơn vị quản lý

Ngay_Su_Dung date Ngày đƣa vào sử dụng

DS_TBA: Lƣu trữ thông tin các trạm biến áp trên lƣới.

Tên trƣờng Kiểu Tính chất Ghi chú

Ma_TBA nvarchar(50) Không cho phép null – Primary Key

Mã trạm biến áp

Ten_TBA nvarchar(200) Tên trạm biến áp

Dia_Chi nvarchar(200) Địa chỉ

Cong_Suat nvarchar(50) Công suất – thông số kỹ thuật của trạm biến áp

Ma_Dvi_Qly Mã đơn vị quản lý

Ngay_Su_Dung date Ngày đƣa vào sử dụng

DS_MC: Lƣu trữ thông tin các máy cắt trên lƣới.

Tên trƣờng Kiểu Tính chất Ghi chú

Ma_MC nvarchar(50) Không cho phép null – Primary Key

Mã máy cắt

Ten_MC nvarchar(200) Tên máy cắt

Dia_Chi nvarchar(200) Địa chỉ

Ma_Dvi_Qly Mã đơn vị quản lý

47

DS_COT: Lƣu trữ thông tin các điện trên lƣới. Cột điện lƣu trữ trong hệ thống này thuần túy chỉ có nhiệm vụ phân nhánh các đƣờng dây trên bản đồ, không phải là các cột điện ứng theo thực tế.

Tên trƣờng Kiểu Tính chất Ghi chú

Ma_Cot nvarchar(50) Không cho phép null – Primary Key

Mã cột

Ten_COT nvarchar(200) Tên cột

DS_Dvi_Qly: Danh sách các đơn vị quản lý thiết bị trên lƣới. Danh sách này làm nhiệm vụ liên kết các đối tƣợng trên lƣới lại, nhằm mục đích quản lý, thống kê, báo cáo.

Tên trƣờng Kiểu Tính chất Ghi chú

Ma_Dvi_Qly nvarchar(50) Không cho phép null – Primary Key

Mã đơn vị quản lý

Ten_Dvi_Qly nvarchar(200) Tên đơn vị quản lý

4.3.2. Thông tin bản đồ

Các phần tử trên lƣới sẽ đƣợc quản lý, hiển thị trực quan trên sơ đồ. Vì vậy cần thiết có bảng lƣu trữ dữ liệu của chúng. Trong hệ thống này sử dụng 1 bảng BanDo, có cấu trúc dữ liệu nhƣ sau:

Tên trƣờng Kiểu Tính chất Ghi chú

Id Int Không cho phép

null – Primary Key, là khóa tự sinh của hệ thống, mỗi khi có thêm 1 bản ghi mới, giá trị này sẽ

48

tự động tăng thêm 1

Ma_Doi_Tuong nvarchar(50) Mã đối tƣợng (đi kèm với kiểu đối tƣợng để xác định kiểu dáng, vị trí của đối tƣợng này trên sơ đồ):

- Ma_Duong_Day (nếu kiểu đối tƣợng là 1)

- Ma_TBA (nếu kiểu đối tƣợng là 2) - Ma_MC (nếu kiểu

đối tƣợng là 3) - Ma_COT (nếu kiểu

đối tƣợng là 4)

Kieu_Doi_Tuong Int Kiểu đối tƣợng:

- 1: Đƣờng dây - 2: Trạm biến áp - 3: Máy cắt - 4: Cột

X Int Tọa độ cột trái của đối

tƣợng trên sơ đồ

Y Int Tọa độ dòng trên của

đối tƣợng trên sơ đồ

X1 Int X1, Y1: Tọa độ điểm

cuối của đƣờng dây trên sơ đồ. Đối với các đối tƣợng khác (trạm biến áp, máy cắt, cột), các

49

giá trị này sẽ bằng NULL

Y1 Int

4.3.3. Thông tin liên kết các đối tƣợng trên sơ đồ:

Các đối tƣợng quản lý sẽ đƣợcliên kết với nhau thông qua bảng So_Do_Ket_Day dƣới đây:

Tên trƣờng

Kiểu Tính chất Ghi chú

Id Int Không cho phép null – Primary Key, là khóa tự sinh của hệ thống, mỗi khi có thêm 1 bản ghi mới, giá trị này sẽ tự động tăng thêm 1

Identifier

Ma_Cha nvarchar(50) Ma_Con nvarchar(50)

Mã cha lƣu giữ thông tin của đối tƣợng cha trên sơ đồ. Mã con Mã cha lƣu giữ thông tin của đối tƣợng con trên sơ đồ. Mã cha, mã con bao gồm:

Kiểu đối tƣợng + Mã đối tƣợng Ví dụ:

Cha là đƣờng dây có mã 01, Ma_Cha sẽ có giá trị: “101” – 1: đƣờng dây, 2 – trạm biến áp, 3 – máy cắt, 4 – cột.

Con là máy cắt có mã 01, Ma_Con sẽ có giá trị : “301”. 4.3.4. Trạng thái máy cắt:

50

Trạng thái máy cắt sẽ quyết định tình trạng vận hành của lƣới: khu vực nào có điện, khu vực nào mất điện:

Tên trƣờng Kiểu Tính chất Ghi chú

Id Int Không cho phép null – Primary Key, là khóa tự sinh của hệ thống, mỗi khi có thêm 1 bản ghi mới, giá trị này sẽ tự động tăng thêm 1

Identifier

Ma_MC nvarchar(50)

Trang_Thai Int Trang_Thai = 1: đóng

điện

Trang_Thai = 0: cắt điện Ngay_Thao_Tac Date

Tất cả các đối tƣợng có mã đối tƣợng ứng với mã con trong So_Do_Ket_Day sẽ bị ảnh hƣởng bởi giá trị Trang_Thai trong bảng này.

51

Hình 10

4.4. Xây dựng các module chƣơng trình

4.4.1. Tạo lập đối tƣợng: Sơ đồ tổng quan: Start Có dữ liệu đối tƣợng CSDL Tải dữ liệu từ CSDL Yes No Nhập trực tiếp để khởi tạo đối tƣợng

Hiển thị đối tƣợng lên sơ đồ

52 Ví dụ khởi tạo đƣờng dây:

- Nếu đã tồn tại dữ liệu, hàm sau đây sẽ khởi tạo đƣờng dây với các tọa độ (x1, y1) và (x2, y2):

privatevoid VeDayBanDau(int x1, int y1, int x2, int y2) {

Line line_tmp = newLine(); line_tmp.X1 = x1; line_tmp.Y1 = y1; line_tmp.X2 = x2; line_tmp.Y2 = y2; line_tmp.StrokeThickness = 2; line_tmp.Stroke = _orangeBrush;

line_tmp.Name = "Day:" + DayIndex.ToString();

ToolTipService.SetToolTip(line_tmp, line_tmp.Name + "\r\n");

line_tmp.MouseEnter += new MouseEventHandler(shape_MouseEnter); line_tmp.MouseLeave += new MouseEventHandler(shape_MouseLeave); line_tmp.MouseLeftButtonDown += new MouseButtonEventHandler(shape_MouseLeftButtonDown); line_tmp.MouseLeftButtonUp += new MouseButtonEventHandler(shape_MouseLeftButtonUp); line_tmp.MouseRightButtonDown += new MouseButtonEventHandler(shape_MouseRightButtonDown); line_tmp.MouseRightButtonUp += new MouseButtonEventHandler(shape_MouseRightButtonUp); currLine = line_tmp; LayoutRoot.Children.Add(line_tmp); DayIndex++; }

53

- Nếu chƣa tồn tại dữ liệu, hàm sau đây sẽ hiển thị đƣờng dây trên sơ đồ khi sử dụng chuột để vẽ:

privatevoid DrawDay() {

Line line_tmp = newLine(); line_tmp.X1 = _ptStart.X; line_tmp.Y1 = _ptStart.Y; line_tmp.X2 = _mX; line_tmp.Y2 = _mY; line_tmp.StrokeThickness = 2; line_tmp.Stroke = _orangeBrush; if (_lineLast != null) { LayoutRoot.Children.Remove(_lineLast); } line_tmp.Name = DayIndex.ToString();

ToolTipService.SetToolTip(line_tmp, line_tmp.Name + "\r\n"); line_tmp.MouseEnter += new MouseEventHandler(shape_MouseEnter); line_tmp.MouseLeave += new MouseEventHandler(shape_MouseLeave); line_tmp.MouseLeftButtonDown += new MouseButtonEventHandler(shape_MouseLeftButtonDown); line_tmp.MouseLeftButtonUp += new MouseButtonEventHandler(shape_MouseLeftButtonUp); line_tmp.MouseRightButtonDown += new MouseButtonEventHandler(shape_MouseRightButtonDown); line_tmp.MouseRightButtonUp += new MouseButtonEventHandler(shape_MouseRightButtonUp); _lineLast = line_tmp; currLine = line_tmp; _canDrawDay = true; LayoutRoot.Children.Add(line_tmp);

54 }

Trong các đoạn lệnh trên, có các phần chính: - Khởi tạo đối tƣợng đồ họa:

Line line_tmp = newLine();

- Gán các thuộc tính cho nó: thuộc tính về tọa độ, độ rộng, màu sắc line_tmp.X1 = _ptStart.X; line_tmp.Y1 = _ptStart.Y; line_tmp.X2 = _mX; line_tmp.Y2 = _mY; line_tmp.StrokeThickness = 2; line_tmp.Stroke = _orangeBrush;

Trong đó _ptStart là đối tƣợng điểm nhận giá trị khi chuột trái đƣợc bấm xuống.

_mX, _mY là các giá trị của tọa độ bắt theo khi chuột di chuyển.

- Gán các sự kiện cho đối tƣợng, khi xảy ra bấm chuột trái, chuột phải lên đối tƣợng (trong trƣờng hợp này là đƣờng kẻ line_tmp):

line_tmp.MouseEnter += new MouseEventHandler(shape_MouseEnter); line_tmp.MouseLeave += new MouseEventHandler(shape_MouseLeave); line_tmp.MouseLeftButtonDown += new MouseButtonEventHandler(shape_MouseLeftButtonDown); line_tmp.MouseLeftButtonUp += new MouseButtonEventHandler(shape_MouseLeftButtonUp); line_tmp.MouseRightButtonDown += new MouseButtonEventHandler(shape_MouseRightButtonDown); line_tmp.MouseRightButtonUp += new MouseButtonEventHandler(shape_MouseRightButtonUp);

shape_MouseEnter, shape_MouseLeave, shape_MouseLeftButtonDown, shape_MouseLeftButtonUp, shape_MouseRightButtonDown,

55

shape_MouseRightButtonUp là các hàm xử lý sự kiện tƣơng ứng cho các trƣờng hợp di chuột trên đối tƣợng, chuột ra khỏi phạm vi ảnh hƣởng của đối tƣợng trên màn hình, bấm chuột trái, bấm chuột phải lên đối tƣợng. - Gắn đối tƣợng lên màn hình điều khiển chính của chƣơng trình:

LayoutRoot.Children.Add(line_tmp); 4.4.2. Quản lý dữ liệu các đối tƣợng:

4.4.2.1. Quản lý thuộc tính của đối tƣợng:

Xảy ra khi tạo mới 1 đối tƣợng hoặc khi muốn thay đổi thông tin của đối tƣợng.

Tạo mới 1 đối tƣợng:

Thêm 1 đối tƣợng kế tiếp trên lƣới của đối tƣợng hiện thời bằng cách bấm chuột phải để hiện ra menu thao tác. Tiếp theo lựa chọn menu thêm mới đối tƣợng đó.

Hình 11

Thay đổi thông tin của đối tƣợng hiện thời: Xảy ra khi bấm chuột phải của một đối tƣợng  lựa chọn vào thay đổi thông tin

56

Hình 12

Ví dụ trong tình huống này, chúng ta thêm mới đối tƣợng trạm biến áp.

Việc lƣu trữ dữ liệu của đối tƣợng vào cơ sở dữ liệu hay không, đƣợc thông qua một lời gọi hàm callback w_tba_closed:

Tba_Add w = new Tba_Add();

w.Closed += newEventHandler(w_tba_closed); w.Show();

void w_tba_closed(object sender, EventArgs e) {

var window = sender as Tba_Add; if (window != null) { chk_tba = window.Input; if (chk_tba == "0") { if(TbaIndex > 0) TbaIndex--; LayoutRoot.Children.Remove(currTba); }

57 else { listNode[shapeIndex]._Shape = currTba; listNode[shapeIndex].Ma_Cha_Dl = node_Cha.Ma_Con_Dl; listNode[shapeIndex].Ma_Con_Dl = "2" + window.maTba_Ouput; listNode[shapeIndex].Name = currTba.Name;

save_bd_tba(window.maTba_Ouput, (int)currTbaPoint.X, (int)currTbaPoint.Y); shapeIndex++; TbaIndex++; } } }

Hàm save_bd_tba(window.maTba_Ouput, (int)currTbaPoint.X,

(int)currTbaPoint.Y) sẽ lƣu trữ dữ liệu về trạm biến áp và dữ liệu bản đồ vào các bảng DS_TBA, BANDO:

privatevoid save_bd_tba(string matba_tmp, int x, int y) {

BanDo bd_tmp = newBanDo();

bd_tmp.Ma_Doi_Tuong = matba_tmp; bd_tmp.X = x;

bd_tmp.Y = y;

bd_tmp.Kieu_Doi_Tuong = 2; context.BanDos.Add(bd_tmp);

So_Do_Ket_Day sdkd_tmp = new So_Do_Ket_Day(); sdkd_tmp.Ma_Cha = node_Cha.Ma_Con_Dl; sdkd_tmp.Ma_Con = "2" + matba_tmp; context.So_Do_Ket_Days.Add(sdkd_tmp); context.SubmitChanges(); context.Load(context.GetBanDoesQuery()); }

4.4.2.2. Quản lý dữ liệu đối tƣợng trên sơ đồ:

Tải thông tin từ cơ sở dữ liệu : chính là việc thiết lập các đối tƣợng trên sơ đồ (5.2.)

58

Ghi thông tin bản đồ (ghi các thông tin của đối tƣợng và thông tin tọa độ của đối tƣợng đó vào cơ sở dữ liệu) :

privatevoid save_bd_tba(string matba_tmp, int x, int y) {

BanDo bd_tmp = newBanDo();

bd_tmp.Ma_Doi_Tuong = matba_tmp; bd_tmp.X = x;

bd_tmp.Y = y;

bd_tmp.Kieu_Doi_Tuong = 2; context.BanDos.Add(bd_tmp);

So_Do_Ket_Day sdkd_tmp = new So_Do_Ket_Day(); sdkd_tmp.Ma_Cha = node_Cha.Ma_Con_Dl; sdkd_tmp.Ma_Con = "2" + matba_tmp; context.So_Do_Ket_Days.Add(sdkd_tmp); context.SubmitChanges(); context.Load(context.GetBanDoesQuery()); }

4.4.2.3. Quản lý liên kết giữa các đối tƣợng:

Quản lý liên kết giữa các đối tƣợng trong cơ sở dữ liệu thông qua bảng So_Do_Ket_Day Id Mã Cha Mã con 12 101 13 101 201 14 201 102 15 201 103 16 201 104 17 104 401 18 401 105 19 103 301 20 301 106 21 401 107 22 301 108 23 301 109

59

24 105 202 25 202 110 NULL NULL NULL

Nhìn vào bảng trên ta thấy : node 201 có 3 con là 102, 103, 104. Theo cách thức mô tại phần trên, chính là :

TBA có mã 01 có 3 nhánh rẽ (đƣờng dây) 02, 03, 04.

Tƣơng tự nhƣ vậy, máy cắt 01 có 2 nhánh rẽ (đƣờng dây) là 08 và 09. …

Sử dụng một mảng để ánh xạ dữ liệu từ cơ sở dữ liệu sang : publicstruct Node_DL

{

privatestring ma_Cha_DL; privatestring ma_Con_DL; privateShape _shape; privatestring name;

public Node_DL(string ma_Cha_DL, string ma_Con_DL, Shape _s,

string _name) {

this.ma_Con_DL = ma_Con_DL; this.ma_Cha_DL = ma_Cha_DL; this._shape = _s;

this.name = _name; }

// Mã cha của đối tƣợng hiện tại

publicstring Ma_Cha_Dl {

get { return ma_Cha_DL; } set { ma_Cha_DL = value; }

}

// Mã của đối tƣợng hiện tại

publicstring Ma_Con_Dl {

get { return ma_Con_DL; } set { ma_Con_DL = value; } }

// Hình ảnh của đối tƣợng hiện tại

60 {

get { return _shape; } set { _shape = value; } }

publicstring Name {

get { return name; } set { name = value; } }

};

privateNode_DL[] listNode = new Node_DL[200];

Mảng các cấu trúc Node_DL nhằm mục tiêu lƣu trữ thông tin về liên kết giữa các đối tƣợng.

- Khi bắt đầu thực thi chƣơng trình, dữ liệu sẽ đƣợc chuyển tải từ cơ sở dữ liệu lên :

Đoạn lệnh lấy dữ liệu từ So_Do_Ket_Day :

foreach (So_Do_Ket_Day e in ed.Entities) {

listNode[i].Ma_Cha_Dl = e.Ma_Cha; listNode[i].Ma_Con_Dl = e.Ma_Con; i++;

}

Đoạn lệnh gán đối tƣợng đồ họa : do { if (listNode[i].Ma_Con_Dl == ma_tmp) { listNode[i]._Shape = shape_tmp;; listNode[i].Name = shape_tmp.Name; } i++; }while(listNode[i].Ma_Con_Dl != "");

Nhƣ vậy ta đã có một mảng các cấu trúc lƣu giữ thông tin liên kết các đối tƣợng để có thể trực tiếp xử lý trong chƣơng trình mà không cần gọi từ cơ sở dữ liệu

Một phần của tài liệu QUẢN LÝ SƠ ĐỒ NGUYÊN LÝ LƯỚI ĐIỆN TRUNG ÁP TRONG TỔNG CÔNG TY ĐIỆN LỰC MIỀN BẮC (Trang 40 -40 )

×