Ignore:
Timestamp:
Feb 29, 2016, 5:23:37 PM (8 years ago)
Author:
chronos
Message:
  • Modified: TForm title bar implemented using controls.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • os/trunk/Xvcl/Xvcl.Controls.pas

    r13 r14  
    3333    States: TKeyStateSet;
    3434  end;
     35
     36  TMouseNotifyEvent = procedure (Sender: TObject; Position: TPoint;
     37    Buttons: TMouseButtonSet) of object;
    3538
    3639  TControlCanvas = class(TCanvas)
     
    5760    FOnClick: TNotifyEvent;
    5861    FColor: TColor;
    59     FOnMouseDown: TNotifyEvent;
    60     FOnMouseUp: TNotifyEvent;
     62    FOnMouseDown: TMouseNotifyEvent;
     63    FOnMouseUp: TMouseNotifyEvent;
     64    FOnMouseMove: TMouseNotifyEvent;
    6165    FOnKeyPress: TNotifyEvent;
    6266    FFocused: Boolean;
     
    6973    function HandleMessage(Message: TMessage): Boolean; virtual;
    7074  public
    71     Move: TControlMove;
    7275    function ClientToScreen(Position: TPoint): TPoint; virtual;
    7376    function ScreenToClient(Position: TPoint): TPoint; virtual;
     
    8386    property Focused: Boolean read FFocused write SetFocused;
    8487    property OnClick: TNotifyEvent read FOnClick write FOnClick;
    85     property OnMouseDown: TNotifyEvent read FOnMouseDown write FOnMouseDown;
    86     property OnMouseUp: TNotifyEvent read FOnMouseUp write FOnMouseUp;
     88    property OnMouseDown: TMouseNotifyEvent read FOnMouseDown write FOnMouseDown;
     89    property OnMouseUp: TMouseNotifyEvent read FOnMouseUp write FOnMouseUp;
     90    property OnMouseMove: TMouseNotifyEvent read FOnMouseMove write FOnMouseMove;
    8791    property OnKeyPress: TNotifyEvent read FOnKeyPress write FOnKeyPress;
    8892  end;
     
    119123    procedure Paint; override;
    120124    property Caption: string read FCaption write SetCaption;
     125    constructor Create; override;
    121126  end;
    122127
     
    147152begin
    148153  inherited;
    149   Move := TControlMove.Create;
    150154  FColor := clWhite;
    151155end;
     
    153157destructor TControl.Destroy;
    154158begin
    155   Move.Destroy;
    156159  if Assigned(FCanvas) then FCanvas.Destroy;
    157160  inherited;
     
    176179begin
    177180  Result := False;
     181  if Message is TMessageMouseDown then
     182  with TMessageMouseDown(Message) do begin
     183    if Assigned(FOnMouseDown) then begin
     184      FOnMouseDown(Self, Position, Buttons);
     185      Result := True;
     186    end;
     187  end else
     188  if Message is TMessageMouseUp then
     189  with TMessageMouseUp(Message) do begin
     190    if Assigned(FOnMouseUp) then begin
     191      FOnMouseUp(Self, Position, Buttons);
     192      Result := True;
     193    end;
     194  end else
     195  if Message is TMessageMouseMove then
     196  with TMessageMouseMove(Message) do begin
     197    if Assigned(FOnMouseMove) then begin
     198      FOnMouseMove(Self, Position, Buttons);
     199      Result := True;
     200    end;
     201  end;
    178202end;
    179203
    180204procedure TControl.Paint;
    181205begin
     206  if Color <> clNone then
    182207  with Canvas do begin
    183208    Brush.Color := Color;
     
    189214begin
    190215  Result := Position.Substract(Bounds.TopLeft);
    191   if Assigned(Parent) then Result := Parent.ClientToScreen(Result);
     216  if Assigned(Parent) then Result := Parent.ScreenToClient(Result);
    192217end;
    193218
     
    220245begin
    221246  Result := False;
    222   if Message is TMessageMouseDown then begin
    223     if Assigned(FOnMouseDown) then FOnMouseDown(Self);
     247  if Message is TMessageMouseDown then
     248  with TMessageMouseDown(Message) do begin
     249    if Assigned(FOnMouseDown) then FOnMouseDown(Self, Position, Buttons);
    224250    Color := clGray;
    225251    Paint;
    226252    Result := True;
    227253  end else
    228   if Message is TMessageMouseUp then begin
    229     if Assigned(FOnMouseUp) then FOnMouseUp(Self);
     254  if Message is TMessageMouseUp then
     255  with TMessageMouseUp(Message) do begin
     256    if Assigned(FOnMouseUp) then FOnMouseUp(Self, Position, Buttons);
    230257    Color := clSilver;
    231258    Paint;
     
    321348      end;
    322349  end;
     350  if not Result then inherited;
    323351end;
    324352
     
    332360
    333361{ TLabel }
     362
     363constructor TLabel.Create;
     364begin
     365  inherited;
     366  Color := clNone;
     367end;
    334368
    335369procedure TLabel.Paint;
Note: See TracChangeset for help on using the changeset viewer.