![]() |
AW: Kleines rechnen problem
Ähm dann positiniere den Masterregler neu vor jedem Abort =\
Das dürftest du aber schon selber hinkriegen! |
AW: Kleines rechnen problem
Zitat:
Muss ja nur den Slider mit dem höchsten wert ermitteln minus der Maximalen value vom MasterRegler. Und diesen dann einen neuen Max wert übergeben. gruss |
AW: Kleines rechnen problem
Habe es jetzt mal umgesetzt.
Delphi-Quellcode:
bekomme aber bei Abort ein EAbort Exception..
ID_TRACK_MASTERVOL:
begin Difference := SKAERO_GetTrackValue(SKAERO_GetMainItem(MainHandle, wp)) - oldMasterVolume; oldMasterVolume := SKAERO_GetTrackValue(SKAERO_GetMainItem(MainHandle, wp)); for IntI := 0 to 15 do begin if Sign(Difference) = 1 then begin if Volume[IntI] = 100 then Abort; end else if Volume[IntI] = 0 then Abort; end; for IntI := 0 to 15 do begin Volume[IntI] := Max(Min(Volume[IntI] + Difference, 100), 0); SKAERO_SetTrackValue(SKAERO_GetMainItem(MainHandle, ID_VOLUME_FIRST + IntI), Volume[IntI]); end; end; Ansonsten funktioniert es Hervorragend ;) gruss |
AW: Kleines rechnen problem
Abort ist verknüpft mit dem Vcl-Message Handler.
Ich schätze mal, du arbeitest Non-Vcl. Verwende statt ein Abort folgendes
Delphi-Quellcode:
begin
SKAERO_SetTrackValue(SKAERO_GetMainItem(MainHandle, wp), SKAERO_GetTrackValue(SKAERO_GetMainItem(MainHandle, wp)-Difference); Exit; end; |
AW: Kleines rechnen problem
Zitat:
So gehts mit ein paar einschränkungen aber das regel ich selbst. Danke dir ;)
Delphi-Quellcode:
gruss
ID_TRACK_MASTERVOL:
begin Difference := SKAERO_GetTrackValue(SKAERO_GetMainItem(MainHandle, wp)) - oldMasterVolume; oldMasterVolume := SKAERO_GetTrackValue(SKAERO_GetMainItem(MainHandle, wp)); for IntI := 0 to 15 do begin if Sign(Difference) = 1 then begin if Volume[IntI] = 100 then begin SKAERO_SetTrackValue(SKAERO_GetMainItem(MainHandle, wp), Volume[IntI]); Result := 0; Exit; end; end else if Volume[IntI] = 0 then begin SKAERO_SetTrackValue(SKAERO_GetMainItem(MainHandle, wp), Volume[IntI]); Result := 0; Exit; end; end; for IntI := 0 to 15 do begin Volume[IntI] := Max(Min(Volume[IntI] + Difference, 100), 0); SKAERO_SetTrackValue(SKAERO_GetMainItem(MainHandle, ID_VOLUME_FIRST + IntI), Volume[IntI]); end; end; |
AW: Kleines rechnen problem
Nur so am Rande, die letzte Lösung, die ich gepostet habe ist so richtig XXX dirty.
So sollte man das nicht machen! Ich würde dafür direkt eine Klasse ableiten und das Verhalten dort definieren. Ich würd dafür sorgen, dass die Werte gar nicht erst gesetzt werden können, wenn nicht gesetzt werden darf! |
AW: Kleines rechnen problem
Zitat:
Das problem ist nur das ich auf eine DLL zugreife um das Controll Trackbar zu bedienen. Wenn ich einem User nur die DLL ohne Quelltext mitsende kann er da nicht rumpfuschen und muss in dem Fall alles aus der MainUnit heraus regeln. Dort jetzt dafür eine Klasse anlegen? Für ein Controll was sich in einer Externen DLL befindet? EDIT: Irgendwie will das immer noch nicht. Muss deinen Code nochmal anschauen. Alle Trackbars ausgenommen die erste Volume[0] setzen sich alle auf die Ausgangsposition zurück sobald ich den masterRegler anklicke. gruss |
AW: Kleines rechnen problem
Ähm, warum nicht. Ich hab auch zb. ein paar Komponente für die Bass.dll geschrieben. Die Hauptfunktionalität bietet mir die Dll, die Klasse kapselt dies ab. Klappt wunderbar
Edit: In diesem Falle könntest du ihm die Dll und die Wrapper-Unit mit den angesprochenen Klassen schicken. |
AW: Kleines rechnen problem
Zitat:
zu erweitern das wäre dann sinnvoller als in der MainUnit rumzupfuschen. Die frage wäre dann wie oft wird das vom User genutzt bzw.. Überhaupt genutz. Zitat:
Hab den Support aber eingestellt. Edit: Jetzt funktioniert soweit alles. gruss |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:57 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