Питання # 5 211 …невеликі питання 1) Як натисканням клавіші вперед

Спільнота програмістів Спілкування, допомога, обмін досвідом

Delphi.int.ru Expert

Інші розділи порталу

Перехід до питання:

Статистика за сьогодні:

Найкращі експерти

Питання # 5 211

Здрастуйте, шановні експерти! Не підкажіть, як вирішити 2 невеликі питання?

1) Як натисканням клавіші "вперед"/"назад" (аля стрілочки) здійснити функцію Button1.Click?

2) Як краще зробити таке: є GIF анімація, яка програється один раз. Як зробити, щоб при наведенні курсору на певну область (наприклад, PNGButton1.MouseEnter) завантажувалося GIF у якийсь компонент TImage, програвалася до кінця та зникала. Але потім знову при наведенні миші на PNGButton1 з'являлася і проглядалася спочатку. Просто думав зробити все це з нескінченною анімацією і через таймер, але не довіряю я таймеру щось, щоразу від нього можна чекати що завгодно - то раніше прибирає, то пізніше.

Міні-форум питання

Сторінки: [ 1] [ 2] [Наступна » ]

Цитата (A000Y ):

Постав у форму, на якій лежить кнопка, властивість KeyPreview: = True; потім напиши обробник OnKeyDown цієї форми. До нього передається параметр Key: Word. Коли він дорівнюватиме VK_LEFT або VK_RIGHT, то це означає, що користувач натиснув стрілку "вліво" або "вправо" відповідно.

На друге запитання поки що відповісти не можу, не вистачає інформації: 1) яка версія Delphi? У мене в Delphi 7 TImage формат GIF не підтримує; 2) чому тобі не подобається таймер? 3) чому не скористатися готовим компонентом для відтворення gif-анімації?

Дякую! Маленьке питання по першому пункту: що потрібно вписати в рядок

if Key =VK_RIGHT then

щоб виконати процедуру

щодо другого 1) 7я - TImage підтримує GIF завдяки компоненту GIFImage. 2) Ніякої особистої ворожості Просто стоїть на FormCreate (з витримкою в 6 сек [поки грає мелодія]) і потім показує кнопку. Але найчастіше кнопка з'являється набагато раніше) 3) Якщо підкажіть яким і як - з радістю скористаюся)

Цитата (A000Y ):

Маленьке питання по першому пункту: що потрібно вписати в рядок

if Key = VK_RIGHT then

щоб виконати процедуру

Цитата (A000Y ):

Цитата (A000Y ):

- Тільки навіщо на OnMouseDown? OnClick чим не підходить?

Рух кнопки Hot - Press - Hot швидше проходить)

- А нахрен тут таймер взагалі? Музон скінчився – показуй кнопку.

ХЗ. Але на FormCreate не працює

MediaPlayer1.FileName := ExtractFilePath(Application.ExeName)+'Audio\1.mp3'; MediaPlayer1.Open; MediaPlayer1.Play; if mediaPlayer1.position = mediaPlayer1.length Then PNGButton3.Visible:=true;

А більше нікуди ставити. решта всіх аля onClick функції. Через Notify пробував – теж не вийшло. Хоча є велика ймовірність того, що криво щось робив.

- Та хоча б TRxGifAnimator.

Якби мені було просто встановити RX Library, я б ним з радістю скористався.

Цитата (A000Y ):

Цитата (A000Y ):

Цитата (A000Y ):

Цитата (A000Y ):

Цитата (A000Y ):

а навіщо так? Тут проходить наступне - включаємо музику і ТУТ Ж перевіряємо, а чи не дійшли до кінця. невже музика на пару мікросекунд?

Прописувати код, який повинен спрацювати на зупинку, треба в обробнику наНотифі.

поставив я на форму медіаплеєра. натиснув на ньому f1. з'явилася довідка. в ній вибрано Events, потім - OnNotify. а потім побачив дивовижне посилання Delphi examplе. АГА! const ModeStr: array[TMPModes] of string = ('No ready', 'Stopped', 'Playing', 'Recording', 'Seeking', 'Paused', 'Open');

procedure TForm1.MediaPlayer1Notify(Sender: TObject); begin з Sender як TMediaPlayer do begin Form1.Caption := ModeStr[Mode]; < Note we must reset the Notify property to True > < so that we are notified the next time the > < mode changes > Notify := True; end; end;

звідси пишемо свій обробник: procedure TForm1.MediaPlayer1Notify(Sender: TObject); begin // якщо медіаплеєр невидимий, то навіть не треба перевіряти стан медіаплеєра - сюди потрапляємо // тільки якщо музика сама зупинилася (медіаплеєр невидимий, на ньому ніхто мишею не клацає) PNGButton3.Visible :=true; end;

Єгор, дякую) Але мене зараз більше анімація хвилює) Кнопки косо криво, але з'являються, а ось анімація належним чином працювати не хоче!

Цитата (A000Y ):

min@y™, чи можна посилання на архів?

Цитата (A000Y ):

min@y™, спс) Погнав пробувати ставити)

Загалом, не доля мені встановити це. Якщо через TImage це не зробити, то я інакше не зроблю. А витрачати свій і ваш час не бачу більше сенсу. Ще раз дякую за допомогу)

Та що я тільки не читав - для мене це тільки не голосив - для мене все одно це суцільний космос) Ще раз дякую - може на свіжу голову завтра все вийде)

Ех, не минуло й півроку, але мені вдалося встановити RX Lib!

Але питання з анімацією все ще відкрите) Як я бачу RxGIFAnimator програєанімацію знову з нової, незалежно від того, треба це чи ні) Так можна його якось змусити зупинитися програвши анімацію 1 раз? Наприклад, спочатку задавши RxGIFAnimator1.Animate:=false; при натисканні на Button1 присвоюємо RxGIFAnimator1.Animate:=true; - програло анімацію один раз і знову RxGIFAnimator1.Animate:=false

можна замість RxLib використовувати JVCL. Новіший і більш пристосований для роботи.

Цитата (Вадим К ):

Цитата (A000Y ):

Цитата :

Declaration property Loop: Boolean;

Description Властивість визначає, чи циклічно повторюватиметься послідовність кадрів анімації, збереженої у форматі GIF. Якщо властивість встановлена ​​на значення True (за замовчуванням), то після того, як властивість FrameIndex досягне максимально можливого значення, вона буде скинута на значення 0, і анімація буде продовжена. Якщо Loop = False, то після проходження повного циклу анімації властивість Animate буде встановлено значення False (з викликом події OnStop).

Ідеально! min@y™, вдячний)

Сторінки: [ 1] [ 2] [Наступна » ]