Sender tag - dynamiczny MediaPlayer

0

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

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

0

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

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:
  playery:array[1..2] of TMediaPlayer;

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

 a potem mozesz juz praktycznie tak jak napisales wczesniej:
```delphi
  with playery[TSpeedButton(Sender).Tag] do {...}
uzyc FindComponent:</li> </ol>
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.

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:

TMediaPlayer(FindComponent('MediaPlayer' + IntToStr((Sender as TSpeedButton).Tag))).Play;
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 ;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1