Delphi-PRAXiS
Seite 4 von 5   « Erste     234 5      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Komponente umstellen (https://www.delphipraxis.net/188001-komponente-umstellen.html)

EWeiss 24. Jan 2016 20:19

AW: Komponente umstellen
 
Zitat:

Ich glaube ohne mehr Quelltext lässt sich da nicht viel mehr helfen, da so nicht nachvollziehbar ist wo deine Probleme auftreten. Möglich ist das jedenfalls sicher...
Habe das Archiv nochmal hochgeladen wenn du mal reinschauen willst.
AudioVolume2 mit AppVolume im Inspektor ändern True/False
Dann Form schließen/öffnen und dann wundern das es nicht läuft.

Zur Laufzeit geht es weil ich den Wert Quelltextmäßig ändere (Das soll nachher deaktiviert werden wenn das umschalten funktioniert.)

Delphi-Quellcode:
AudioVolume2.AppVolume := True;


Einen letzten Versuch ist es wert.

gruss

jaenicke 24. Jan 2016 21:28

AW: Komponente umstellen
 
Im SetAppVolume werden diverse Komponenten erstellt, aber keine freigegeben. Wenn ich also mehrfach umschalte, wird immer mehr Speicher verbraucht.

Was ich an dem Konzept gar nicht verstehe:
Es werden doch die selben Komponenten verwendet, egal ob AppVolume True oder False ist soweit ich das sehe. Warum werden da verschiedene erstellt statt einfach immer die gleichen zu benutzen?
So hast du eine pbMasterMeter und eine pbAppMeter usw., alles doppelt.

Da die gleichzeitig nie verwendet werden, macht das doch keinen Sinn...

Wenn du nur ein Set an Komponenten hast und dieses nur je nach Einstellung so oder so nutzt, wird es auch funktionieren...
Die Anzeige kannst du dann in Loaded aktualisieren, aber die Komponenten sind dann immer da.

Fehler bekommst du, wenn du erst in Loaded die Komponenten initialisierst, weil auch Left usw. bereits vorher gesetzt werden und du in WMSize usw. die Komponenten schon nutzt. Debuggen kannst du das sehr einfach indem du die IDE als Hostanwendung des Packages einträgst.

EWeiss 24. Jan 2016 21:33

AW: Komponente umstellen
 
Zitat:

So hast du eine pbMasterMeter und eine pbAppMeter usw., alles doppelt.
Nein da wird nichts doppelt verwendet.
Das MasterVolume ist nicht gleich AnwendungsVolume.

Siehe!
Delphi-Quellcode:
     WM_EndpointVolume:
      begin
        PVolMuteRec := PVolMute(Msg.WPARAM);
        if Assigned(tbMasterVolume) then
        begin
          tbMasterVolume.Position := round((1.0 - PVolMuteRec^.Volume) * tbMasterVolume.Max); // **** Added
          cbMasterMute.Checked := PVolMuteRec^.Muted; // **** Added
        end;
      end;
    WM_VolumeEvent:
      begin
        PVolMuteRec := PVolMute(Msg.WPARAM);

        if Assigned(tbAppVolume) then
        begin
          tbAppVolume.Position := round((1.0 - PVolMuteRec^.Volume) * tbAppVolume.Max);
          // **** Added
          cbAppMute.Checked := PVolMuteRec^.Muted; // **** Added
        end;

        if (MyVolSet and (abs(PVolMuteRec^.Volume - MyVolVal) < 0.0001)) then
          MyVolSet := false
        else if (MyMuteSet and (PVolMuteRec^.Muted = MyMuteVal)) then
          MyMuteSet := false;
      end;
Für die anderen Device sind sie gleich ....
Aber Device ist nicht gleich AppVolumen.
Dafür benötige ich 2 Unterschiedliche Slider.

Zitat:

AppVolume True oder False
Nein..
AppVolume wird in SetAppVolume zugewiesen
MasterVolume(Device) in SetComponents

Hingegen tbMasterVolume ist für alle Device gleich.
Zitat:

Da die gleichzeitig nie verwendet werden, macht das doch keinen Sinn...
Klar werden die gleichzeitig verwendet.
Aber Wahlweise.

Zitat:

Debuggen kannst du das sehr einfach indem du die IDE als Hostanwendung des Packages einträgst.
Ok! Danke für die Info. (zweite Instance starten.. ja)

Zitat:

Im SetAppVolume werden diverse Komponenten erstellt, aber keine freigegeben.
Jo :oops: muss da noch einiges machen. Hatte mich im Moment zu sehr auf die beiden Probleme fixiert.

PS:
Hab das jetzt gefixt mit der AppVolume.
Das umschalten geht jetzt und die Ressourcen werden freigegeben.
Mit der Liste muss ich noch überlegen ob das sinn macht und wie groß der Aufwand dafür ist.

gruss

EWeiss 26. Jan 2016 13:22

AW: Komponente umstellen
 
Find nix vernünftiges über RegisterComponentEditor
Hab ich schon gelesen https://wiki.delphigl.com/index.php/...enten-Editoren

Benötige ich eine Kombination von TPropertyEditor und TComponentEditor um Propertys addieren zu können?

gruss

stahli 26. Jan 2016 13:44

AW: Komponente umstellen
 
Jetzt wollte ich antworten und da ist die Frage weg... ;-)

