KvLabel是什么控件?
在哪里有下载?

解决方案 »

  1.   

    -------- KvLabel.pas --------//---------------------------------------------------------------------------
    //(R)CopyRight KivenSoft International ,inc 1999
    //单元名称:三维带超链接Label
    //作    者:李会文
    //开始时间:1999.03.21
    //最后修改:1999.06.29
    //---------------------------------------------------------------------------
    unit KvLabel;interfaceuses
      Windows, Classes, Graphics, StdCtrls, Messages, Controls;type
      TDrawType=(dtNone,dtLowered,dtRaised);  TKvLabel=class(TLabel)
      private
        FDrawType:TDrawType;
        FVCenter:boolean;
        FAboveColor:TColor;
        FOldColor:TColor;
        FLinkType:boolean;
        procedure SetDrawType(DrawType:TDrawType);
        procedure SetVCenter(Value:boolean);
        procedure CMMouseEnter(var Msg:TMessage);message CM_MOUSEENTER;
        procedure CMMouseLeave(var Msg:TMessage);message CM_MOUSELEAVE;
      protected
        procedure Paint;override;
        procedure DoDrawText(var Rect:TRect;Flags:Longint);override;
      published
        property DrawType:TDrawType read FDrawType write SetDrawType default dtLowered;  //三维显示方式
        property VCenter:boolean read FVCenter write SetVCenter default false;
        property LinkType:Boolean read FLinkType write FLinkType default false;  //是否允许超链接方式
        property AboveColor:TColor read FAboveColor write FAboveColor default clBlue;  //超链接方式为真时鼠标在上方时的字体颜色
      public
        constructor Create(AOwner:TComponent);override;
      end;procedure Register;implementationprocedure Register;
    begin
      RegisterComponents('Srm Project',[TKvLabel]);
    end;constructor TKvLabel.Create(AOwner:TComponent);
    begin
      inherited Create(AOwner);
      FDrawType:=dtLowered;
      FAboveColor:=clBlue;
      FVCenter:=false;
      FLinkType:=false;
    end;procedure TKvLabel.Paint;
    const
      Alignments:array[TAlignment] of Word=(DT_LEFT,DT_RIGHT,DT_CENTER);
    var
      Rect:TRect;
    begin
      with Canvas do
      begin
        if not Transparent then
        begin
          Brush.Color:=Self.Color;
          Brush.Style:=bsSolid;
          FillRect(ClientRect);
        end;
        Brush.Style:=bsClear;
        Rect:=ClientRect;
        if VCenter then DoDrawText(Rect,(DT_EXPANDTABS or DT_SINGLELINE or DT_VCENTER) or Alignments[Alignment])
        else DoDrawText(Rect,(DT_EXPANDTABS or DT_WORDBREAK) or Alignments[Alignment]);
      end;
    end;procedure TKvLabel.DoDrawText(var Rect:TRect;Flags:Longint);
    var
      Text:string;
      TempRect:TRect;
    begin
      Text:=GetLabelText;
      TempRect:=Rect;
      if (Flags and DT_CALCRECT <> 0) and ((Text='') or ShowAccelChar and
        (Text[1]='&') and (Text[2]=#0)) then Text:=Text + ' ';
      if not ShowAccelChar then Flags:=Flags or DT_NOPREFIX;
      Canvas.Font:=Font;
      if not Enabled then Canvas.Font.Color:=clGrayText
      else
      begin
        case DrawType of
          dtLowered:
            begin
              OffsetRect(TempRect,1,1);
              Canvas.Font.Color:=clWhite;
              DrawText(Canvas.Handle,pchar(Text),Length(Text),TempRect,Flags);
              OffsetRect( TempRect,-1,-1);
              Canvas.Font.Color:=Font.Color;
            end;
          dtRaised:
            begin
              OffsetRect( TempRect,-1,-1);
              Canvas.Font.Color:=clWhite;
              DrawText(Canvas.Handle,pchar(Text),Length(Text),TempRect,Flags);
              TempRect:=Rect;
              OffsetRect(TempRect,1,1);
              Canvas.Font.Color:=Font.Color;
            end;
        end;
      end;
      DrawText(Canvas.Handle,PChar(Text),Length(Text),TempRect,Flags);
      if (Enabled) and (FDrawType<>dtNone) then
      begin
        Rect.Top:=Rect.Top-1;
        Rect.Left:=Rect.Left-1;
      end;
    end;procedure TKvLabel.SetDrawType(DrawType:TDrawType);
    begin
      FDrawType:=DrawType;
      Invalidate;
    end;procedure TKvLabel.SetVCenter(Value:Boolean);
    begin
      FVCenter:=Value;
      WordWrap:=not Value;
      Invalidate;
    end;procedure TKvLabel.CMMouseEnter(var Msg:TMessage);
    begin
      if FLinkType then
      begin
        Cursor:=crHandPoint;
        FOldColor:=Font.Color;
        Font.Color:=FAboveColor;
        Font.Style:=Font.Style+[fsUnderline];
      end;
    end;procedure TKvLabel.CMMouseLeave(var Msg:TMessage);
    begin
      if FLinkType then
      begin
        Cursor:=crDefault;
        Font.Color:=FOldColor;
        Font.Style:=Font.Style-[fsUnderline];
      end;
    end;end.
      

  2.   

    -------- Kvlabel.dcr --------
    //由于是dcr文件我将的16进制代码贴出0000000020000000FFFF0000FFFF0000000000000000000000000000000000008801000030000000FFFF020054004B0056004C004100420045004C0000000000000000003010190400000000000000002800000018000000180000000100040000000000200100000000000000000000000000001000000000000000000080000080000000808000800000008000800080800000C0C0C000808080000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF0033333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333333FFFF3333333FFFF333333330000F3333330000F33333333300F333333330083333333333800F333333000F3333333333300833333800833333333333380000000000F333333333333300F333300833333333333333800F33000F333333333333333008380083333333333333333800F000F3333333333333333300000833333333333333333330000F333333333333333333000033333333333333333333333333333333333303303033033003303030003303033030303030303030303300333030303303300330003303033333333333333333333303303033333333333333333