纸牌控件的编写(下)

constructor TZFPlayCard.Create(AOwner: TComponent);

var

  x, y: integer;

begin

  inherited Create(AOwner);

  FCardId := 1;

  cdtInit(x, y);

  SetBounds(0, 0, x, y);

  ControlStyle := [csClickEvents, csDoubleClicks];

  Enabled := True;

  Canvas.Brush.Style := bsClear;

  FGlyph := TBitMap.Create;

end;

 

destructor TZFPlayCard.Destroy;

begin

  FGlyph.Free;

  inherited;

end;

procedure TZFPlayCard.Paint;

begin

  inherited;

  ReDraw;

end;

 

procedure TZFPlayCard.ReDraw;

begin

  cdtDraw(Canvas.Handle, 0, 0, FCardId, Ord(FCardMode), clWhite);

  if FGlyph <> nil then

  begin

    canvas.StretchDraw(RECT(12, 11, 59, 85), FGlyph);

  end;

end;

 

procedure TZFPlayCard.SetCardId(const Value: TCardId);

begin

  FCardId := Value;

  ReDraw;

end;

 

procedure TZFPlayCard.SetCardMode(const Value: TCardMode);

begin

  FCardMode := Value;

  ReDraw;

end;

 

procedure TZFPlayCard.SetGlyph(const Value: TBitMap);

begin

  if value <> FGlyph then

    begin

      FGlyph.Assign(value);

      Invalidate;

    end;

end;

 

procedure TZFPlayCard.WMEraseBkgnd(var Message: TWMEraseBkgnd);

begin

  Message.Result:=1;

end;

 

end.

你可能感兴趣的:(VCL)