home *** CD-ROM | disk | FTP | other *** search
-
- {*******************************************************}
- { }
- { Delphi Visual Component Library }
- { }
- { Copyright (c) 1995,96 Borland International }
- { }
- {*******************************************************}
-
- unit DsgnWnds;
-
- interface
-
- uses Messages, SysUtils, Classes, Controls, Forms, LibIntf, DsgnIntf;
-
- type
- TDesignWindow = class(TForm)
- private
- FSelection: TComponentList;
- FOwner: TComponent;
- FDesigner: TFormDesigner;
- FActive: Boolean;
- FReserved: Byte;
- procedure ComponentRead(Component: TComponent);
- procedure ReaderSetName(Reader: TReader; Component: TComponent;
- var Name: string);
- procedure WMActivate(var Msg: TWMActivate); message WM_ACTIVATE;
- protected
- procedure Activated; dynamic;
- procedure ActivateInspector(Ch: Char);
- function ClipboardComponents: Boolean;
- procedure CopyComponents(Root: TComponent; Components: TComponentList);
- procedure PasteComponents(AOwner, AParent: TComponent;
- Components: TComponentList);
- procedure SetSelection(Components: TComponentList);
- function UniqueName(Component: TComponent): string; virtual; abstract;
- public
- constructor Create(AOwner: TComponent); override;
- destructor Destroy; override;
- procedure ComponentDeleted(Component: TComponent); virtual;
- function GetEditState: TEditState; virtual;
- procedure EditAction(Action: TEditAction); virtual;
- procedure FormClosed(AForm: TForm); virtual;
- procedure FormModified; virtual;
- procedure SelectionChanged(ASelection: TComponentList); virtual;
- property Active: Boolean read FActive;
- property Designer: TFormDesigner read FDesigner write FDesigner;
- end;
-
- implementation
-
- uses Windows, LibMain, Clipbrd;
-
- constructor TDesignWindow.Create(AOwner: TComponent);
- begin
- inherited Create(AOwner);
- RegisterDesignWindow(Self);
- SetBounds(200, AppBuilder.GetMainWindowSize.Bottom + 2, Width, Height);
- end;
-
- destructor TDesignWindow.Destroy;
- begin
- UnregisterDesignWindow(Self);
- inherited Destroy;
- end;
-
- procedure TDesignWindow.Activated;
- begin
- end;
-
- procedure TDesignWindow.WMActivate(var Msg: TWMActivate);
- begin
- inherited;
- FActive := Msg.Active <> 0;
- if FActive then
- begin
- AppBuilder.FormActivated;
- Activated;
- end;
- end;
-
- procedure TDesignWindow.ActivateInspector(Ch: Char);
- begin
- AppBuilder.ModalEdit(Ch, Self);
- end;
-
- function TDesignWindow.ClipboardComponents: Boolean;
- begin
- Result := Clipboard.HasFormat(CF_COMPONENTS) or
- (Clipboard.HasFormat(CF_TEXT) and PossibleStream(Clipboard.AsText));
- end;
-
- procedure TDesignWindow.ComponentDeleted(Component: TComponent);
- begin
- end;
-
- procedure TDesignWindow.CopyComponents(Root: TComponent; Components: TComponentList);
- var
- S: TMemoryStream;
- W: TWriter;
- I: Integer;
- begin
- S := TMemoryStream.Create;
- try
- W := TWriter.Create(S, 1024);
- try
- W.Root := Root;
- for I := 0 to Components.Count - 1 do
- begin
- W.WriteSignature;
- W.WriteComponent(TComponent(Components[I]));
- end;
- W.WriteListEnd;
- finally
- W.Free;
- end;
- CopyStreamToClipboard(S);
- finally
- S.Free;
- end;
- end;
-
- function TDesignWindow.GetEditState: TEditState;
- begin
- Result := [];
- end;
-
- procedure TDesignWindow.EditAction(Action: TEditAction);
- begin
- end;
-
- procedure TDesignWindow.FormClosed(AForm: TForm);
- begin
- end;
-
- procedure TDesignWindow.FormModified;
- begin
- end;
-
- procedure TDesignWindow.ComponentRead(Component: TComponent);
- begin
- FSelection.Add(Component);
- end;
-
- procedure TDesignWindow.ReaderSetName(Reader: TReader; Component: TComponent;
- var Name: string);
- begin
- if (Reader.Root = FOwner) and (FOwner.FindComponent(Name) <> nil) then
- Name := UniqueName(Component);
- end;
-
- procedure TDesignWindow.PasteComponents(AOwner, AParent: TComponent; Components: TComponentList);
- var
- S: TStream;
- R: TReader;
- begin
- S := GetClipboardStream;
- try
- R := TReader.Create(S, 1024);
- try
- R.OnSetName := ReaderSetName;
- FOwner := AOwner;
- FSelection := Components;
- R.ReadComponents(AOwner, AParent, ComponentRead);
- finally
- R.Free;
- end;
- finally
- S.Free;
- end;
- end;
-
- procedure TDesignWindow.SelectionChanged(ASelection: TComponentList);
- begin
- end;
-
- procedure TDesignWindow.SetSelection(Components: TComponentList);
- begin
- CompLib.SetSelection(Designer, Self, Components);
- end;
-
- end.
-