转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 软件开发 >> Delphi程序 >> 正文
特色按钮         ★★★★

特色按钮

作者:闵涛 文章来源:闵涛的学习笔记 点击数:1427 更新时间:2009/4/23 18:44:12
         end;
       else FRgn := CreateRectRgn(1 + n, 1 + n, Width - n - 1, Height - n - 1);
    end;//case
    FrameRgn(Handle, FRgn, Brush.Handle, 1, 1);
  end;
end;

procedure TDsFancyButton.WriteCaption;
var
  Flags: Word;
  BtnL, BtnT, BtnR, BtnB: Integer;
  R, TR: TRect;
begin
  R := ClientREct; TR := ClientRect;
  Canvas.Font := Self.Font;
  Canvas.Brush.Style := bsClear;
  Flags := DT_CENTER or DT_SINGLELINE;
  Canvas.Font := Font;

  if FIsDown then FTextColor := FrameColor
  else FTextColor := Self.Font.Color;

  with canvas do
    begin
      BtnT := (Height - TextHeight(Caption)) div 2;
      BtnB := BtnT + TextHeight(Caption);
      BtnL := (Width - TextWidth(Caption)) div 2;
      BtnR := BtnL + TextWidth(Caption);
      TR := Rect(BtnL, BtnT, BtnR, BtnB);
      R := TR;
      if ((TextStyle = txLowered) and FIsDown ) or
         ((TextStyle = txRaised) and not FIsDown) then
      begin
        Font.Color := clBtnHighLight;
        OffsetRect(TR, -1 + 1, -1 + 1);
        DrawText(Handle, PChar(Caption), Length(Caption), TR, Flags);
      end
      else if ((TextStyle = txLowered) and not FIsDown) or
              ((TextStyle = txRaised) and FIsDown) then
           begin
             Font.Color := clBtnHighLight;
             OffsetRect(TR, + 2, + 2);
             DrawText(Handle, PChar(Caption), Length(Caption), TR, Flags);
           end
           else if (TextStyle = txShadowed) and FIsDown then
                begin
                  Font.Color := clBtnShadow;
                  OffsetREct(TR, 3 + 1, 3 + 1);
                  DrawText(Handle, PChar(Caption), Length(Caption), TR, Flags);
                end
                else if (TextStyle = txShadowed) and not FIsDown then
                begin
                  Font.Color := clBtnShadow;
                  OffsetRect(TR, 2 + 1, 2 + 1);
                  DrawText(Handle, PChar(Caption), Length(Caption), TR, Flags);
                end;

      if Enabled then Font.Color := FTextColor//self.Font.Color
      else if (TextStyle = txShadowed) and not Enabled then
        Font.Color := clBtnFace
      else Font.Color := clBtnShadow;
      if FIsDown then OffsetRect(R, 1, 1)
      else OffsetRect(R, -1, -1);
      DrawText(Handle, PChar(Caption), Length(Caption), R, Flags);
    end;
end;

procedure TDsFancyButton.SetButtonColor(value: TColor);
begin
  if value <> FButtonColor then
    begin FButtonColor := value ; Invalidate; end;
end;

procedure TDsFancyButton.WMLButtonDown(var message: TWMLButtonDown);
begin
  if not PtInRegion(MRgn, message.xPos, message.yPos) then Exit;
  FIsDown := True;
  Paint;
  inherited;
end;

procedure TDsFancyButton.WMLButtonUp(var message: TWMLButtonUp);
begin
  if not FIsDown then Exit;
  FIsDown := False;
  paint;
  inherited;
end;

procedure TDsFancyButton.SetShape(value: TShape);
begin
  if value <> FShape then
    begin FShape := value; Invalidate; end;
end;

procedure TDsFancyButton.SetTextStyle(value: TTextStyle);
begin
  if value<>FTextStyle then
    begin  FTextStyle := value; Invalidate; end;
end;

procedure TDsFancyButton.SetFrameColor(value: TColor);
begin
  if Value<>FFrameColor then
    begin FFrameColor := Value; Invalidate;end;
end;

procedure TDsFancyButton.SetFrameWidth(Value: Integer);
var
  w: integer;
begin
  if Width<height then w := Width else w := Height;
  if Value<>FFrameWidth then FFrameWidth := value;
  if FFrameWidth < 4 then FFrameWidth := 4;
  if FFrameWidth >(w div 2) then FFrameWidth := (w div 2);
  Invalidate;
end;

procedure TDsFancyButton.SetCornerRadius(Value: integer);
var
  w: integer;
begin
  if Width<Height then w := Width else w := Height;
  if value<>FCornerRadius then FCornerRadius := value;
  if FCornerRadius<3 then FCornerRadius := 3;
  if FCornerRadius>w then FCornerRadius := w;
  Invalidate;
end;

procedure TDsFancyButton.CMEnabledChanged(var message: Tmessage);
begin
  inherited;
  invalidate;
end;

procedure TDsFancyButton.CMTextChanged(var message: TMessage);
begin
  Invalidate;
end;

procedure TDsFancyButton.CMDialogChar(var message:TCMDialogChar);
begin
  With Message do
    if IsAccel (CharCode, Caption) and Enabled then
      begin  Click; Result := 1 ;end
    else inherited;
end;

procedure TDsFancyButton.WMSize(var Message: TWMSize);
begin
  inherited;
  if width>300 then width := 300;
  if Height>300 then Height := 300;
end;

procedure TDsFancyButton.Click;
begin
  FIsDown := False;
  Invalidate;
  inherited Click;
end;

procedure Register;
begin
  RegisterComponents(''''WYM COMPONENT'''',[TDsFancyButton]);
end;

end.

上一页  [1] [2] 


没有相关教程
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · C语言系列  · VB.NET程序
    · JAVA开发  · Delphi程序
    · 脚本语言
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台