В стандартном компоненте всегда присутствует диапазон выбора (см. на рисунке нижний TrackBar). К сожалению, в DELPHI не предусмотрена возможность его отключения. Если нет необходимости в использовании диапазона выбора, то поможет небольшая доработка компонента.
unit NTrackBar; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, ComCtrls, CommCtrl; type TNTrackBar = class(TTrackBar) private FSelRangeVisible: Boolean; procedure SetSelRangeVisible(const Value: Boolean); protected procedure CreateParams(var Params: TCreateParams); override; public constructor Create(AOwner: TComponent); override; published property SelRangeVisible: Boolean read FSelRangeVisible write SetSelRangeVisible; end; procedure Register; implementation { TNTrackBar } constructor TNTrackBar.Create(AOwner: TComponent); begin inherited Create(AOwner); FSelRangeVisible:= False; ThumbLength:= 18; end; procedure TNTrackBar.CreateParams(var Params: TCreateParams); begin inherited CreateParams(Params); with Params do begin if not FSelRangeVisible then Style:= Style xor TBS_ENABLESELRANGE else Style:= Style or TBS_ENABLESELRANGE; end; end; procedure TNTrackBar.SetSelRangeVisible(const Value: Boolean); begin if FSelRangeVisible <> Value then begin FSelRangeVisible:= Value; RecreateWnd; end; end; procedure Register; begin RegisterComponents('Controls', [TNTrackBar]); end; end. |
C уважением, VS [001692]