diff --git a/editor/editor2/AMX.ico b/editor/editor2/AMX.ico new file mode 100755 index 00000000..a530d9e1 Binary files /dev/null and b/editor/editor2/AMX.ico differ diff --git a/editor/editor2/CorelButton.dcr b/editor/editor2/CorelButton.dcr new file mode 100755 index 00000000..ef31d5d3 Binary files /dev/null and b/editor/editor2/CorelButton.dcr differ diff --git a/editor/editor2/CorelButton.pas b/editor/editor2/CorelButton.pas new file mode 100755 index 00000000..ba1ff51d --- /dev/null +++ b/editor/editor2/CorelButton.pas @@ -0,0 +1,300 @@ +(** + * TCorelButton v1.0 + * --------------------------------------------------------------------------- + * A standard TButton which mimic the buttons used in the new Corel products + * (e.g. WordPerfect Suite and Corel Photopaint). + * + * Copyright 1998, Peter Theill. All Rights Reserved. + * + * This component can be freely used and distributed in commercial and private + * environments, provied this notice is not modified in any way and there is + * no charge for it other than nomial handling fees. Contact me directly for + * modifications to this agreement. + * ---------------------------------------------------------------------------- + * Feel free to contact me if you have any questions, comments or suggestions + * at peter@conquerware.dk + * + * The latest version will always be available on the web at: + * http://www.conquerware.dk/delphi/ + * + * See CorelButton.txt for notes, known issues and revision history. + * ---------------------------------------------------------------------------- + * Last modified: September 6, 1998 + * ---------------------------------------------------------------------------- + *) +unit CorelButton; + +interface + +uses + Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, + StdCtrls; + +type + TCorelButton = class(TButton) + private + FCanvas: TCanvas; + IsFocused: Boolean; + + FIsMouseOver: Boolean; + FCanSelect: Boolean; + + procedure CNMeasureItem(var Msg: TWMMeasureItem); message CN_MEASUREITEM; + procedure CNDrawItem(var Msg: TWMDrawItem); message CN_DRAWITEM; + procedure CMFontChanged(var Message: TMessage); message CM_FONTCHANGED; + procedure CMEnabledChanged(var Message: TMessage); message CM_ENABLEDCHANGED; + procedure WMLButtonDblClk(var Message: TWMLButtonDblClk); message WM_LBUTTONDBLCLK; + + procedure CMMouseEnter(var Message: TMessage); message CM_MOUSEENTER; + procedure CMMouseLeave(var Message: TMessage); message CM_MOUSELEAVE; + + procedure DrawItem(const DrawItemStruct: TDrawItemStruct); + procedure SetCanSelect(const Value: Boolean); + + protected + procedure CreateParams(var Params: TCreateParams); override; + + procedure SetButtonStyle(ADefault: Boolean); override; + + public + constructor Create(AOwner: TComponent); override; + destructor Destroy; override; + + published + property CanSelect: Boolean read FCanSelect write SetCanSelect default True; + + end; + +procedure Register; + +implementation + +constructor TCorelButton.Create(AOwner: TComponent); +begin + + { Do standard stuff } + inherited Create(AOwner); + + FCanvas := TCanvas.Create; + + FIsMouseOver := False; + + { Set width and height of button } + Width := 75; + Height := 23; + +end; + +destructor TCorelButton.Destroy; +begin + FCanvas.Free; + + inherited Destroy; +end; + +procedure TCorelButton.CMMouseEnter(var Message: TMessage); +begin + + if (not FIsMouseOver) then + Invalidate; + +end; + +procedure TCorelButton.CMMouseLeave(var Message: TMessage); +begin + + if (FIsMouseOver) then + Invalidate; + +end; + +procedure TCorelButton.CNMeasureItem(var Msg: TWMMeasureItem); +begin + with Msg.MeasureItemStruct^ do begin + itemWidth := Width; + itemHeight := Height; + end; + Msg.Result := 1; +end; + +procedure TCorelButton.CNDrawItem(var Msg: TWMDrawItem); +begin + DrawItem(Msg.DrawItemStruct^); + Msg.Result := 1; +end; + +procedure TCorelButton.DrawItem(const DrawItemStruct: TDrawItemStruct); +var + IsDown, IsDefault: Boolean; + R: TRect; +// Flags: Longint; + CursorPos: TPoint; + BtnRect: TRect; + +begin + + FCanvas.Handle := DrawItemStruct.hDC; + try + R := ClientRect; + + with DrawItemStruct do begin + IsDown := (itemState and ODS_SELECTED) <> 0; + IsDefault := (itemState and ODS_FOCUS) <> 0; + end; + + GetCursorPos(CursorPos); + BtnRect.TopLeft := Parent.ClientToScreen(Point(Left, Top)); + BtnRect.BottomRight := Parent.ClientToScreen(Point(Left + Width, + Top + Height)); + FIsMouseOver := PtInRect(BtnRect, CursorPos); + +// Flags := DFCS_BUTTONPUSH or DFCS_ADJUSTRECT; +// if IsDown then Flags := Flags or DFCS_PUSHED; +// if DrawItemStruct.itemState and ODS_DISABLED <> 0 then +// Flags := Flags or DFCS_INACTIVE; + + FCanvas.Brush.Color := clBtnFace; + + if {(csDesigning in ComponentState) OR} (IsDefault) or (FCanSelect) and (IsFocused) then begin + + FCanvas.Pen.Color := clWindowText; + FCanvas.Pen.Width := 1; + FCanvas.Brush.Style := bsSolid; + FCanvas.Rectangle(R.Left, R.Top, R.Right, R.Bottom); + + InflateRect(R, -1, -1); + + end; + + FCanvas.FillRect(R); + + if (csDesigning in ComponentState) OR (FIsMouseOver) then begin + + FCanvas.Pen.Color := clWindowText; + FCanvas.MoveTo(R.Right-1, R.Top); + FCanvas.LineTo(R.Right-1, R.Bottom-1); + FCanvas.LineTo(R.Left-1, R.Bottom-1); + + FCanvas.Pen.Color := clBtnHighlight; + FCanvas.MoveTo(R.Left, R.Bottom-2); + FCanvas.LineTo(R.Left, R.Top); + FCanvas.LineTo(R.Right-1, R.Top); + + FCanvas.Pen.Color := clBtnShadow; + FCanvas.MoveTo(R.Right-2, R.Top+1); + FCanvas.LineTo(R.Right-2, R.Bottom-2); + FCanvas.LineTo(R.Left, R.Bottom-2); + + end else begin + + FCanvas.Pen.Color := clBtnHighlight; + FCanvas.Pen.Width := 1; + FCanvas.MoveTo(R.Left, R.Bottom-2); + FCanvas.LineTo(R.Left, R.Top); + FCanvas.LineTo(R.Right-1, R.Top); + + FCanvas.Pen.Color := clBtnShadow; + FCanvas.LineTo(R.Right-1, R.Bottom-1); + FCanvas.LineTo(R.Left-1, R.Bottom-1); + + end; + + if {(csDesigning in ComponentState) OR} (IsDown) then begin + + FCanvas.Brush.Color := clBtnFace; + FCanvas.FillRect(R); + + FCanvas.Pen.Color := clBtnShadow; + FCanvas.Pen.Width := 1; + FCanvas.MoveTo(R.Left, R.Bottom-2); + FCanvas.LineTo(R.Left, R.Top); + FCanvas.LineTo(R.Right-1, R.Top); + + FCanvas.Pen.Color := clBtnHighlight; + FCanvas.LineTo(R.Right-1, R.Bottom-1); + FCanvas.LineTo(R.Left-1, R.Bottom-1); + + end; + + if {(csDesigning in ComponentState) OR} (IsFocused) and (IsDefault) and (FCanSelect) then begin + + InflateRect(R, -3, -3); + FCanvas.Pen.Color := clWindowFrame; + FCanvas.Brush.Color := clBtnFace; + DrawFocusRect(FCanvas.Handle, R); + + end; + + if (IsDown) then + OffsetRect(R, 1, 1); + + { Draw caption of button } + with FCanvas do begin + FCanvas.Font := Self.Font; + Brush.Style := bsClear; + Font.Color := clBtnText; + if Enabled or ((DrawItemStruct.itemState and ODS_DISABLED) = 0) then begin + DrawText(Handle, PChar(Caption), Length(Caption), R, DT_CENTER or + DT_VCENTER or DT_SINGLELINE); + end else begin + OffsetRect(R, 1, 1); + Font.Color := clBtnHighlight; + DrawText(Handle, PChar(Caption), Length(Caption), R, DT_CENTER or + DT_VCENTER or DT_SINGLELINE); + OffsetRect(R, -1, -1); + Font.Color := clBtnShadow; + DrawText(Handle, PChar(Caption), Length(Caption), R, DT_CENTER or + DT_VCENTER or DT_SINGLELINE); + end; + end; + + finally + FCanvas.Handle := 0; + end; +end; + +procedure TCorelButton.CMFontChanged(var Message: TMessage); +begin + inherited; + Invalidate; +end; + +procedure TCorelButton.CMEnabledChanged(var Message: TMessage); +begin + inherited; + Invalidate; +end; + +procedure TCorelButton.WMLButtonDblClk(var Message: TWMLButtonDblClk); +begin + Perform(WM_LBUTTONDOWN, Message.Keys, Longint(Message.Pos)); +end; + +procedure TCorelButton.SetButtonStyle(ADefault: Boolean); +begin + + if ADefault <> IsFocused then begin + IsFocused := ADefault; + Refresh; + end; +end; + +procedure TCorelButton.CreateParams(var Params: TCreateParams); +begin + inherited CreateParams(Params); + Params.Style := Params.Style OR BS_OWNERDRAW; +end; + + +procedure Register; +begin + RegisterComponents('Standard', [TCorelButton]); +end; + +procedure TCorelButton.SetCanSelect(const Value: Boolean); +begin + FCanSelect := Value; + Repaint; +end; + +end. diff --git a/editor/editor2/Grey.ico b/editor/editor2/Grey.ico new file mode 100755 index 00000000..5305fa71 Binary files /dev/null and b/editor/editor2/Grey.ico differ diff --git a/editor/editor2/Logo.jpg b/editor/editor2/Logo.jpg new file mode 100755 index 00000000..dd5f935e Binary files /dev/null and b/editor/editor2/Logo.jpg differ diff --git a/editor/editor2/Red.ico b/editor/editor2/Red.ico new file mode 100755 index 00000000..eab9062d Binary files /dev/null and b/editor/editor2/Red.ico differ diff --git a/editor/editor2/White.ico b/editor/editor2/White.ico new file mode 100755 index 00000000..286ba24e Binary files /dev/null and b/editor/editor2/White.ico differ diff --git a/editor/editor2/Yellow.ico b/editor/editor2/Yellow.ico new file mode 100755 index 00000000..f81cb4a5 Binary files /dev/null and b/editor/editor2/Yellow.ico differ diff --git a/editor/editor2/del.bat b/editor/editor2/del.bat new file mode 100755 index 00000000..9e93b247 --- /dev/null +++ b/editor/editor2/del.bat @@ -0,0 +1,11 @@ +del .\*.~pas +del .\*.dcu +del .\*.~ddp +del .\*.ddp +del .\*.~dpr +del .\*.~dfm +del .\*.~dpr +del .\*.map +del .\*.drc +del .\*.~xfm +upx AMXX_Edit_v2.exe \ No newline at end of file