Update of /cvsroot/jvcl/dev/JVCL3/examples/JvWndProcHook In directory sc8-pr-cvs1:/tmp/cvs-serv5637/JVCL3/examples/JvWndProcHook Added Files: JvWndProcHookDemoMainFormU.dfm JvWndProcHookDemoMainFormU.pas WndProcHookDemo.dof WndProcHookDemo.dpr WndProcHookDemo.res Log Message: - Copied jvcl/devtools and jvcl/examples dev/JVCL3 - Copied JVCLConvert *.dat files to dev/JVCL3/converter --- NEW FILE: JvWndProcHookDemoMainFormU.dfm --- object JvWndProcHookDemoMainForm: TJvWndProcHookDemoMainForm Left = 346 Top = 90 Width = 653 Height = 533 Caption = 'JvCaptionButton Demo' Color = clBtnFace Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -11 Font.Name = 'MS Sans Serif' Font.Style = [] OldCreateOrder = False PixelsPerInch = 96 TextHeight = 13 object Label1: TLabel Left = 24 Top = 16 Width = 589 Height = 80 Caption = 'This demo shows that the new RegisterWndProcHook method in JvWnd' + 'ProcHook can'#13#10'handle several components subclassing the same con' + 'trol witout losing track of the'#13#10'original WndProc regardless of ' + 'the order of registration/unregistration'#13#10'It also shows that the' + ' WndProc link(s) are unaffected by RecreateWnd'#13#10'(which destroys ' + 'the old window handle)' Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -13 Font.Name = 'MS Sans Serif' Font.Style = [fsBold] ParentFont = False end object btnAdd: TButton Left = 16 Top = 120 Width = 75 Height = 25 Caption = '&Add' TabOrder = 0 OnClick = btnAddClick end object btnDelete: TButton Left = 16 Top = 152 Width = 75 Height = 25 Caption = '&Delete' TabOrder = 1 OnClick = btnDeleteClick end object btnRecreateWnd: TButton Left = 16 Top = 184 Width = 75 Height = 25 Caption = 'Recreate&Wnd' TabOrder = 2 OnClick = btnRecreateWndClick end object lbButtons: TListBox Left = 112 Top = 120 Width = 505 Height = 353 Anchors = [akLeft, akTop, akRight, akBottom] ItemHeight = 13 TabOrder = 3 end end --- NEW FILE: JvWndProcHookDemoMainFormU.pas --- unit JvWndProcHookDemoMainFormU; interface uses Windows, Messages, SysUtils, Classes, Controls, Forms, Dialogs, StdCtrls, JvCaptionButton ; type TJvWndProcHookDemoMainForm = class(TForm) btnAdd: TButton; btnDelete: TButton; btnRecreateWnd: TButton; lbButtons: TListBox; Label1: TLabel; procedure btnAddClick(Sender: TObject); procedure btnDeleteClick(Sender: TObject); procedure btnRecreateWndClick(Sender: TObject); private { Private declarations } FButtonCount: integer; procedure DoButtonClick(Sender: TObject); function UniqueName(const BaseName: string): string; end; var JvWndProcHookDemoMainForm: TJvWndProcHookDemoMainForm; implementation {$R *.dfm} procedure TJvWndProcHookDemoMainForm.DoButtonClick(Sender: TObject); begin Caption := Format('Button "%s" clicked', [(Sender as TJvCaptionButton).Caption]); end; function TJvWndProcHookDemoMainForm.UniqueName(const BaseName: string): string; var i: integer; begin i := 1; Result := BaseName + IntToStr(i); while FindComponent(Result) <> nil do begin Inc(i); Result := BaseName + IntToStr(i); if i > 2000 then raise Exception.Create('Unable to create unique name!'); end; end; procedure TJvWndProcHookDemoMainForm.btnAddClick(Sender: TObject); var b: TJvCaptionButton; begin B := TJvCaptionButton.Create(self); B.OnClick := DoButtonClick; B.Caption := Char(Ord(FButtonCount) + Ord('A')); B.Name := UniqueName('JvCaptionButton'); B.ButtonLeft := B.ButtonLeft + FButtonCount * B.ButtonWidth + 2; lbButtons.Items.AddObject(B.Caption,B); Inc(FButtonCount); end; procedure TJvWndProcHookDemoMainForm.btnDeleteClick(Sender: TObject); var i: integer; begin i := lbButtons.ItemIndex; if (i > -1) then begin TJvCaptionButton(lbButtons.Items.Objects[i]).Free; lbButtons.Items.Delete(i); end; if i >= lbButtons.Items.Count then Dec(i); lbButtons.ItemIndex := i; if lbButtons.Items.Count = 0 then FButtonCount := 0; end; procedure TJvWndProcHookDemoMainForm.btnRecreateWndClick(Sender: TObject); begin RecreateWnd; end; end. --- NEW FILE: WndProcHookDemo.dof --- [Directories] OutputDir=..\..\Bin UnitOutputDir=..\..\Dcu SearchPath=..\..\Source;..\..\Common --- NEW FILE: WndProcHookDemo.dpr --- program WndProcHookDemo; uses Forms, JvWndProcHookDemoMainFormU in 'JvWndProcHookDemoMainFormU.pas' {JvWndProcHookDemoMainForm}; {$R *.res} begin Application.CreateForm(TJvWndProcHookDemoMainForm, JvWndProcHookDemoMainForm); Application.CreateForm(TJvWndProcHookDemoMainForm, JvWndProcHookDemoMainForm); Application.Initialize; Application.Run; end. --- NEW FILE: WndProcHookDemo.res --- (This appears to be a binary file; contents omitted.) |