0

「タイル」のようなコンポーネントを設計しました。下または上をクリックしたときに色を変更する必要があります。これどうやってするの?

4

1 に答える 1

3

コンポーネントの色を設定するには、TControl で導入された MouseDown() および MouseUp() プロシージャをオーバーライドします。
コンポーネントに color プロパティがない場合は、Paint プロシージャをオーバーライドする必要があります。

type
  TMyComp = Class(TGraphicControl)
  private
    FColor: TColor;
  protected
    // ....
    Procedure Paint; override;
    procedure MouseDown(Button: TMouseButton; Shift: TShiftState;
      X, Y: Integer); override;
    procedure MouseUp(Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
      override;
  End;

implementation

{ TMyComp }

procedure TMyComp.MouseDown(Button: TMouseButton; Shift: TShiftState;
  X, Y: Integer);
begin
  inherited;
  if Button = mbLeft then
  begin
    FColor := clRed;
    invalidate;
  end;
end;

procedure TMyComp.MouseUp(Button: TMouseButton; Shift: TShiftState;
  X, Y: Integer);
begin
  inherited;
  if Button = mbLeft then
  begin
    FColor := clLime;
    invalidate;
  end;

end;

procedure TMyComp.Paint;
begin
  inherited;
  // ...
  Canvas.Brush.Color := FColor;
  Canvas.FillRect(BoundsRect);
  // ....
end;
于 2013-04-29T05:26:37.150 に答える