source: oup/current/Helper/WhatLinksHere.pas @ 591

Last change on this file since 591 was 222, checked in by alloc, 14 years ago
File size: 2.9 KB
Line 
1unit WhatLinksHere;
2interface
3uses
4  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
5  Dialogs, StdCtrls, _TemplateFile, ExtCtrls;
6
7type
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_TemplateFile;
22    ConID: Integer;
23    FileID: Integer;
24  end;
25
26var
27  Form_WhatLinksHere: TForm_WhatLinksHere;
28
29implementation
30{$R *.dfm}
31uses ConnectionManager, Access_OUP_ADB, TypeDefs, Functions, Main;
32
33{ TForm_WhatLinksHere }
34
35procedure TForm_WhatLinksHere.FormCloseQuery(Sender: TObject;
36  var CanClose: Boolean);
37begin
38  Form_Main.Enabled := True;
39  Visible := False;
40  CanClose := False;
41end;
42
43procedure TForm_WhatLinksHere.FormShow(Sender: TObject);
44var
45  fileinfo: TFileInfo;
46  links: TLinks;
47  i: Integer;
48  fullname: String;
49  links_to: TDatLinkList;
50begin
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;
81end;
82
83procedure TForm_WhatLinksHere.list_fromDblClick(Sender: TObject);
84var
85  id: Integer;
86  box: TListBox;
87  name: String;
88begin
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;
98end;
99
100end.
Note: See TracBrowser for help on using the repository browser.