![]() |
AW: Komponente umstellen
Delphi-Quellcode:
oder so ähnlich. AfterConstruction wäre auch noch eine Möglichkeit, aber das wird IIRC nicht immer ausgeführt (es sei denn, ich werfe da gerade etwas durcheinander).
procedure TAudioVolume.SetAppVolume(Value: boolean);
begin if Value = FAppVolume then exit; FAppVolume := Value; if not FAppVolume then SetComponents; end; |
AW: Komponente umstellen
Zitat:
Ich komme zu spät in den Setter das ist ja mein Problem.
Delphi-Quellcode:
Ich bekomme erst ein True nachdem ich Create hinter mir gelassen habe.
procedure TAudioVolume.SetAppVolume(Value: boolean);
begin if Value = FAppVolume then exit; FAppVolume := Value; if FAppVolume then begin FGroupBox.Caption := 'Application'; pbAppMeter := TProgressBar.Create(self); pbAppMeter.Parent := FGroupBox.Parent; pbAppMeter.Orientation := pbVertical; pbAppMeter.Max := 100; pbAppMeter.Min := 0; pbAppMeter.Smooth := true; lblAppPeak := TLabel.Create(self); lblAppPeak.Parent := FGroupBox.Parent; lblAppPeak.Caption := 'M'; pbAppMeterL := TProgressBar.Create(self); pbAppMeterL.Parent := FGroupBox.Parent; pbAppMeterL.Orientation := pbVertical; pbAppMeterL.Max := 100; pbAppMeterL.Min := 0; pbAppMeterL.Smooth := true; lblAppPeakL := TLabel.Create(self); lblAppPeakL.Parent := FGroupBox.Parent; lblAppPeakL.Caption := 'L'; tbAppVolume := TTrackBar.Create(self); tbAppVolume.Parent := FGroupBox.Parent; tbAppVolume.Orientation := trVertical; tbAppVolume.Max := 32; tbAppVolume.Min := 0; tbAppVolume.TickStyle := tsAuto; tbAppVolume.Frequency := 3; tbAppVolume.Position := 0; cbAppMute := TCheckbox.Create(self); cbAppMute.Parent := FGroupBox.Parent; cbAppMute.Caption := 'Mute'; pbAppMeterR := TProgressBar.Create(self); pbAppMeterR.Parent := FGroupBox.Parent; pbAppMeterR.Orientation := pbVertical; pbAppMeterR.Max := 100; pbAppMeterR.Min := 0; pbAppMeterR.Smooth := true; lblAppPeakR := TLabel.Create(self); lblAppPeakR.Parent := FGroupBox.Parent; lblAppPeakR.Caption := 'R'; tbAppVolume.Position := round((1.0 - GetVolume) * tbAppVolume.Max); tbAppVolume.OnChange := tbAppVolumeChange; cbAppMute.Checked := IsMuted; cbAppMute.OnClick := cbAppMuteClick; PostMessage(Handle, WM_SIZE, 0, 0); end; end; Das ist aber zu spät. Angenommen das Teil liegt schon auf der Form und ich ändere dann den Status über die Property AppVolume dann müsste sich die Componente anhand der im Setter eingestellten werte ändern. Tut es aber nicht so wie es soll. gruss |
AW: Komponente umstellen
In den Setter kommst Du, sobald der Wert der Property gesetzt wird. Ob aus dem Objektinspektor heraus oder per Code ist dabei egal, außer dass beim Objektinspektor der ComponentState auch csDesigning enthält, falls Dir das etwas nützt.
|
AW: Komponente umstellen
Er springt nicht in den Setter im Design mode so das ich testen kann woran das liegt.
Also wenn ich die property im Objektinspektor ändere. gruss |
AW: Komponente umstellen
Hast Du das Package auch neu installiert?
|
AW: Komponente umstellen
Zitat:
Der Vorgang ist wie folgt. Addiere ich die Komponente dann ist alles in Ordnung. Schalte ich jetzt um also auf AppVolume dann ändert sich das Aussehen entsprechend und ist auch in Ordnung Das selbe spiel zurück das ist auch in Ordnung. Schließe ich die Form und öffne diese anschließend wieder dann ist alles Durcheinander. So als wenn die Property nicht gespeichert würde. Es geht um die Ansicht im Designer :) gruss |
AW: Komponente umstellen
Dafür ist soweit ich weiß
![]() |
AW: Komponente umstellen
Zitat:
Wenn du mal reinschauen willst kann ich es hochladen. gruss |
AW: Komponente umstellen
Leider funktioniert das mit den property im Designer nicht.
Habe es deshalb so geändert dass das Anwendungs Volumen (Ansicht) erst zur Laufzeit geändert wird. Dafür weise ich der AudioVolume5 einfach AppVolume zu.
Delphi-Quellcode:
AudioVolume5.AppVolume := True
Volumen 1 -> 4 werden dann für die Geräte verwendet wie auch immer.
Delphi-Quellcode:
Auch diese werden dann erst zur Laufzeit (Ansicht) geändert.
AudioVolume1.SelectAudioDevice(I);
AudioVolume2.SelectAudioDevice(1); AudioVolume3.SelectAudioDevice(2); AudioVolume4.SelectAudioDevice(3); gruss |
AW: Komponente umstellen
Es gibt noch die Methode Loaded, die nach dem Laden der Eigenschaften ausgeführt wird. Wenn man im Objektinspektor eingestellte Eigenschaften verwenden will ohne im Setter jedesmal etwas zu aktualisieren, kann man diese überschreiben. Dann sind alle Eigenschaften bereits gesetzt.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:25 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