Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 2 084

Раздел: Delphi » Прочее
/ вопрос открыт /

Приветствую, уважаемые эксперты!
Интересую меня 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

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

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, большое спасибо - попробую)))

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:40
Выполнено за 0.02 сек.