Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - Trackbar Position durch Kommerzahl rechnen
DiamondDog - Mo 09.06.08 13:40
Titel: Trackbar Position durch Kommerzahl rechnen
Hallo Leute,
ich hab da ein kleines Problem und zwar will ich meine Trackbar Position in einem Label anzeigen, was auch super funktioniert. Nur die Zahl im Label soll noch mal durch 2,5 gerechnet werden und irgend wie bekomme ich das nicht hin wäre super wenn mir jemand zeigen könnte wie das geht.
So sieht das biß jetzt aus
Delphi-Quelltext
1: 2: 3: 4: 5: 6:
| procedure TfmBeeperOptions.TrackBar1Change(Sender: TObject); var a: integer; begin a:=Trackbar1.Position; Label31.Caption:='(' + inttostr(a) + '%)' end; |
Miri - Mo 09.06.08 13:55
1. du teilst da doch nirgends.
2. Integer sind ganzzahlige Werte. Um Kommazahlen zu verarbeiten müsstest du schon double o.ä. verwenden und für die Umwandlung in String dann floattostr statt inttostr!
DiamondDog - Mo 09.06.08 15:01
Ok habs jetzt so gemacht:
Delphi-Quelltext
1: 2: 3: 4: 5: 6:
| procedure TfmBeeperOptions.TrackBar1Change(Sender: TObject); var a: double; begin a:=Trackbar1.Position; Label31.Caption:='(' + floattostr(a/2.5) + '%)' end; |
jetzt hab ich das Problem das die Zahl mit Komma ausgegeben wird zB. 96,8 %
Hätte es aber gerne das er nur in 1% Schritten anzeigt.
Trackbar Min ist 0
Trackbar Max ist 255
Möcht es halt so haben das ich den Regler von linsk nach rechts bewege und dann die ProzentZahl dazu angezeigt wird aber ohne Komma und die Sprünge sollen in 1% Schritten erfolgen.
Sorry ist einwenig schwer zu erklären hoffe das das verständlich genug ist.
Gausi - Mo 09.06.08 15:10
IntToStr(Round(a/2.5)) ;-)
passiv - Mo 09.06.08 15:16
dann machs in die andere richtung: die trackbar von 0-100 und im trackbar.change sagst du dann wert:=round(trackbar1.position * 2.55);
ungetestet ...
DiamondDog - Mo 09.06.08 15:27
Ok so ist es super besten Dank.
Delphi-Quelltext
1: 2: 3: 4: 5: 6:
| procedure TfmBeeperOptions.TrackBar1Change(Sender: TObject); var a: double; begin a:=Trackbar1.Position; Label31.Caption:='(' + IntToStr(Round(a/2.5)) + '%)' end; |
Yogu - Mo 09.06.08 16:10
... oder so:
Delphi-Quelltext
1: 2: 3: 4:
| procedure TfmBeeperOptions.TrackBar1Change(Sender: TObject); begin Label31.Caption := Format('(%.0f%%)', [TrackBar1.Position / 2.5]); end; |
Aber vielleicht solltest du besser aussagekräftigere Komponentennamen als "Label31" wählen. ;)
passiv hat folgendes geschrieben: |
dann machs in die andere richtung: die trackbar von 0-100 und im trackbar.change sagst du dann wert:=round(trackbar1.position * 2.55); |
TrackBar von 0-100? Und wie soll dann die Hochzähl-Methode aussehen?
TrackBar1.Position ist ein Integer - es würde immer nur die Gerundete Version von
2.55 dazugezählt werden - 3. Und dann wäre die Leiste sehr schnell voll.
Grüße,
Yogu
passiv - Do 12.06.08 10:11
@Yogu: "wert" soll dann auch irgendwie (ich schätze mal) der RGB- oder AlphaBlend-Wert sein. im label zeigt man ganz einfach den echten wert, den die Trackbar liefert an ...
aber stimmt schon, erst jetzt beim genaueren durchlesen ergibt das erst mal keinen sinn (ich hab zu weit vorausgedacht :P :roll: )
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!