home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Chip 2001 October
/
Chip_2001-10_cd1.bin
/
zkuste
/
delphi
/
nastroje
/
d3456
/
KBMWABD.ZIP
/
WABD_FramesetEditor.pas
< prev
next >
Wrap
Pascal/Delphi Source File
|
2001-07-15
|
4KB
|
180 lines
unit WABD_FramesetEditor;
{$I kbmWABD.inc}
interface
uses
{$ifdef LEVEL6}
DesignIntf,
{$else}
DsgnIntf,
{$endif}
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, Buttons, WABD_Objects, ShellAPI;
type
TWABDFramesetEditor = class(TForm)
ChildrenBox: TListBox;
UpBut: TSpeedButton;
DownBut: TSpeedButton;
Label1: TLabel;
procedure FormDestroy(Sender: TObject);
procedure ChildrenBoxChange(Sender: TObject);
procedure UpButClick(Sender: TObject);
procedure DownButClick(Sender: TObject);
private
{ Private declarations }
FWABDFrameSet : TWABD_FrameSet;
protected
procedure ReflectedNotify(Sender: TObject; AComponent: TComponent; Operation: TOperation);
procedure ChildNameChanged(Sender: TObject; const OldName, NewName: string);
public
{ Public declarations }
{$ifdef LEVEL6}
MyDesigner : IDesigner;
{$else}
{$ifdef LEVEL5}
MyDesigner : IFormDesigner;
{$else}
{$ifdef LEVEL4}
MyDesigner : IFormDesigner;
{$else}
{$ifdef LEVEL3}
MyDesigner : TFormDesigner; // Delphi 3, C++ Builder 3
{$endif}
{$endif}
{$endif}
{$endif}
property WABDFrameset: TWABD_Frameset read FWABDFrameset write FWABDFrameset;
procedure Initialize;
end;
var
WABDFramesetEditor: TWABDFramesetEditor;
implementation
{$R *.DFM}
procedure TWABDFramesetEditor.Initialize;
var
c: TWABD_Object;
i:integer;
begin
Caption := 'WABD Frameset Designer - ' + WABDFrameset.Name;
Assert(MyDesigner<>nil, 'Designer = nil');
WABDFrameset.RefNotify := ReflectedNotify;
WABDFrameset.OnChildNameChanged := ChildNameChanged;
Assert(WABDFrameset<>nil, 'WABDFrameset = nil');
ChildrenBox.Items.Clear;
for i := 0 to WABDFrameset.ChildCount-1 do begin
c := WABDFrameset.Children[i];
Assert(c<>nil, 'c = nil');
ChildrenBox.Items.Add(c.Name);
end;
ChildrenBoxChange(Self);
end;
procedure TWABDFramesetEditor.ChildNameChanged(Sender: TObject; const OldName, NewName: string);
var
i : integer;
begin
i := ChildrenBox.Items.IndexOf(OldName);
if i<>-1 then ChildrenBox.Items[i] := NewName;
end;
// I had to do this hack because Delphi 3 won't let me compile with
// the DsgnWnds unit.
procedure TWABDFramesetEditor.ReflectedNotify(Sender: TObject; AComponent: TComponent; Operation: TOperation);
var
i : integer;
begin
if (Operation <> opRemove) then exit;
if AComponent=WABDFrameset then begin
WABDFrameset.RefNotify := nil;
WABDFrameset := nil;
Visible := False;
end;
i := ChildrenBox.Items.IndexOf(AComponent.Name);
if i<>-1 then begin
ChildrenBox.Items.Delete(i);
if ChildrenBox.Items.Count=0 then ChildrenBox.Items.Clear; // ComboBox Bug
ChildrenBoxChange(Self);
end;
end;
procedure TWABDFramesetEditor.FormDestroy(Sender: TObject);
begin
if WABDFrameset<>nil then WABDFrameset.RefNotify := nil;
end;
procedure TWABDFramesetEditor.ChildrenBoxChange(Sender: TObject);
var
c : TWABD_Object;
ni : integer;
begin
ni := ChildrenBox.ItemIndex;
UpBut.Enabled := ni<>-1;
DownBut.Enabled := ni<>-1;
if ni = -1 then exit;
if ni<>-1 then
begin
c := WABDFrameset.ChildByName(ChildrenBox.Items[ni]);
Assert(c<>nil, 'c = nil');
MyDesigner.SelectComponent(c);
end;
end;
procedure TWABDFramesetEditor.UpButClick(Sender: TObject);
var
c : TWABD_Object;
ni : integer;
n : string;
begin
ni := ChildrenBox.ItemIndex;
if ni=-1 then exit;
c := WABDFrameset.ChildByName(ChildrenBox.Items[ni]);
Assert(c<>nil, 'c = nil');
n := c.Name;
c.Order := c.Order-1;
MyDesigner.Modified;
Initialize;
ChildrenBox.ItemIndex := ChildrenBox.Items.IndexOf(n);
ChildrenBoxChange(Self);
end;
procedure TWABDFramesetEditor.DownButClick(Sender: TObject);
var
c : TWABD_Object;
ni : integer;
n : string;
begin
ni := ChildrenBox.ItemIndex;
if ni=-1 then exit;
c := WABDFrameset.ChildByName(ChildrenBox.Items[ni]);
Assert(c<>nil, 'c = nil');
n := c.Name;
c.Order := c.Order+1;
MyDesigner.Modified;
Initialize;
ChildrenBox.ItemIndex := ChildrenBox.Items.IndexOf(n);
ChildrenBoxChange(Self);
end;
end.