|
Вопрос # 2 084/ вопрос открыт / |
|
Приветствую, уважаемые эксперты!
Интересую меня 2 очень простеньких вопроса:
1. Как можно сделать так, что бы при появлении формы, она определенное время была - а потом закрывалась автоматически - как-то вроде через sleep можно - но я точно не помню! Не подскажите?
2. Хочу сделать 2 кнопки Play и Stop что бы останавливали и воспроизводили с места остановки текущий трэк в MediaPlayer'e - так вот вопросик - как сделать так, что бы пока трек играе кнопка Play была неактивна, как только остановишь (нажмешь на Stop) - кнопка Stop становилась неактивной, а Play активной?
Большое спасибо)
 |
Вопрос задал: Вечперик (статус: Посетитель)
Вопрос отправлен: 12 ноября 2008, 20:23
Состояние вопроса: открыт, ответов: 1.
|
Ответ #1. Отвечает эксперт: Ученый
Здравствуйте, Вечперик!
На счет первой части вопроса: кидаете на форму таймер и в его обработчеке пишете
a=a+1;
if a=*Ваше значение* then
Form1.Close;
Причем переменную а объявите как глобальную, а в FormActivate напишите a:=0;
Вторая часть :
Советовал бы вам использовать кнопки MediaPlayer, изменяя их свойства можно добиться нужного вам результата.
Удачи!
 |
Ответ отправил: Ученый (статус: 8-ой класс)
Время отправки: 12 ноября 2008, 20:37
Оценка за ответ: 5
|
Мини-форум вопроса
Всего сообщений: 15; последнее сообщение — 16 ноября 2008, 12:27; участников в обсуждении: 4.
|
Ученый (статус: 8-ой класс), 12 ноября 2008, 20:46 [#1]:
Да хочу дабавить: если вы всётаки же используете свои кнопки тогда на пишите:
procedure TForm1.Button1Click(Sender: TObject);
begin
MediaPlayer1.Play;
Button2.Enabled:=true;
Button1.Enabled:=False;
end;
procedure TForm2.Button1Click(Sender: TObject);
begin
MediaPlayer1.Stop;
Button1.Enabled:=true;
Button2.Enabled:=False;
end;
|
|
Вечперик (статус: Посетитель), 12 ноября 2008, 20:58 [#2]:
Большое спасибо! Хочу спросить насчет таймера - у меня он работает только при первом появлении формы - при дльнейших появлениях он не работает... можно это как-то исправить?
|
|
Ученый (статус: 8-ой класс), 12 ноября 2008, 21:02 [#3]:
Попробуйте в FormActivate дописать Timer1.Enabled:=true;
а изначально свойство Enabled у таймера поставить False.
|
|
Вадим К (статус: Академик), 12 ноября 2008, 21:09 [#4]:
В FormActivate говорите? мда. Если свернуть форму и развернуть, сработает событие FormActivate. Что будет - сами угадайде. Рекомендую пойти в раздел статей, найти мою статью о формах, почитать внимательно. И вставить всю инициализацию в FormCreate и сделать форму создаваемой вручную.
Галочка "подтверждения прочтения" - вселенское зло.
|
|
Ученый (статус: 8-ой класс), 12 ноября 2008, 21:11 [#5]:
То Вадим К . Согласен с вами! Лучше будет написать в FormCreate!
|
|
Вечперик (статус: Посетитель), 12 ноября 2008, 21:13 [#6]:
Спасибо - работает! теперь по второй части - просто у меня много треков и кнопок, которые отвечают за них - мне нао сделать принип - типа - если MediaPlayer играет, что эта кнопка активна, а эта нет! А если остановлен - то наоборот - так можно сделать как-то?
|
|
Вечперик (статус: Посетитель), 12 ноября 2008, 21:15 [#7]:
Вадим К, у меня на форме нет кнопки свернуть, также как и развернуть...)) Только закрыть)))
|
|
Вадим К (статус: Академик), 12 ноября 2008, 21:17 [#8]:
Надо - свернем. Например нажав Win+D
Галочка "подтверждения прочтения" - вселенское зло.
|
|
Вечперик (статус: Посетитель), 12 ноября 2008, 21:18 [#9]:
Времени для этого мало будет! пока сообразишь до Win+D она уже закроется))
|
|
Вечперик (статус: Посетитель), 12 ноября 2008, 21:24 [#10]:
Вадим К, а Вы меня на хорошую идею натолкнули... а можно сделать так, что бы пока форма 2 активка - ну т. е. ты с ней играешься, то она жива, а как только переключашься на форму 1 - или куда-то еще - т. е. перестаешь игрться с форумой и идешь на рабочий стол по ярлыкам щелкать - то она закрывается? Так еще лучше будет! Не знаете, такое возможно?
|
|
Вадим К (статус: Академик), 12 ноября 2008, 21:41 [#11]:
Всё возможно. Всё. у события OnFormActivate есть парное событие OnFormDeactivate. Думаю далее обьяснять не надо
А по поводу "не успеешь нажать" - я бы просто не наделся на такое. На любую уловку/защиту найдётся идиот, который даже нехотя этого, обойдёт её.
Галочка "подтверждения прочтения" - вселенское зло.
|
|
Вечперик (статус: Посетитель), 12 ноября 2008, 21:53 [#12]:
Большое спасибо... только срабатывает если на другую форму переключиться... если на рабочий стол и т. д. то остается...
|
|
Nasgool (статус: 2-ой класс), 15 ноября 2008, 08:51 [#13]:
Все очень просто.
1) Есть компонент Timer.
Пример по первому примеру:
unit Unit_Setup;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls;
type
TForm_Setup = class(TForm)
Label1: TLabel;
Edit1: TEdit;
Button1: TButton;
Timer1: TTimer;
procedure Button1Click(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form_Setup: TForm_Setup;
implementation
uses
Unit_Splash;
{$R *.dfm}
procedure TForm_Setup.Button1Click(Sender: TObject);
begin
Form_Setup.Timer1.Interval := StrToInt(Form_Setup.Edit1.Text);
Form_Splash.Show;
end;
procedure TForm_Setup.Timer1Timer(Sender: TObject);
begin
Form_Splash.Hide;
end;
end.
unit Unit_Splash;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;
type
TForm_Splash = class(TForm)
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form_Splash: TForm_Splash;
implementation
{$R *.dfm}
end.
Нетрудно догадаться, что Form_Setup - главная форма приложения. Пример подробно отражает работу таймера.
|
|
Nasgool (статус: 2-ой класс), 15 ноября 2008, 09:08 [#14]:
2) По поводу плеера:
Тоже ничего сложного:
unit Unit_Main;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, MPlayer;
type
TForm2 = class(TForm)
MediaPlayer1: TMediaPlayer;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure MediaPlayer1Click(Sender: TObject; Button: TMPBtnType;
var DoDefault: Boolean);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form2: TForm2;
implementation
{$R *.dfm}
procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
MediaPlayer1.Stop;
end;
procedure TForm2.MediaPlayer1Click(Sender: TObject; Button: TMPBtnType;
var DoDefault: Boolean);
begin
case Button of
btPlay:
begin
MediaPlayer1.EnabledButtons := [btStop];
MediaPlayer1.Play;
end;
btStop:
begin
MediaPlayer1.EnabledButtons := [btPlay];
MediaPlayer1.Stop;
end;
end;
end;
end.
Тут только нужно выставить видимые кнопки в свойствах плеера на стадии дизайна и все
|
|
Вечперик (статус: Посетитель), 16 ноября 2008, 12:27 [#15]:
Nasgool, большое спасибо - попробую)))
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|