Buttons

Extra button formatting functionality found in Win95.

Contributor: PA VAN LONKHUYZEN





{****************************************************************}

{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.

 

Share this article!

Follow us!

Find more helpful articles: