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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Обновление TLabel на родительской MDI форме, как? 
:(
    Опции темы
ShadeSt
Дата 21.12.2006, 14:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Добавил на родительскую MDI форму метку (TLabel), добавил таймер, который тикает с интервалом 1000 мс. и сделал так:
Код

procedure TMainForm.TimerOnTime(Sender: TObject);
begin
  Label1.Caption := 'До нового года осталось: ' + #13#10 + FormatDateTime('D дней HH часов MM минут SS секунд', T);
  Label1.Refresh; // наличие и отсутствие данной строки не на что не влияет.
end;


после чего был удивлен тому, что метка не перерисовывается.
Почему такое происходит, с чем это связано и как это побороть?

спсб.

Это сообщение отредактировал(а) ShadeSt - 21.12.2006, 14:28


--------------------
It's nice to be importand, but it's more importand to be nice © Scooter
PM MAIL ICQ Jabber   Вверх
Rodman
Дата 21.12.2006, 14:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


CIO
****


Профиль
Группа: Участник
Сообщений: 6144
Регистрация: 7.5.2006
Где: Ukraine ⇛ Kyiv ci ty

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



попробуй
Код

procedure TMainForm.TimerOnTime(Sender: TObject);
begin
  Application.Progress;
  Label1.Caption := 'До нового года осталось: ' + #13#10 + FormatDateTime('D дней HH часов MM минут SS секунд', T);
  Label1.Refresh; // наличие и отсутствие данной строки не на что не влияет.
  Application.Progress;//если я правильно помню... 
end;

PM MAIL WWW Skype GTalk YIM MSN   Вверх
ShadeSt
Дата 21.12.2006, 14:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Rodman, такого метода нет.

есть ProcessMessages; но не в нем дело. приложение сообщения отрабатывает.
дело видимо в том, что метка находится на форме, у которой:
Код

  FormStyle := fsMDIForm





--------------------
It's nice to be importand, but it's more importand to be nice © Scooter
PM MAIL ICQ Jabber   Вверх
Snowy
Дата 21.12.2006, 15:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



А таймер точно работает?
А T точно меняется?
PM MAIL   Вверх
ShadeSt
Дата 21.12.2006, 15:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(Snowy @  21.12.2006,  15:46 Найти цитируемый пост)
А таймер точно работает?А T точно меняется?

Да, точно. 
Пробовал даже делать новый проект, в котором вообще ничего нет, кроме таймера и метки на форме.
из кода только это:
Код

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  label1.Caption := timetostr(now);
end;


если у формы ставлю FormStyle := fsNormal - то все работает, если ставлю fsMDIForm то не работает.
Самое интересное то, что на форме метка прибывает с 
caption = 'asdf'
после запуска проходит секунда, и метка обновляется на текущее время, а вот после этого глухо как в танке. для того, что бы текст метки обновился надо либо 
Код

  label1.visible := false;
  label1.visible := true;

либо
Код

  sendmessage(self.handle, wm_resize, 0, 0)

вобщем кривые решения smile((

еще для проверки делал так:
Код

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  label1.Caption := timetostr(now);
  Caption := label1.Caption;
end;

в итоге в заголовке формы время тикает, а метка не перерисовывается.

Это сообщение отредактировал(а) ShadeSt - 21.12.2006, 16:07


--------------------
It's nice to be importand, but it's more importand to be nice © Scooter
PM MAIL ICQ Jabber   Вверх
ShadeSt
Дата 24.12.2006, 20:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Как вариант решения данной проблемы - поместить Label в TPanel.



--------------------
It's nice to be importand, but it's more importand to be nice © Scooter
PM MAIL ICQ Jabber   Вверх
valentos
Дата 24.12.2006, 21:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Цитата

Label1.Caption := 'До нового года осталось: ' + #13#10 + FormatDateTime('D дней HH часов MM минут SS секунд', T);    
  Label1.Refresh; // наличие и отсутствие данной строки не на что не влияет.


Блин, я с токой проблемой также столкнулся, тока у меня в Label1 должна была отображаться инфа о ходе загрузки программы и также ничего не отображалось.
 Выход следующий:
Код

procedure TMainForm.TimerOnTime(Sender: TObject);    
begin    
  Label1.Caption := 'До нового года осталось: ' + #13#10 + FormatDateTime('D дней HH часов MM минут SS секунд', T);    
 // Label1.Refresh; // Это нах... не надо 
 Label1.Update;// Так будет обновляться
    
end;


--------------------
[code=sql]select name, telephone from Girls where age between 20 and 25 and (.)(.) >= 2 order by IQ desc [/code]
PM MAIL   Вверх
ShadeSt
Дата 26.12.2006, 09:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Код

  Label1.Update;

неа, не помогло.

хотя, вобщем-то необходимость в том, что бы иметь метку на MDI форме отпала, но все же интересно почему такая проблема существует.


--------------------
It's nice to be importand, but it's more importand to be nice © Scooter
PM MAIL ICQ Jabber   Вверх
Winprogrammer
Дата 13.1.2007, 17:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 141
Регистрация: 23.3.2006
Где: ::Россия.РСО-Алан ия.Владикавка

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



Цитата(Rodman @ 21.12.2006,  14:30)
Код

  Application.Progress;//если я правильно помню... 

Не progress, а 
Код

 Application.ProcessMessages.

Или попробуй
Код

 Label1.Invalidate;

--------------------
Я не понял Вашего вопроса, но я Вам на него отвечу…-----------
Uploading файлов без гемороя - это просто!!!
Winprogrammer.ifolder.ru
PM MAIL WWW ICQ Skype GTalk Jabber   Вверх
ShadeSt
Дата 15.1.2007, 10:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



ни 
Код

  Label1.Invalidate;

ни
Код

  InvalidateRect()

не помогают smile


--------------------
It's nice to be importand, but it's more importand to be nice © Scooter
PM MAIL ICQ Jabber   Вверх
CatATonik
Дата 15.1.2007, 10:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Код

InvalidateRect(MainForm.ClientHandle, nil, False);

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

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

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

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

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


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

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


 




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


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

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