Zitat von
1234588:
kein
vcl. um ehrlich zu sein nutze ich nichtmal delphi :>
mir ist gerade noch was eingefallen. ueber windows setzt du ja die spanne deiner trackbar mit der
TBM_SETRANGE message.
jetzt kommt's
MAKELONG (lMinimum, lMaximum)
ist ein makro, das zwei vorzeichenlose 2 byte integer zu einem 4 byte integer umbastelt. mit 2 bytes kommt man von 0 bis 65535. also keine negativen werte und bei 65535 ist schon schluss. gut moeglich das die
vcl das anders macht, das sie die werte so umrechnet, das sie mit windows wieder passen. oder vll. zeichnet sich die
vcl auch eine eigene trackbar und benutzt die von windows nicht. kann ich nicht sagen.
versuch mal deine trackbar so umzubauen, das sie von mir aus von 0 bis 100 geht. beim setzen und beim auslesen musst du dann den wert so umrechnen, das er wieder passt. wenn deine trackbar beispielsweise von -50 bis 50 geht, setzt du das ding von 0 bis 100. liest du dann den wert 75 aus, musst du den wert einfach -50 rechnen und du hast den wert, der wieder zu deinem programm passt.
//edit
wie gesagt, theoretisch kannst du von 0 bis 65535 gehen
)
aso, jetzt weiß ich was es macht... aber das ist nicht direkt das was ich brauche, da der slider ja nicht auf 0 hängen bleibt, sonder der bereich nur extra makiert wird...
ich setze die pos übrigens per
TBS_SETRANGEMIN und
TBS_SETRANGEMAX!! damit lassen sich auch große minuszahlen erreichen.. das funktioniert ja auch alles soweit, nur das halt die trackbar (muss ziemlich klein sein auf der form) aufgrund des großen bereiches man den slider nicht mehr wirklich auf 0 positioniert bekommt, sonder irgendwo bei 70 und -70, das ist aber mist wenn es um sachen sound balance geht^^
hast du vllt ne idee, wie man das per seperate abfrage lösen könnte?? also die position einfach irgendwie errechnen und in dem fall halt den slider auf 0 setzen??
ich habs mal so probiert, aber da ist noch irgendwie der wurm drinn:
Delphi-Quellcode:
if ((Integer(wParam) < 100) and (Integer(wParam) > -1)) or ((Integer(wParam) > -100) and (Integer(wParam) < 1)) then
SendMessage(hwndTrackBar2, TBM_SETPOS, Integer(TRUE), 0);