Sender tag - dynamiczny MediaPlayer

Sender tag - dynamiczny MediaPlayer
K9
  • Rejestracja:około 14 lat
  • Ostatnio:prawie 11 lat
  • Postów:12
0

Witam. Mam pytanie - jak poprawić żeby poniższy kod zadziałał?

Kopiuj
begin
  with MediaPlayer[TSpeedButton(Sender).Tag] do
    begin

chodzi mi o to żeby dynamicznie przy wciśnięciu jakiegoś przycisku został włączony MediaPlayer o takim nr (tagu) jak Button

LN
  • Rejestracja:około 16 lat
  • Ostatnio:około rok
  • Postów:1398
0

właściwość components formy -> iterujesz po komponentach -> sprawdzasz czy i-ty komponent to media player -> sprawdzasz jego wartość Tag

cimak
  • Rejestracja:ponad 22 lata
  • Ostatnio:ponad 9 lat
  • Postów:1668
0

zadajesz proste pytania czesto. pisz w dziale Newbie, bo tu poziom jest nieco wyzszy;]
a co do pytania:
MediaPlayer to nie tablica. do tablic sie tylko tak mozna odwolywac.
mozliwosci masz dwie (przynajmniej tyle widze na szybko i dla poczatkujacego):

  1. zrobic tablice (zmienna globalna) w ktorej trzymasz mediaplayery:
Kopiuj
  playery:array[1..2] of TMediaPlayer;

i w onCreate: playery[1]:=MediaPlayer1;
playery[2]:=MediaPlayer2;

Kopiuj
 a potem mozesz juz praktycznie tak jak napisales wczesniej:
```delphi
  with playery[TSpeedButton(Sender).Tag] do {...}
uzyc FindComponent:</li> </ol>
Kopiuj
FindComponent('MediaPlayer'+inttostr(numer)) as TMediaPlayer; //as -> "rzutowanie"

mozna tez to wymieszac, jesli np mediaplayerow byloby wiecej to w onCreate mozesz wykorzystac FindComponent do wypelnienia tablicy.

jesli chcialbys sie czesto odwolywac w ten sposob do mediaplayerow, czy do jakichkolwiek innych komponentow to lepsze beda tablice. dlaczego?
bo nie trzeba ich szukac, a szukanie zajmuje "troche" czasu. co prawda w wieksozsci przypadkow bedzie to niezauwazalne no ale programy trzeba pisac tak zeby byly mozliwie najbardziej optymalne.

edytowany 11x, ostatnio: cimak
SI
  • Rejestracja:prawie 15 lat
  • Ostatnio:prawie 11 lat
  • Postów:184
0

Może być tak, jak napisał [losowa nazwa], albo przy założeniu, że na formularzu są komponenty MediaPlayer1, MediaPlayer2 itd można w ten sposób:

Kopiuj
TMediaPlayer(FindComponent('MediaPlayer' + IntToStr((Sender as TSpeedButton).Tag))).Play;
LN
  • Rejestracja:około 16 lat
  • Ostatnio:około rok
  • Postów:1398
0

Ups, moja wina - nie zauważyłem, że Tag miał być ze speedbuttona a nie mediaplayer'a ;) Ale koledzy i tak Ci juz odpowiedzieli ;)

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.