:: MVP ::
|
|
:: RSS ::
|
|
|
Как создать TrackBar, в котором вместо широкой белой полоски с ползунком была бы тонкая линия?
// В примере создается компонент, унаследованный от TTrackbar
// который переопределяет метод CreateParams и убират флаг
// TBS_ENABLESELRANGE из Style. Константа TBS_ENABLESELRANGE
// обьявлена в модуле CommCtrl
uses
{...,} CommCtrl, ComCtrls;
type TMyTrackBar = class(TTrackBar)
public
procedure CreateParams(var Params: TCreateParams); override;
end;
var
Form1: TForm1;
MyTrackbar: TMyTrackbar;
implementation
{ TMyTrackBar }
procedure TMyTrackBar.CreateParams(var Params: TCreateParams);
begin
inherited;
Params.Style := Params.Style and not TBS_ENABLESELRANGE;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
MyTrackBar := TMyTrackbar.Create( Form1 );
MyTrackbar.Parent := Form1;
MyTrackbar.Left := 10;
MyTrackbar.Top := 10;
MyTrackbar.Width := 150;
MyTrackbar.Height := 45;
MyTrackBar.Visible := true;
end;
|
Как изменить положение ползунка TrackBar кликом мыши?
type
TTrackBar = class(Vcl.ComCtrls.TTrackBar)
private
procedure DoMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
end;
TForm1 = class(TForm)
TrackBar1: TTrackBar;
{...}
end;
implementation
{$R *.dfm}
{ TTrackBar }
constructor TTrackBar.Create(AOwner: TComponent);
begin
inherited;
OnMouseDown := DoMouseDown;
end;
destructor TTrackBar.Destroy;
begin
OnMouseDown := nil;
inherited;
end;
procedure TTrackBar.DoMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var
Val: Double;
begin
case Orientation of
trHorizontal: Val := (X * Max) / Width;
trVertical: Val := (Y * Max) / Height;
end;
Position := Round(Val);
end;
|
При использовании материала - ссылка на сайт обязательна
|
|