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.