1 |
unit WhatLinksHere; |
2 |
interface |
3 |
uses |
4 |
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, |
5 |
Dialogs, StdCtrls, Template, ExtCtrls; |
6 |
|
7 |
type |
8 |
TForm_WhatLinksHere = class(TForm) |
9 |
Panel1: TPanel; |
10 |
list_from: TListBox; |
11 |
label_what: TLabel; |
12 |
Panel2: TPanel; |
13 |
label_to: TLabel; |
14 |
list_to: TListBox; |
15 |
Splitter1: TSplitter; |
16 |
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean); |
17 |
procedure FormShow(Sender: TObject); |
18 |
procedure list_fromDblClick(Sender: TObject); |
19 |
private |
20 |
public |
21 |
SenderForm: TForm_ToolTemplate; |
22 |
ConID: Integer; |
23 |
FileID: Integer; |
24 |
end; |
25 |
|
26 |
var |
27 |
Form_WhatLinksHere: TForm_WhatLinksHere; |
28 |
|
29 |
implementation |
30 |
{$R *.dfm} |
31 |
uses ConnectionManager, Access_OUP_ADB, TypeDefs, Functions, Main; |
32 |
|
33 |
{ TForm_WhatLinksHere } |
34 |
|
35 |
procedure TForm_WhatLinksHere.FormCloseQuery(Sender: TObject; |
36 |
var CanClose: Boolean); |
37 |
begin |
38 |
Form_Main.Enabled := True; |
39 |
Visible := False; |
40 |
CanClose := False; |
41 |
end; |
42 |
|
43 |
procedure TForm_WhatLinksHere.FormShow(Sender: TObject); |
44 |
var |
45 |
fileinfo: TFileInfo; |
46 |
links: TLinks; |
47 |
i: Integer; |
48 |
fullname: String; |
49 |
links_to: TDatLinkList; |
50 |
begin |
51 |
Form_Main.Enabled := False; |
52 |
list_from.Items.Clear; |
53 |
list_to.Items.Clear; |
54 |
fileinfo := ConManager.Connection[ConID].GetFileInfo(FileID); |
55 |
label_what.Caption := FormatNumber(fileinfo.ID, 5, '0') + '-' + |
56 |
fileinfo.Name + '.' + fileinfo.Extension; |
57 |
links_to := ConManager.Connection[ConID].GetDatLinks(fileinfo.ID); |
58 |
if ConManager.Connection[ConID] is TAccess_OUP_ADB then begin |
59 |
links := TAccess_OUP_ADB(ConManager.Connection[ConID]).GetLinksToFile(fileinfo.ID); |
60 |
if Length(links.ByID) > 0 then |
61 |
for i := 0 to High(links.ByID) do |
62 |
begin |
63 |
fileinfo := ConManager.Connection[ConID].GetFileInfo(links.ByID[i].Destination); |
64 |
fullname := FormatNumber(fileinfo.ID, 5, '0') + '-' + fileinfo.Name + '.' + fileinfo.Extension; |
65 |
list_from.Items.Add(fullname + ' (Offset 0x' + IntToHex(links.ByID[i].SrcOffset, 8) + ')'); |
66 |
end; |
67 |
end; |
68 |
if Length(links_to) > 0 then |
69 |
begin |
70 |
for i := 0 to High(links_to) do |
71 |
begin |
72 |
if links_to[i].DestID >= 0 then |
73 |
begin |
74 |
fileinfo := ConManager.Connection[ConID].GetFileInfo(links_to[i].DestID); |
75 |
fullname := FormatNumber(fileinfo.ID, 5, '0') + '-' + fileinfo.Name + '.' + fileinfo.Extension; |
76 |
end else |
77 |
fullname := 'no link'; |
78 |
list_to.Items.Add(fullname + ' (Offset 0x' + IntToHex(links_to[i].SrcOffset, 8) + ')'); |
79 |
end; |
80 |
end; |
81 |
end; |
82 |
|
83 |
procedure TForm_WhatLinksHere.list_fromDblClick(Sender: TObject); |
84 |
var |
85 |
id: Integer; |
86 |
box: TListBox; |
87 |
name: String; |
88 |
begin |
89 |
box := TListBox(Sender); |
90 |
name := box.Items.Strings[box.ItemIndex]; |
91 |
if Pos('no link', name) > 0 then |
92 |
Exit |
93 |
else |
94 |
id := ConManager.Connection[ConID].ExtractFileIDOfName(name); |
95 |
SenderForm.SelectFileID(ConID, id); |
96 |
Form_Main.Enabled := True; |
97 |
Visible := False; |
98 |
end; |
99 |
|
100 |
end. |