Componentes.Terceros.jvcl/official/3.36/examples/JvDesigner/Main.pas
2009-02-27 12:23:32 +00:00

158 lines
3.9 KiB
ObjectPascal

unit Main;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ToolWin, StdCtrls, ComCtrls, ExtCtrls, Menus, ImgList,
JvDesignSurface, JvDesignUtils;
type
TMainForm = class(TForm)
ToolBar1: TToolBar;
LabelButton: TToolButton;
PanelButton: TToolButton;
SelectButton: TToolButton;
OpenDialog: TOpenDialog;
SaveDialog: TSaveDialog;
ButtonButton: TToolButton;
ImageList1: TImageList;
MainMenu1: TMainMenu;
File1: TMenuItem;
Active1: TMenuItem;
N1: TMenuItem;
Open1: TMenuItem;
Save1: TMenuItem;
ImageButton: TToolButton;
New1: TMenuItem;
N2: TMenuItem;
csDesigning1: TMenuItem;
WindowProcHook1: TMenuItem;
N3: TMenuItem;
Rules1: TMenuItem;
Grid1: TMenuItem;
N4: TMenuItem;
VSSelector1: TMenuItem;
DelphiSelector1: TMenuItem;
JvDesignScrollBox1: TJvDesignScrollBox;
JvDesignPanel: TJvDesignPanel;
procedure FormCreate(Sender: TObject);
procedure ActiveButtonClick(Sender: TObject);
procedure OpenButtonClick(Sender: TObject);
procedure SaveButtonClick(Sender: TObject);
procedure PaletteButtonClick(Sender: TObject);
procedure New1Click(Sender: TObject);
procedure HookClick(Sender: TObject);
procedure RulesClick(Sender: TObject);
procedure JvDesignPanelGetAddClass(Sender: TObject; var ioClass: String);
procedure JvDesignPanelPaint(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
DesignClass: string;
StickyClass: Boolean;
end;
var
MainForm: TMainForm;
implementation
uses
JvDesignImp;
{$R *.dfm}
{ TMainForm }
procedure TMainForm.FormCreate(Sender: TObject);
begin
OpenDialog.InitialDir := ExtractFilePath(Application.ExeName);
SaveDialog.InitialDir := OpenDialog.InitialDir;
JvDesignPanel.Surface.Active := true;
end;
procedure TMainForm.JvDesignPanelGetAddClass(Sender: TObject;
var ioClass: String);
begin
ioClass := DesignClass;
if not StickyClass then
begin
DesignClass := '';
SelectButton.Down := true;
end;
end;
procedure TMainForm.PaletteButtonClick(Sender: TObject);
const
cClasses: array[0..4] of string = ( '', 'TButton', 'TLabel', 'TPanel',
'TImage' );
begin
StickyClass := (GetKeyState(VK_SHIFT) < 0);
DesignClass := cClasses[TControl(Sender).Tag];
end;
procedure TMainForm.New1Click(Sender: TObject);
begin
JvDesignPanel.Clear;
end;
procedure TMainForm.OpenButtonClick(Sender: TObject);
begin
if OpenDialog.Execute then
JvDesignPanel.LoadFromFile(OpenDialog.Filename);
end;
procedure TMainForm.SaveButtonClick(Sender: TObject);
begin
if SaveDialog.Execute then
JvDesignPanel.SaveToFile(SaveDialog.Filename);
end;
procedure TMainForm.ActiveButtonClick(Sender: TObject);
begin
JvDesignPanel.Active := Active1.Checked;
JvDesignPanel.Invalidate;
end;
procedure TMainForm.HookClick(Sender: TObject);
begin
JvDesignPanel.Active := false;
if WindowProcHook1.Checked then
JvDesignPanel.Surface.MessengerClass := TJvDesignWinControlHookMessenger
else
JvDesignPanel.Surface.MessengerClass := TJvDesignDesignerMessenger;
JvDesignPanel.Active := true;
JvDesignPanel.Invalidate;
end;
procedure TMainForm.RulesClick(Sender: TObject);
begin
if Rules1.Checked then
begin
JvDesignPanel.Color := clWhite;
JvDesignPanel.DrawRules := true;
JvDesignPanel.OnPaint := nil;
end else
begin
JvDesignPanel.Color := clBtnFace;
JvDesignPanel.DrawRules := false;
JvDesignPanel.OnPaint := JvDesignPanelPaint;
end;
JvDesignPanel.Invalidate;
end;
procedure TMainForm.JvDesignPanelPaint(Sender: TObject);
begin
with JvDesignPanel do
DesignPaintGrid(Canvas, ClientRect, Color);
end;
initialization
RegisterClass(TButton);
RegisterClass(TLabel);
RegisterClass(TPanel);
RegisterClass(TImage);
end.