Модераторы: Snowy, MetalFan, bems, Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> компонент label тормозит 
V
    Опции темы
valerchi
Дата 28.2.2018, 11:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 163
Регистрация: 27.5.2008
Где: Геническ

Репутация: нет
Всего: нет



Всем привет. Подскажите в чём дело. Не могу понять. Программа работает, но при закрытии ноутбука, получается переход в спящий режим, и когда проходит смена дня недели, и после этого открываешь ноутбук, а компонент label показывает вчерашний день недели и вчерашнее число. Это часы, показывающие календарь и день недели. При выходе из спящего режима часы нормально показывают время а число, месяц и день недели остаётся вчерашним, или происходит наложение что- то типа "вторникник" (кусочек 'ник остаётся от слова понедельник'). Пробовал в цикле очищать компонент, (label3.caption:='';), не помогает. Пробовал, делать каждый раз цикл сначала, - тоже не помогает.  Вот код
Код

...
begin
case i3 of
1:begin
i4:='ЯНВАРЬ ';
label3.Font.Size:=24;
end;
2:begin
i4:='ФЕВРАЛЬ ';
label3.Font.Size:=20;
end;
3:begin
i4:='МАРТ ';
label3.Font.Size:=34;
end;
4:begin
i4:='АПРЕЛЬ ';
label3.Font.Size:=23;
end;
5:begin
i4:=' МАЙ  ';
label3.Font.Size:=30;
end;
6:begin
i4:='ИЮНЬ ';
label3.Font.Size:=35;
end;
7:begin
i4:='ИЮЛЬ ';
label3.Font.Size:=35;
end;
8:begin
i4:='АВГУСТ ';
label3.Font.Size:=24;
end;
9:begin
i4:='СЕНТЯБРЬ ';
label3.Font.Size:=18;
end;
10:begin
i4:='ОКТЯБРЬ ';
label3.Font.Size:=20;
end;
11:begin
i4:='НОЯБРЬ ';
label3.Font.Size:=23;
end;
12:begin
i4:='ДЕКАБРЬ ';
label3.Font.Size:=20;
end;
end;
case day of
2:begin
i5:='ПОНЕДЕЛЬНИК ';     
label4.Font.Size:=12;
end;
3:begin
i5:='ВТОРНИК ';
label4.Font.Size:=20;
end;
4:begin
i5:='СРЕДА ';
label4.Font.Size:=29;
end;
5:begin
i5:='ЧЕТВЕРГ ';
label4.Font.Size:=21;
end;
6:begin
i5:='ПЯТНИЦА ';
label4.Font.Size:=19;
end;
7:begin
i5:='СУББОТА ';
label4.Font.Size:=20;
end;
1:begin
i5:='ВОСКРЕСЕНЬЕ ';
label4.Font.Size:=13;
end;
end;
end
else
begin
case i3 of
1:begin
i4:='JANUARY ';
label3.Font.Size:=20;
end;
2:begin
i4:='FEBRUARY ';
label3.Font.Size:=18;
end;
3:begin
i4:='MARCH ';
label3.Font.Size:=29;
end;
4:begin
i4:='APRIL ';
label3.Font.Size:=29;
end;
5:begin
i4:=' MAY ';
label3.Font.Size:=35;
end;
6:begin
i4:='JUNE ';
label3.Font.Size:=34;
end;
7:begin
i4:='JULY ';
label3.Font.Size:=35;
end;
8:begin
i4:='AUGUST ';
label3.Font.Size:=24;
end;
9:begin
i4:='SEPTEMBER ';
label3.Font.Size:=15;
end;
10:begin
i4:='OCTOBER ';
label3.Font.Size:=20;
end;
11:begin
i4:='NOVEMBER ';
label3.Font.Size:=18;
end;
12:begin
i4:='DECEMBER ';
label3.Font.Size:=18;
end;
end;
case day of
1:begin
i5:='MONDAY ';
label4.Font.Size:=18;
end;
2:begin
i5:='TUESDAY ';
label4.Font.Size:=20;
end;
3:begin
i5:='WEDNESDAY ';
label4.Font.Size:=15;
end;
4:begin
i5:='THURSDAY ';
label4.Font.Size:=18;
end;
5:begin
i5:='FRIDAY ';
label4.Font.Size:=26;
end;
6:begin
i5:='SATURDAY ';
label4.Font.Size:=18;
end;
7:begin
i5:='SUNDAY ';
label4.Font.Size:=24;
end;
end;
end;
if y=0 then
begin
label1.Font.Size:=28;
label1.Caption:=i1+':'+j1+':'+k1;// часы
end;
if y=1 then
begin
label1.Font.Size:=42;
label1.Caption:=i1+':'+j1;//часы без секунд
end;
label2.Caption:=i2;//число
label3.Caption:=i4;//месяц
label4.Caption:=i5;//день недели
Application.ProcessMessages;
until z=1;
until s=1;

т код

PM MAIL   Вверх
Snowy
Дата 28.2.2018, 14:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 31
Всего: 484



А зачем ты вообще это в цикле делаешь? Делай по таймеру. Вот пример:

Код
type
    TTimeItem = record
      ru, en : string;
      size : integer;
    end;

