Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   TrackBar con rango ?? (https://www.clubdelphi.com/foros/showthread.php?t=64024)

NeoNew 12-03-2009 20:31:59

TrackBar con rango ??
 
Hola Amigos. Necesito seleccionar un rango dentro de un TrackBar y no se como.
Ej. El Trackbar va desde 1 a 10 y quiero seleccionar un rango (con el mouse) por ejemplo de 2 a 6, es decir que el valor que me entregue sea 2 de inicio y 6 de fin.
No se si se maneja con el SelStart y SelEnd.

Gracias.

NeoNew 13-03-2009 14:15:14

Bueno creo que lo que tengo que hacer es adicionar los eventos OnMouseDown y OnMouseUp a TrackBar.
No se como se hace...Quien me puede ayudar...?
Gracias.

marcoszorrilla 13-03-2009 16:07:22

Bueno no sé si es exactamente lo que pides, pero quizás te de alguna idea. Necesitamos un Edit (ReadOnly = True), un UpDown, dos TButton y la propia TrackBar.

El código que he compuesto es este:

Código Delphi [-]
procedure TForm1.FormCreate(Sender: TObject);
begin
Updown1.Min:=TrackBar1.Min;
Updown1.Max:=TrackBar1.Max;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  if CheckBox1.Checked then
  begin
  TrackBar1.SelStart:=StrToInt(Edit1.text);
  CheckBox1.Caption:='Inicio';
  TrackBar1.Position:=StrToInt(Edit1.text);
  end
  else
  begin
  TrackBar1.SelEnd:=StrToInt(Edit1.text);
  CheckBox1.Caption:='Final';
  end;


TrackBar1.Update;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  while trackbar1.Position < Trackbar1.SelEnd do
  begin
  TrackBar1.Position:=TrackBar1.Position + 1;
  Sleep(90);
  end;
end;
Un Saludo.

NeoNew 13-03-2009 18:24:49

Gracias Marcos, Mira mas o menos lo que quiero es que al arrastar el Thumb del TrackBar me deje pintada la seleccion, y guardar el SelStart y el SelEnd;
Lo que tengo es lo siguiente, pero quiero que al volver a arrastra el Thumb (mouse) me seleccione de nuevo sin utilizar el Tboton;
Por eso deseo si se puede al presionar el Thumb(mouse) tomar el SelStart, arrastar y al soltar el Thumb(mouse) tomar el SelEnd;

(1 TButton, 1 TTrackBar y 2 TEdit)

Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
  TrackBar1.SelStart := 0;
  TrackBar1.SelEnd := 0;
end;

procedure TForm1.TrackBar1Change(Sender: TObject);
begin
  TrackBar1.SelEnd := TrackBar1.Position;
  Edit2.Text := IntToStr(TrackBar1.Position);
end;

procedure TForm1.TrackBar1Enter(Sender: TObject);
begin
  TrackBar1.SelStart := TrackBar1.Position;
  Edit1.Text := IntToStr(TrackBar1.Position);
end;

Oto Saludo...

NeoNew 13-03-2009 20:03:02

Bueno ya casi....
Solo falta pintar el rango a medida que se va corriendo el Slider o Thumb (Mouse), !!Si alguien le sirve la idea, lo mejora o le adiciona la pintada del recorrido!!
(1 TTRackBar y 3 TEdit)
Adicionar los eventos MouseDown y MouseUp al TRackBar.
Código Delphi [-]
private
    { Private declarations }
    Procedure Trackbar1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
    Procedure TrackBar1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
  public
    { Public declarations }
  end;
var
  Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm4.FormCreate(Sender: TObject);
begin
 Trackbar1.ControlStyle := Trackbar1.ControlStyle + [csClickEvents];
 TForm(Trackbar1).OnMouseDown :=Trackbar1mouseDown;
 TForm(Trackbar1).OnMouseUp :=Trackbar1mouseUp;
end;
En los eventos capturar los valores de SelStart y SelEnd;
Código Delphi [-]
procedure TForm4.TrackBar1Change(Sender: TObject);
begin
  Edit3.Text := IntToStr(TrackBar1.Position);
end;
procedure TForm4.Trackbar1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  TRackBar1.SelStart := TRackBar1.Position;
  Edit1.Text := IntToStr(TRackBar1.SelStart);
end;
procedure TForm4.Trackbar1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  TRackBar1.SelEnd := TRackBar1.Position;
  Edit2.Text := IntToStr(TrackBar1.SelEnd);
end;
:) Saludos...


La franja horaria es GMT +2. Ahora son las 04:18:58.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi