If Than Else

0

Chciałbym zrobić kolorowy pasek do regulacji głośności który pokazywałby aktualną głośność. Użyłem takiego czegoś:

if TrackBar1.Position = 11 then
WaveOutSetVolume(0, $FFFFFFF)
else
WaveOutSetVolume(0, $ffTrackBar1.Position6000*$ff);

I jak teraz zrobić, żeby ustalić szerokość obrazka dla każdego możliwego Position (grafika do pokazywania głośności ma wymiary 100x5)

tj.

TrackBar1.Position = 5 i teraz żeby szerokość obrazka była 50.
Próbowałem po kodzie do głośności wpisywać niżej if z wszystkimi wartościami, ale po zmianie na dowolny position nic się nie zmienia w grafice :(

0

Zrób w Object Inspektorze Obrazka wartość Stretch na true i będziesz mógł sobie zmieniać dowolnie szerokość obrazka. AutoSize daj na FALSE.
Powinno być GOOD!!!!!!

0

Udało mi sie na swój sposób ale thx za pomoc :). To jeszcze jedno chyba banalne pytanie. Jeżeli wstawię, np do przycisku, żeby po naciśnięciu zmieniało Caption, ale w nazwie żeby był % bo jak tak zrobiłem to przy sprawdzaniu sie wypluło o niego.

0

Mogłbys podać kod w tym miejscu co masz błąd ?? Ja zrobiłem tak:
[code]Button1.Caption := '%';[/code] i nic się złego nie stało. (Mam nadzieję ze dobrze zrozumiałem twoj problem).

0

A dzięki już działa :). To by było na razie na tyle ;).

0

W zasadzie to jeszcze jeden problem. Wiem że banalny ale jestem początqjący.

Niewiem dlaczego ale wartość Label2 zawsze jest 100%. Kod jest taki

procedure TForm1.TrackBar1Change(Sender: TObject);
begin
if TrackBar1.Position = 11 then
WaveOutSetVolume(0, $FFFFFFF)
else
WaveOutSetVolume(0, $ffTrackBar1.Position6000*$ff);

if
TrackBar1.Position = 0 then
Image1.Width := 0;
Label2.Caption := '0%';

if
TrackBar1.Position = 1 then
Image1.Width := 10;
Label2.Caption := '10%';

if
TrackBar1.Position = 2 then
Image1.Width := 20;
Label2.Caption := '20%';

if
TrackBar1.Position = 3 then
Image1.Width := 30;
Label2.Caption := '30%';

if
TrackBar1.Position = 4 then
Image1.Width := 40;
Label2.Caption := '40%';

if
TrackBar1.Position = 5 then
Image1.Width := 50;
Label2.Caption := '50%';

if
TrackBar1.Position = 6 then
Image1.Width := 60;
Label2.Caption := '60%';

if
TrackBar1.Position = 7 then
Image1.Width := 70;
Label2.Caption := '70%';

if
TrackBar1.Position = 8 then
Image1.Width := 80;
Label2.Caption := '80%';

if
TrackBar1.Position = 9 then
Image1.Width := 90;
Label2.Caption := '90%';

if
TrackBar1.Position = 10 then
Image1.Width := 100;
Label2.Caption := '100%';

end;

A już image zmienia się tak jak trzeba. Więc co jest z tym nie tak?

0

if
TrackBar1.Position = 0 then
Image1.Width := 0;
Label2.Caption := '0%';

if
TrackBar1.Position = 1 then
Image1.Width := 10;
Label2.Caption := '10%';

cha cha cha :-) lol :P

Image1.Width := TrackBar.Position*10;
   Label2.Caption := IntToStr(TrackBar1.Position*10)+'%';

Te 2 linijki zastępują całe Twoje 40 ;p

PS. życzę pomyślnego szukania najkrótszych i optymalnych rozwiązań ;D

0

Tak będzie najlepiej:

procedure TForm1.TrackBar1Change(Sender: TObject);
begin
 if TrackBar1.Position = 11 then
  WaveOutSetVolume(0, $FFFFFFF)
 else
  WaveOutSetVolume(0, $ff*TrackBar1.Position*6000*$ff);
 if TrackBar1.Position in [0..10] then
  begin
   Image1.Width := TrackBar1.Position*10;
   Label2.Caption :=IntToStr(TrackBar1.Position*10)+'%';
  end;
end;

Jak piszesz to pamiętaj o wcięciach (łatwiej się połapać) :-)

1 użytkowników online, w tym zalogowanych: 0, gości: 1