Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   TrackBar Position Problem (https://www.delphipraxis.net/90953-trackbar-position-problem.html)

Tommy1988 26. Apr 2007 13:48


TrackBar Position Problem
 
Also das ist so, ich versuche schon seit Ewig herum.

Ich benutze eine TrackBar um die Lautstärke der Audioasgabe zu regeln.

Man kann den Sound durch eine CheckBox ausschalten (Position 0)

Wenn ich den Sound wieder an mache (CheckBox.Checked = False then ...)
dann würde ich das gerne so haben, dass das Zeichen in der TrackBar wieder zurück
zu der Stelle (Position) springt, wo er zuvor gestanden hat.

Habe schon einiges Probiert aber nix hat geklappt, oder ich mache es einfach falsch.

Matze 26. Apr 2007 13:55

Re: TrackBar Position Problem
 
Speicher doch den vorigen Wert zwischen.

Aber ich würde beim Deaktivieren der Checkbox nicht die Trackbar auf Null stellen, sondern nur den Ton abschalten, wie man es von den gängigsten Playern gewohnt ist. Beim Aktivieren oder Verschieben der Trackbar aktivierst du die Soundausgabe dann wieder.

DP-Maintenance 26. Apr 2007 13:55

DP-Maintenance
 
Dieses Thema wurde von "Matze" von "Programmieren allgemein" nach "VCL / WinForms / Controls" verschoben.
Es geht um Delphi.

Tommy1988 26. Apr 2007 14:00

Re: TrackBar Position Problem
 
naja.. wie stelle ich denn den ton ab?

und wie ich den wert zwischen? so wie ich es versucht habe klappts leider nicht.

Matze 26. Apr 2007 14:06

Re: TrackBar Position Problem
 
So, wie du den Ton aktuell auch ausstellst, kannst du diesen doch auch über die Checkbox deaktivieren. Für's Zwischenspeichern nimmst du eine variable:

Delphi-Quellcode:
OldVolume: Integer;
Wenn du den Ton über die Checkbox ausstellst, speicherst du in dieser Variablen den aktuellen Lautstärkepegel und setzt diesen wieder zurück, wenn die Checkbox erneut angeklickt wird.

Tommy1988 26. Apr 2007 14:13

Re: TrackBar Position Problem
 
Delphi-Quellcode:
procedure TForm1.CheckBox1Click(Sender: TObject);
var
OldVolume: Integer;
begin
if CheckBox1.Checked = True then
 begin
OldVolume := TrackBar1.Position;
// Das hier mit dem Label mache ich nur, damit ich den vorherigen Wert auch SEHEN kann
Label13.Caption := IntToStr(OldVolume);
 TrackBar1.Position := 0;
 TrackBar1.Enabled := False;
 Label11.Enabled := False;
 end;

if CheckBox1.Checked = False then
 begin
// Priblem hier
TrackBar1.Position := OldVolume;
// TrackBar1.Position := 15;
 TrackBar1.Enabled := True;
  Label11.Enabled := True;
 end;
end;
Nach dem Wieder-einschalten, wird die TrackBar unmittelbar auf Position 255 (100%) gesetzt.

Matze 26. Apr 2007 14:29

Re: TrackBar Position Problem
 
Dein Code ist ja nicht sonderlich gut. ;)

Dein Problem liegt darin, dass du die Variable lokal deklarierst und diese somit nur beim aktuellen Ereignis-Aufruf verfügbar ist. Du musst diese daher beispielsweise im private-Abschnitt deklarieren. Und vergleiche nie auf true (siehe hierzu dieses Thema), sondern mach es, wie im folgenden Code:

Delphi-Quellcode:
  private
    { Private-Deklarationen }
      OldVolume: Integer;
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.CheckBox1Click(Sender: TObject);
begin
  if CheckBox1.Checked then
  begin
    OldVolume := TrackBar1.Position;
    Label13.Caption := IntToStr(OldVolume);
    TrackBar1.Position := 0;
    TrackBar1.Enabled := False;
    Label11.Enabled := False;
  end else
  begin
    TrackBar1.Position := OldVolume;
    TrackBar1.Enabled := True;
    Label11.Enabled := True;
  end;
end;

uwewo 26. Apr 2007 14:30

Re: TrackBar Position Problem
 
Die TrackBar kann man doch auch disablen.

Delphi-Quellcode:
procedure TForm1.CheckBox1Click(Sender: TObject);
begin
   TrackBar1.Enabled := CheckBox1.Checked;
   
    if CheckBox1.Checked then
     begin
       Label13.Caption  := IntToStr(TrackBar1.Position);
       DeinPlayer.Volume := TrackBar1.Position;
     end
    else
      begin
        Label13.Caption  := '0'
        DeinPlayer.Volume := 0;
      end;
end;
Anstatt zu disablen könntest Du natürlich auch den Slider ausblenden.


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:00 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz