| 
| 
 | Вопрос # 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, большое спасибо - попробую))) |  Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте. |