Питання # 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] [Наступна » ]