Konkretisiere mal, wo es jetzt klemmt.
Dein Propertyeditor funktioniert jetzt und jetzt brauchst Du einen Komponenteneditor?

[Edit] ... Frage steht ja da...

ProptertyEditor und Komponenteneditor hat miteinander nicht direkt etwas zu tun.

Angenommen, Du hast eine published Property MyPath. Der kannst Du im Objektinspektor einen Text "C:\Test" zuweisen.
Wenn Du dem Programmierer die Textsuche erleichtern willst kannst Du einen Propertyeditor bauen.
Über die ... kann er den öffnen und darüber einen Pfad auswählen.
In MyPath steht dann exakt das Gleiche drin wie vorher. Der Propertyeditor erleichtert nur die Zuweisung.

Ein Komponenteneditor geht darüber hinaus und ermöglicht es, mehrere Propertys einer Komponente komplett einzurichten.
Das Handling ist allerdings umfangreicher.


M.E. ist das für Dich der richtige Weg.
Ich weiß nicht, warum Du eine Liste in Deinen Komponenten speichern willst.
Eigentlich brauchst Du doch nur einen passenden Wert!?

Was ist jetzt eigentlich Deine Komponente? So eine Groupbox mit den 5 Controls oder etwas übergeordnetes, das diese Groupboxen erzeugt?

EWeiss 26. Jan 2016 13:48

AW: Komponente umstellen
 
Zitat:

Zitat von stahli (Beitrag 1328293)
Jetzt wollte ich antworten und da ist die Frage weg... ;-)

Konkretisiere mal, wo es jetzt klemmt.
Dein Propertyeditor funktioniert jetzt und jetzt brauchst Du einen Komponenteneditor?

Ich möchte eine Liste von vorhandenen Device zu meiner Komponente im OI addieren.
jaenicke meint das geht nur über den Komponenteneditor.
Das Beispiel das ich gelöscht habe funktioniert nicht.

gruss

EWeiss 26. Jan 2016 13:53

AW: Komponente umstellen
 
Zitat:

Angenommen, Du hast eine published Property MyPath. Der kannst Du im Objektinspektor einen Text "C:\Test" zuweisen.
Wenn Du dem Programmierer die Textsuche erleichtern willst
Ja aber keine Stringliste ;)
Und das ist mein Problem.

Wenn unter published steht
Delphi-Quellcode:
  property AudioDevice: TStrings read GetAudioDevice write SetAudioDevice;


Dann steht das AudioDevice im OI als TStrings ich möchte aber eine Liste.
Das soll mit der Class TComponentEditor lösbar sein nur wie ?

gruss

stahli 26. Jan 2016 14:05

AW: Komponente umstellen
 
Da wir uns miteinander verheddert hatten, hier nochmal die letzte Frage...

Zitat:

Zitat von stahli (Beitrag 1328293)
Ich weiß nicht, warum Du eine Liste in Deinen Komponenten speichern willst.
Eigentlich brauchst Du doch nur einen passenden Wert!?

Was ist jetzt eigentlich Deine Komponente? So eine Groupbox mit den 5 Controls oder etwas übergeordnetes, das diese Groupboxen erzeugt?


EWeiss 26. Jan 2016 14:10

AW: Komponente umstellen
 
Zitat:

Was ist jetzt eigentlich Deine Komponente? So eine Groupbox mit den 5 Controls oder etwas übergeordnetes, das diese Groupboxen erzeugt?
Du kannst es dir ja ansehen wurde aktualisiert. ;)
http://www.delphipraxis.net/162206-t...omponente.html

Aber vielleicht sollte ich deinen Rat beherzigen :)
Zitat:

"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?"
gruss

jaenicke 26. Jan 2016 16:41

AW: Komponente umstellen
 
Für dich sollte RegisterPropertyEditor reichen, ich hatte das falsche hingeschrieben. :oops:


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:08 Uhr.
Seite 4 von 5   « Erste     234 5      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz