Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.03.2011, 02:09   #1
ArtGrek
DelphiProger
Участник клуба
 
Аватар для ArtGrek
 
Регистрация: 14.11.2010
Сообщений: 1,023
Стрелка Совместимость работы 2-х таимеров (SlidShow and RunString)

вот весь код
Код:
unit Unit3;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, PicShow, ExtCtrls, jpeg, StdCtrls;

type
  TForm3 = class(TForm)
    Timer1: TTimer;
    PicShow1: TPicShow;
    Label1: TLabel;
    Panel1: TPanel;
    Timer2: TTimer;
    procedure FormShow(Sender: TObject);
    procedure FormHide(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure Timer2Timer(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure PicShow1Click(Sender: TObject);
    procedure PicShow1Stop(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form3: TForm3;
  ShowN: integer = 0;
  FormChange: Boolean = False;

implementation

uses Unit1, Unit2;

{$R *.dfm}

procedure TForm3.PicShow1Click(Sender: TObject);
begin
  FormChange := FormChange xor True;
  if FormChange then Form1.Show
    else Form3.Show;
end;

procedure TForm3.FormCreate(Sender: TObject);
begin
  Panel1.DoubleBuffered := True;
end;

procedure TForm3.FormShow(Sender: TObject);
begin
  Left := Screen.DesktopWidth - Screen.Width;
  Form1.play1.Caption := 'Pause';
  if not(Duty.SectionExists(DateToStr(Date))) then Label1.Caption := 'ADShow ADVERTISE YOUR PRODUCT HERE'
  else begin
    Label1.Caption := 'ON DUTY TODAY ' + DateToStr(Date) + ': ';
    if Duty.ReadString(DateToStr(Date), 'Address', '') <> '' then
      Label1.Caption := Label1.Caption + Duty.ReadString(DateToStr(Date), 'Address', '') + ' ';
    if Duty.ReadString(DateToStr(Date), 'Telephon', '') <> '' then
      Label1.Caption := Label1.Caption + 'Tel. ' + Duty.ReadString(DateToStr(Date), 'Telephon', '') + ' ';
    if Duty.ReadString(DateToStr(Date), 'Other Info', '') <> '' then
      Label1.Caption := Label1.Caption + Duty.ReadString(DateToStr(Date), 'Other Info', '');
  end;
  Label1.Left := Panel1.Width;
  Timer2.Enabled := True;

  if IndexN >= 0 then
  begin
    Timer1.Interval := Images[ShowN].SpinEdit1.Value *1000;
    PicShow1.Style := Images[ShowN].ComboBox1.ItemIndex + 1;
    PicShow1.Picture.LoadFromFile(Path + '\Images\' +IntToStr(ShowN) + '.bmp');
    repeat
    until not(PicShow1.Empty);
    PicShow1.Execute;
  end;
end;

procedure TForm3.Timer1Timer(Sender: TObject);
begin
  Timer1.Enabled := False;
  inc(ShowN);
  if ShowN > IndexN then ShowN := 0;
  Timer1.Interval := Images[ShowN].SpinEdit1.Value *1000;
  PicShow1.Style := Images[ShowN].ComboBox1.ItemIndex + 1;
  PicShow1.Picture.LoadFromFile(Path + '\Images\' + IntToStr(ShowN) + '.bmp');
  repeat
  until not(PicShow1.Empty);
  PicShow1.Execute;
end;

procedure TForm3.Timer2Timer(Sender: TObject);
begin
  Label1.Left := Label1.Left - 1;
  if Label1.Left < (-Label1.Width) then   Label1.Left := Panel1.Width;
end;

procedure TForm3.PicShow1Stop(Sender: TObject);
begin
  Timer1.Enabled := True;
end;

procedure TForm3.FormHide(Sender: TObject);
begin
  Form1.play1.Caption := 'Play';
  Timer1.Enabled := False;
  Timer2.Enabled := False;
end;

end.
если не активировать второи таимер все работает отлично, тестил несколько раз(около час)
как только подключаю второи, начинаеца серия ошибок(Access voilation), причем не в одно и то же время
таимеры между собои никак не пересекаюца, и во втором деиствии как бы осбо и нет
так что логично предположить что ошибка во вторм
у компонента которыи я использую (PicShow) есть такая особенность, во время команды PicShow.Execude;
происходят все ети события, паралельно с работои програмы, тоесть второи паралельно работает
Цитата:
ConstrainedResize
Start
BeforeNewFrame
AfterNewFrame
Progress

после каждои троики событии есть задержка(Propierty: Delay), регулируемая мнои = 30 микросек,
от нее зависит на сколько быстро проидет переход
... + 23 раза
BeforeNewFrame
AfterNewFrame
Progress
Complete
Stop
посоветуите, как мне решить проблему?
мож бегушую строку по другому организовать, так я не знаю как еще можно
VirusN13

Последний раз редактировалось ArtGrek; 12.03.2011 в 06:48.
ArtGrek вне форума Ответить с цитированием
Старый 12.03.2011, 03:22   #2
asmodey1
Подтвердите свой е-майл
 
Регистрация: 19.12.2010
Сообщений: 808
По умолчанию

Цитата:
мож бегушую строку по другому организовать
Поиск - "бегущая строка". Рассматривалось неоднократно.

Последний раз редактировалось asmodey1; 12.03.2011 в 23:11.
asmodey1 вне форума Ответить с цитированием
Старый 12.03.2011, 04:31   #3
ArtGrek
DelphiProger
Участник клуба
 
Аватар для ArtGrek
 
Регистрация: 14.11.2010
Сообщений: 1,023
По умолчанию

Цитата:
Сообщение от asmodey1 Посмотреть сообщение
Поиск - "бегущая строка". Рассматривалось неоднократно.
темы выданые поисковиком на форуме по словам 'бегущая строка'
покажите пальцем где не используют таимер?
Цитата:
Совместимость работы 2-х таимеров (SlidShow and RunString)
Ускорить переход между Image ( 1 2)
Прокрутка заголовка
Бегущая строка снизу вверх в RichEdit
Моргает label при перемещении ( 1 2 3)
Работа c COM-портом ( 1 2)
Delphi + Flash... Тормоза!
Бегущая строка(фон) ( 1 2)
Бегущая строка(canvas)
Подстановка значения в переменную из текстового файла.
Бегущая строка.
подскажите как сделать чтобы текст в label был бегущей строкой?
Бегущая строка и about ( 1 2)
бегущий текст
"Бегущая строка"
добавлено
еще одна деталь, если добавить во второи таимер
Код:
Application.ProcessMessage;
ошибка вылетает моментально как доходит до етои строки
и переход при етом останавливаеца
VirusN13

Последний раз редактировалось ArtGrek; 12.03.2011 в 07:22.
ArtGrek вне форума Ответить с цитированием
Старый 12.03.2011, 07:51   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код надо смотреть... Врядли кто так скажет в яблочко.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 12.03.2011, 08:06   #5
ArtGrek
DelphiProger
Участник клуба
 
Аватар для ArtGrek
 
Регистрация: 14.11.2010
Сообщений: 1,023
По умолчанию

весь Unit3 в первом посте, остального кода многовато, я конешно могу выложить
но все что есть связаное в Unit1 ето нажатие кнопки Play
Код:
if Form3.Visible then Form3.Hide
  else Form3.Show;
и два параметра что беруца с первои формы,
номер ефекта PicShow1.Style := Images[ShowN].ComboBox1.ItemIndex + 1;
и интервал задержки между переходами Timer1.Interval := Images[ShowN].SpinEdit1.Value *1000;
которые в принципе можно заменить на статические
номер ефекта PicShow1.Style := 1;
и интервал задержки между переходами Timer1.Interval := 1000;

опишу в кратце что происходит, что б легче было разбираца, может и сам что нибудь замечу
1 FormShow

2 присвоение параметров (PicShow.Style, Timer1.Interval)
3 загрузка картинки (PicShow.Picture.LoadFromFile)
4 команда к проигрыванию перехода (PicShow.Execute) в результате которои происходят все те события что описаны выше (PicShow.Start ... PicShow.Stop)
5 PicShow1Stop
6 запускаем таимер (Timer1.Enabled)
7 Timer1Timer
8 останавливаем таимер (Timer1.Enabled)
9 увеличиваем номер картинки (ShowN)
10 в случае если была последняя картинка, начинаем с начала(if ShowN > IndexN then ShowN := 0; )

11 присвоение параметров (PicShow.Style, Timer1.Interval)
12 загрузка картинки (PicShow.Picture.LoadFromFile)
13 команда к проигрыванию перехода (PicShow.Execute) в результате которои происходят все те события что описаны выше (PicShow.Start ... PicShow.Stop)
...
и так далее, ничего не меняеца, IndexN остаеца неизменным на протяжении всего цикла и равен количеству картинок
а паралельно работает второи Timer, которыи просто двигает Label
вот как они друг другу мешают, не поиму
вот отключил Timer2 6 часов нормально работает

залил *.PASы от компонента, все (Start ... Stop) происходит в них

на ноотбуке, запущено 13 програм( все что нашел), запустил полную антивирусную проверку,
бе второго таимер, уже 4-и час работает, ошибок нет
народ подскажите

8 час с 1 таимером, полет нормальныи
Вложения
Тип файла: txt PicShow.txt (42.7 Кб, 151 просмотров)
Тип файла: txt PSEffect.txt (127.2 Кб, 140 просмотров)
Тип файла: txt PSReg.txt (6.5 Кб, 137 просмотров)
VirusN13

Последний раз редактировалось ArtGrek; 12.03.2011 в 14:38.
ArtGrek вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Совместимость лицензий Alex Cones Свободное общение 17 14.07.2010 11:25
Совместимость с ОС свр Операционные системы общие вопросы 3 11.08.2009 19:22
Совместимость версий nik1905 Microsoft Office Excel 2 27.07.2009 19:03
совместимость с вистой korteas Помощь студентам 1 09.11.2008 09:52
Совместимость типов DeDoK Общие вопросы Delphi 2 06.05.2008 21:28