Wciśkanie i zwalnianie klawiszy to banał, ustawiasz dla formatki KeyPreview na True i resztę załatwia już taki kod:
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if Key = Ord('Z') then
Caption := 'Z wciśnięte';
end;
procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if Key = Ord('Z') then
Caption := 'Z zwolnione';
end;
Co do odtwarzania dziwięku nie polecał bym MediaPlayera, bo to ubogi komponent, poza tym na przykład ja u siebie
pod XP mam coś namieszane ze sterownikami MCI i on mi nie odtworzy nic poza wave'm. Bardziej uniwersalna jest i
prosta w obsłudze oraz o dużych możliwościach - biblioteka bass.dll. Zobacz sobie na kod źródłowy programu, który
napisałem kilka dni temu dla w sumie dla siebie by dopracować obslugę bass.dll wkompilowanej do zasobów i także
dla jakiegoś <cenzura> którego post zostal usunięty z Newbie, napisalem do niego na PW, ale nawet nie odpisał. W
każdym razie link jest aktywny i nie wygaśnie. Zainteresuj się też kodem modułu a_bass_lib_resource.pas, bo
poza wkompilowaniem bass.dll w zasoby, polecam rownież próbki dźwiękowe pianina umieścić w zasobach. Da się
rownież z tego co się orientuje generować dźwięki przy pomocy samej biblioteki, ale tym się nie bawiłem. Zawsze
po więcej informacji możesz zajrzeć do dokumentacji oraz przykładów na: http://uk.un4seen.com/files/bass24.zip
Jest również forum z supportem. Co do pokazania pianina to już Twoja inwencja, można narysować klawisze - na
przykład na kilku komponentach Image, ktorych wygląd można zmieniać w zdarzeniach OnKeyDown/Up dla Twojej
formatki chociażby. Generalnie polecam wszystko trzymać w zasobach i z nich używać. Całośc później można, na
przykład spakowac UPX'em i wyjdzie z tego zgrabny pojedynczy exek. A inicjowanie bass.dll, zwykle się uda i to
na każdym komputerze wyposażonym w kartę dźwiękową zainstalowaną w systemie, nie to co z MediaPlayerem.
EDIT: Zapomniałem. Mój kod na:: http://www.mediafire.com/file/ygqw45yq7whelgt/mouse_buttons_sound.rar