const
  mm1: array[1..12] of TTimeItem = (
    (ru: 'ЯНВАРЬ'; en: 'JANURY'; size: 14),
    (ru: 'ФЕВРАЛЬ'; en: 'FEBRUARY'; size: 14),
    (ru: 'МАРТ'; en: 'MARCH'; size: 16),
    (ru: 'АПРЕЛЬ'; en: 'APRIL'; size: 15),
    (ru: 'МАЙ'; en: 'MAY'; size: 18),
    (ru: 'ИЮНЬ'; en: 'JUNE'; size: 18),
    (ru: 'ИЮЛЬ'; en: 'JULY'; size: 17),
    (ru: 'АВГУСТ'; en: 'AUGUST'; size: 12),
    (ru: 'СЕНТЯБРЬ'; en: 'SEPTEMBER'; size: 14),
    (ru: 'ОКТЯБРЬ'; en: 'OCTOBER'; size: 14),
    (ru: 'НОЯБРЬ'; en: 'NOVEMBER'; size: 15),
    (ru: 'ДЕСЯБРЬ'; en: 'DECEMBER'; size: 15)
  );
  ww1: array[1..7] of TTimeItem = (
    (ru: 'ВОСКРЕСЕНЬЕ'; en: 'SUNDAY'; size: 14),
    (ru: 'ПОНЕДЕЛЬНИК'; en: 'MONDAY'; size: 14),
    (ru: 'ВТОРНИК'; en: 'TUESDAY'; size: 14),
    (ru: 'СРЕДА'; en: 'WEDNESDAY'; size: 15),
    (ru: 'ЧЕТВЕРГ'; en: 'THURSDAY'; size: 12),
    (ru: 'ПЯТНИЦА'; en: 'FRIDAY'; size: 16),
    (ru: 'СУББОТА'; en: 'SATURDAY'; size: 12)
  );

var
  lang: Integer = 1; // язык
  y:    Integer = 0;

// можно без этой функции
function GetDateName(dt: TDateTime; format: string): String;
var
  buffer:PChar;
  st:SYSTEMTIME;
begin
  GetMem(buffer, 256); ZeroMemory(@st, SizeOf(SYSTEMTIME));
  DateTimeToSystemTime(dt, st);
  GetDateFormat(LOCALE_USER_DEFAULT, 0, @st, PChar(format), buffer, 256);
  result := UpperCase(buffer);
  FreeMem(buffer);
end;

// По таймеру
procedure TForm1.Timer1Timer(Sender: TObject);
var
  dt: TDateTime;
  yy, mm, dd, ww: word;
begin
  dt := now; // время, которое хотим показывать
  DecodeDate(dt, yy, mm, dd);
  ww := DayOfWeek(dt);
  Label1.Caption := IntToStr(dd); // день
  case lang of
  1: begin // русский
      Label2.Caption := mm1[mht].ru; // месяц
      Label3.Caption := ww1[ww].ru; // день недели
    end;
  2: begin // английский
      Label2.Caption := mm1[mht].en; // месяц
      Label3.Caption := ww1[ww].en; // день недели
    end;
  else // язык системы
      Label2.Caption := GetDateName(dt, 'MMMM');
      Label3.Caption := GetDateName(dt, 'dddd');
  end;
  Label2.Font.Size := mm1[mht].size; // размер шрифта месяца
  Label3.Font.Size := ww1[ww].size; // размер шрифта дня недели
  if y = 0 then
  begin
    label4.Font.Size:=28;
    Label4.Caption := FormatDateTime('hh:mm:ss', dt); // время
  end else
  begin
    label4.Font.Size:=42;
    Label4.Caption := FormatDateTime('hh:mm', dt); // время
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  // создаём таймер в любом удобном месте. Либо просто бросаем на форму
  TTimer.Create(self).OnTimer := Timer1Timer;
end;


Просто брось на форму 4 лабела. 
Желательно ещё и таймер настроить. Хотя можно и по кнопке или на создание формы подвесить.
PM MAIL   Вверх
valerchi
Дата 28.2.2018, 23:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 163
Регистрация: 27.5.2008
Где: Геническ

Репутация: нет
Всего: нет



Ох как не хотелось мне с этим таймером возиться. Но видимо придётся.... Ладно, спасибо, попытаюсь разобраться
PM MAIL   Вверх
valerchi
Дата 3.3.2018, 08:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 163
Регистрация: 27.5.2008
Где: Геническ

Репутация: нет
Всего: нет



Цитата(Snowy @ 28.2.2018,  14:14)
А зачем ты вообще это в цикле делаешь? Делай по таймеру. Вот пример:

[code=delphi]type
    TTimeItem = record
 ....
Просто брось на форму 4 лабела. 
Желательно ещё и таймер настроить. Хотя можно и по кнопке или на создание формы подвесить.

Snowy, спасибо. Начал потихоньку разбираться. Это интересно smile 
PM MAIL   Вверх
valerchi
Дата 6.3.2018, 09:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 163
Регистрация: 27.5.2008
Где: Геническ

Репутация: нет
Всего: нет



Кстати, решил проблему на счёт label. Вместо label2.Caption:=' '; пишу label2.Caption:='                              '+#13+'                              ';
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.1239 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.