AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Cross-Platform-Entwicklung Eine Action (TActionList) für mehrere dynamische Komponenten führt zu Problemen
Thema durchsuchen
Ansicht
Themen-Optionen

Eine Action (TActionList) für mehrere dynamische Komponenten führt zu Problemen

Ein Thema von AuronTLG · begonnen am 19. Feb 2019 · letzter Beitrag vom 4. Mär 2019
Antwort Antwort
AuronTLG

Registriert seit: 2. Mai 2018
Ort: Marburg
241 Beiträge
 
Delphi 12 Athens
 
#1

Eine Action (TActionList) für mehrere dynamische Komponenten führt zu Problemen

  Alt 19. Feb 2019, 16:30
Moin,

ich habe folgendes Problem:

Ich baue eine Maske auf, auf der man eine beliebige Anzahl von Audiodateien abspielen kann, indem für jede vorhandene Audiodatei ein passendes dynamisch erzeugtes Layout (Start/Pause-Button, Stop-Button, ProgressBar) angezeigt wird, d.h. jede Audiodatei hat ein "Mediaplayer-Layout".

Die ProgressBars dieser Layouts betreibe ich mithilfe einer "MediaPlayerCurrentTime"-Action, sodass diese ganz normal AktuelleZeit / Gesamtlänge der laufenden Audiodatei animiert anzeigen.
Das funktioniert so, dass beim Start drücken der entsprechende ProgressBar "MediaPlayerCurrentTime" als Action zugewiesen bekommt und bei Stop die Action-Eigenschaft wieder auf Nil gesetzt bekommt.

Das Problem dabei ist nun folgendes: Bei der ersten Audiodatei, die abgespielt wird, sieht alles ganz normal aus, doch danach bleibt die "MediaPlayerCurrentTime"-Action anscheinend krampfhaft an die erste benutzte ProgressBar gekoppelt, d.h. nur diese wird animiert, ganz gleich, auf welches Layout eigentlich zugegriffen wird.
Ich habe per Log die Eigenschaft MediaPlayerCurrentTime.Target an den entsprechenden Stellen überprüft und es steht immer die richtige ProgressBar drin, dennoch wird immer nur die ProgressBar angesteuert, die als erstes die Action zugewiesen bekam.

Ich habe unter Anderem auch probiert, inaktiven ProgressBars eine Dummy-Action zuzuweisen, leider auch ohne Erfolg.

Meine Erfahrung mit der Nutzung von Actions in Firemonkey beschränkt sich leider im Wesentlichen auf Fotos machen und das Steuern EINES Mediaplayer-Layouts, von daher weiß ich leider nicht genau, ob die Art und Weise, wie ich hier mit der Action umgehe, überhaupt so gedacht ist, da so ein dynamisches Zuweisen vorher nie nötig war.
Ich wäre für jeden Tipp oder Erfahrungsbericht dankbar...
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.415 Beiträge
 
Delphi 7 Professional
 
#2

AW: Eine Action (TActionList) für mehrere dynamische Komponenten führt zu Problemen

  Alt 19. Feb 2019, 17:05
Problem erkannt und verstanden.

Aber:

Ohne den passenden Quelltext sehe ich keine Chance auch nur annähernd in die Nähe eines möglichen Implementierungs- und/oder Designfehlers zu gelangen.

Prinzipiell scheint mir das ein typisches Problem zu sein, dass man mit Hilfe von Frames lösen kann.

Bau Dir ein Frame, das alles, wirklich alles enthält, was Du für "eine" Audiodatei benötigst. Die Actionlist und die Action gehören mit auf das Frame, ebenso Progressbar und was auch immer Du für die Wiedergabe und/oder optische Gestaltung benötigst. Danach sollte alle Logik nur noch innerhalb des Frames passieren. Kein Frame weiß, ob es das einzige ist und / oder noch "Geschwister" hat.

Wenn dann alle Zugriffe, Anzeigen, das Abspielen der dem "Frame gehörenden Datei" innerhalb des Frames passiert, kann es den von Dir beschriebene Effekt nicht mehr geben.

Pro Audiodatei wird dann ein Frame dynamisch erstellt und enthält damit die gesamte Logik zu "dieser" Datei.

Genaugenommen entsteht dabei eine von TFrame abgeleitete Klasse, die die Wiedergabe einer Audiodatei kapselt.

Pro Audiodatei gibt es dann zur Laufzeit eine Klasse.
  Mit Zitat antworten Zitat
AuronTLG

Registriert seit: 2. Mai 2018
Ort: Marburg
241 Beiträge
 
Delphi 12 Athens
 
#3

AW: Eine Action (TActionList) für mehrere dynamische Komponenten führt zu Problemen

  Alt 20. Feb 2019, 10:46
Mit Frames habe ich tatsächlich bisher noch nicht gearbeitet.
Werde ich mir mal anschauen, vielen Dank für den Tipp!
  Mit Zitat antworten Zitat
AuronTLG

Registriert seit: 2. Mai 2018
Ort: Marburg
241 Beiträge
 
Delphi 12 Athens
 
#4

AW: Eine Action (TActionList) für mehrere dynamische Komponenten führt zu Problemen

  Alt 4. Mär 2019, 10:48
Nur als Nachtrag:

Gekapselter "MediaPlayer"-Frame mit eigenem MediaPlayer und eigener ActionList funktioniert hervorragend und genauso wie es soll.

Danke nochmal für den Tipp.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:31 Uhr.
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