[Back to DELPHI SWAG index] [Back to Main SWAG index] [Original]

    {****************************************************************}
    {Delphi 2.0 only                                                 }
    {AddBtn95 derives TRadioButton95 and TCheckBox95 from            }
    {                 TRadioButton And TCheckBox to Give them the    }
    {                 Additional Formatting Functionality found in   }
    {                 Windows 95                                     }
    {Added or changed properties :                                   }
    {  Alignment  : How the Text next to the button is aligned       }
    {  AlignmentBtn : Where the Button is positioned                 }
    {  LikePushButton : Does the control look Like a Push Button?    }
    {  VerticalAlignment : Where the text and button are positioned  }
    {  WordWrap : Wrap the text if the box is to narrow              }
    {****************************************************************}
    {Ver 1.0                                                         }
    {Copyright(c) 1996 PA van Lonkhuyzen                             }
    {e-mail : peterv@global.co.za                                    }
    {****************************************************************}

    unit addbtn95;

    interface

    uses
      Windows,  StdCtrls, Classes, controls;

    type
      TVAlignment = (vaTop,vaBottom,vaCenter);
      TCheckBox95 = class(TCheckBox)
      private
       fAlignment : TAlignment;
       fAlignmentBtn : TLeftRight;
       fLikePushButton : Boolean;
       fVerticalAlignment : TVAlignment;
       fWordWrap : Boolean;
      protected
        procedure createparams(var Params: TCreateParams); override;
        Procedure SetLikePushButton(ALikePushButton : Boolean);
        Procedure SetWordWrap(AWordWrap : Boolean);
        Procedure SetAlignment(AAlignment : TAlignment);
        Procedure SetAlignmentBtn(AAlignmentBtn : TLeftRight);
        Procedure SetVerticalAlignment(AVerticalAlignment : TVAlignment);
      public
        { Public declarations }
      published
       Property Alignment : TAlignment Read fAlignment Write SetAlignment;
       Property AlignmentBtn : TLeftRight Read fAlignmentBtn Write SetAlignmentBtn;
       Property LikePushButton : Boolean Read fLikePushButton Write SetLikePushButton;
       Property VerticalAlignment : TVAlignment Read fVerticalAlignment Write SetVerticalAlignment;
       Property WordWrap : Boolean Read fWordWrap Write SetWordWrap;
    end;

      TRadioButton95 = class(TRadioButton)
      private
       fAlignment : TAlignment;
       fAlignmentBtn : TLeftRight;
       fLikePushButton : Boolean;
       fVerticalAlignment : TVAlignment;
       fWordWrap : Boolean;
      protected
        procedure createparams(var Params: TCreateParams); override;
        Procedure SetLikePushButton(ALikePushButton : Boolean);
        Procedure SetWordWrap(AWordWrap : Boolean);
        Procedure SetAlignment(AAlignment : TAlignment);
        Procedure SetAlignmentBtn(AAlignmentBtn : TLeftRight);
        Procedure SetVerticalAlignment(AVerticalAlignment : TVAlignment);
      public
        { Public declarations }
      published
       Property Alignment : TAlignment Read fAlignment Write SetAlignment;
       Property AlignmentBtn : TLeftRight Read fAlignmentBtn Write SetAlignmentBtn;
       Property LikePushButton : Boolean Read fLikePushButton Write SetLikePushButton;
       Property VerticalAlignment : TVAlignment Read fVerticalAlignment Write SetVerticalAlignment;
       Property WordWrap : Boolean Read fWordWrap Write SetWordWrap;
    end;

    procedure Register;

    implementation
    procedure TRadioButton95.createparams(var Params: TCreateParams);
    begin
      Inherited createparams(Params);
      params.style:=params.style and not(BS_LEFT or BS_RIGHT or BS_CENTER OR
                                         BS_LEFTTEXT or BS_RIGHTBUTTON OR
                                         BS_TOP OR BS_BOTTOM OR BS_VCENTER);
      case fVerticalAlignment of
        vaTop : params.style:=params.style or BS_TOP;
        vaBottom : params.style:=params.style or BS_BOTTOM;
        else
          params.style:=params.style or BS_VCENTER;
      end;
      if fAlignmentBtn=taRightJustify then
        params.style:=params.style or BS_RIGHTBUTTON;
      case fAlignment of
        taLeftJustify : params.style:=params.style or BS_LEFT;
        taRightJustify : params.style:=params.style or BS_RIGHT;
        else params.style:=params.style or BS_CENTER;
      End;
      if fLikePushButton then
        params.style:=params.style or bs_pushLike;
      if fwordwrap then
        params.style:=params.style or bs_MultiLine;

    end;

    Procedure TRadioButton95.SetAlignment(AAlignment : TAlignment);
    Begin
       If (AAlignment <> fAlignment) then
       begin
         fAlignment := AAlignment;
         recreatewnd;
       end;
    End;

    Procedure TRadioButton95.SetAlignmentBtn(AAlignmentBtn : TLeftRight);
    Begin
       If (AAlignmentBtn <> fAlignmentBtn) then
       begin
         fAlignmentBtn := AAlignmentBtn;
         recreatewnd;
       end;
    End;

    Procedure TRadioButton95.SetLikePushButton(ALikePushButton : Boolean);
    Begin
       If (ALikePushButton <> fLikePushButton) then
       begin
         fLikePushButton := ALikePushButton;
         recreatewnd;
       end;
    End;

    Procedure TRadioButton95.SetWordWrap(AWordWrap : Boolean);
    Begin
       If (AWordWrap <> fWordwrap) then
       begin
         fWordwrap := AWordWrap;
         recreatewnd;
       end;
    End;

    Procedure TRadioButton95.SetVerticalAlignment(AVerticalAlignment : TVAlignment);
    Begin
       If (AVerticalAlignment <> fVerticalAlignment) then
       begin
         fVerticalAlignment := AVerticalAlignment;
         Recreatewnd;
       end;
    End;

    procedure TCheckBox95.createparams(var Params: TCreateParams);
    begin
      Inherited createparams(Params);
      params.style:=params.style and not(BS_LEFT or BS_RIGHT or BS_CENTER OR
                                         BS_LEFTTEXT or BS_RIGHTBUTTON OR
                                         BS_TOP OR BS_BOTTOM OR BS_VCENTER);
      case fVerticalAlignment of
        vaTop : params.style:=params.style or BS_TOP;
        vaBottom : params.style:=params.style or BS_BOTTOM;
        else
          params.style:=params.style or BS_VCENTER;
      end;
      if fAlignmentBtn=taRightJustify then
        params.style:=params.style or BS_RIGHTBUTTON;
      case fAlignment of
        taLeftJustify : params.style:=params.style or BS_LEFT;
        taRightJustify : params.style:=params.style or BS_RIGHT;
        else params.style:=params.style or BS_CENTER;
      End;
      if fLikePushButton then
        params.style:=params.style or bs_PushLike;
      if fwordwrap then
        params.style:=params.style or bs_MultiLine;

    end;

    Procedure TCheckBox95.SetAlignment(AAlignment : TAlignment);
    Begin
       If (AAlignment <> fAlignment) then
       begin
         fAlignment := AAlignment;
         recreatewnd;
       end;
    End;

    Procedure TCheckBox95.SetAlignmentBtn(AAlignmentBtn : TLeftRight);
    Begin
       If (AAlignmentBtn <> fAlignmentBtn) then
       begin
         fAlignmentBtn := AAlignmentBtn;
         recreatewnd;
       end;
    End;

    Procedure TCheckBox95.SetLikePushButton(ALikePushButton : Boolean);
    Begin
       If (ALikePushButton <> fLikePushButton) then
       begin
         fLikePushButton := ALikePushButton;
         recreatewnd;
       end;
    End;

    Procedure TCheckBox95.SetWordWrap(AWordWrap : Boolean);
    Begin
       If (AWordWrap <> fWordwrap) then
       begin
         fWordwrap := AWordWrap;
         recreatewnd;
       end;
    End;

    Procedure TCheckBox95.SetVerticalAlignment(AVerticalAlignment : TVAlignment);
    Begin
       If (AVerticalAlignment <> fVerticalAlignment) then
       begin
         fVerticalAlignment := AVerticalAlignment;
         Recreatewnd;
       end;
    End;

    procedure Register;
    begin
      RegisterComponents('Win95', [TCheckBox95,TRadioButton95]);
    end;

    end.

[Back to DELPHI SWAG index] [Back to Main SWAG index] [Original]