![]() |
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. |
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
Dieses Thema wurde von "Matze" von "Programmieren allgemein" nach "VCL / WinForms / Controls" verschoben.
Es geht um Delphi. |
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. |
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:
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.
OldVolume: Integer;
|
Re: TrackBar Position Problem
Delphi-Quellcode:
Nach dem Wieder-einschalten, wird die TrackBar unmittelbar auf Position 255 (100%) gesetzt.
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; |
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 ![]()
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; |
Re: TrackBar Position Problem
Die TrackBar kann man doch auch disablen.
Delphi-Quellcode:
Anstatt zu disablen könntest Du natürlich auch den Slider ausblenden.
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; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:49 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz