Treumer |
Отправлено: 24.02.2005, 11:26 |
|
Станционный диспетчер
Группа: Участник
Сообщений: 92
|
Вызываю немодальную форму следующим образом:
DBUpdate->Show();
На форме лежат TPanel, TLabel, TProgressBar.
Затем изменяю прогресс в TProgressBar.
TProgressBar прогресс отображает, а вот TPanel, TLabel так и не отображаются!
В чем может быть дело, а ?!
|
|
AVC |
Отправлено: 24.02.2005, 11:51 |
|
Ветеран
Группа: Модератор
Сообщений: 1583
|
А если вызвать Invalidate то же не отображается? |
|
Treumer |
Отправлено: 24.02.2005, 12:11 |
|
Станционный диспетчер
Группа: Участник
Сообщений: 92
|
QUOTE (AVC @ 24/02/2005, 11:51) | А если вызвать Invalidate то же не отображается? |
Нет! |
|
AVC |
Отправлено: 24.02.2005, 12:33 |
|
Ветеран
Группа: Модератор
Сообщений: 1583
|
Значит вы не тому Label'у меняете Caption.
Вот коду N лет — еще не подводил. Найдите отличия.
CODE |
PACKAGE void __fastcall Msg4lShow
(const AnsiString& msg1
,const AnsiString& msg2
,const AnsiString& msg3
,const AnsiString& msg4
)
{
if (F_Msg4l == NULL) F_Msg4l = new TF_Msg4l(Application);
const AnsiString estr = "";
if (!F_Msg4l->Visible) // Init show
{ F_Msg4l->Label1->Caption = (msg1.IsEmpty())? estr: msg1;
F_Msg4l->Label2->Caption = (msg2.IsEmpty())? estr: msg2;
F_Msg4l->Label3->Caption = (msg3.IsEmpty())? estr: msg3;
F_Msg4l->Label4->Caption = (msg4.IsEmpty())? estr: msg4;
F_Msg4l->Show();
}
else // Change message
{ if (!msg1.IsEmpty()) F_Msg4l->Label1->Caption = msg1;
if (!msg2.IsEmpty()) F_Msg4l->Label2->Caption = msg2;
if (!msg3.IsEmpty()) F_Msg4l->Label3->Caption = msg3;
if (!msg4.IsEmpty()) F_Msg4l->Label4->Caption = msg4;
}
F_Msg4l->Update();
}
| |
|
Treumer |
Отправлено: 24.02.2005, 12:36 |
|
Станционный диспетчер
Группа: Участник
Сообщений: 92
|
Я создаю форму следующим кодом:
Application->CreateForm(__classid(TDBUpdate), &DBUpdate);
Может в этом дело ?! |
|
AVC |
Отправлено: 24.02.2005, 13:01 |
|
Ветеран
Группа: Модератор
Сообщений: 1583
|
Нет (проверено). |
|
Treumer |
Отправлено: 24.02.2005, 13:08 |
|
Станционный диспетчер
Группа: Участник
Сообщений: 92
|
Ну вот тут .dfm файл, где же ошибка ?!
CODE |
object DBUpdate: TDBUpdate
Left = 280
Top = 207
Cursor = crHourGlass
AutoScroll = False
Caption = 'Datbaseupdate'
ClientHeight = 171
ClientWidth = 402
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -13
Font.Name = 'MS Sans Serif'
Font.Style = []
OldCreateOrder = False
Visible = True
OnShow = FormShow
PixelsPerInch = 120
TextHeight = 16
object Panel1: TPanel
Left = 0
Top = 0
Width = 402
Height = 171
Align = alClient
BevelInner = bvLowered
TabOrder = 0
object DBUpdateLabel: TLabel
Left = 40
Top = 16
Width = 320
Height = 42
Alignment = taCenter
Caption = 'Databaseupdate'
FocusControl = DBUpdateProgress
Font.Charset = DEFAULT_CHARSET
Font.Color = clHighlight
Font.Height = -35
Font.Name = 'Tahoma'
Font.Style = []
ParentFont = False
end
object DBUpdateProgress: TProgressBar
Left = 40
Top = 80
Width = 320
Height = 49
Min = 0
Max = 100
TabOrder = 0
end
end
end
| |
|
AVC |
Отправлено: 24.02.2005, 13:59 |
|
Ветеран
Группа: Модератор
Сообщений: 1583
|
Подключил ваш dfm. (На будущее — лучше прикрепляйте обычные файлы к сообщению)
На другой форме поставил кнопку, при нажатии
DBUpdate->DBUpdateLabel->Caption = FormatDateTime("dd.mm.yyyy hh:nn:ss", Now());
DBUpdate->Show();
И как вы думаете, что я вижу если ее нажимаю? Правильно — текущее время.
Так что ошибок нет. |
|
Boyko |
Отправлено: 24.02.2005, 14:46 |
|
Станционный диспетчер
Группа: Участник
Сообщений: 88
|
А если вызвать Application->ProcessMessages() то же не отображается? |
|
Treumer |
Отправлено: 24.02.2005, 15:46 |
|
Станционный диспетчер
Группа: Участник
Сообщений: 92
|
QUOTE (Boyko @ 24/02/2005, 14:46) | А если вызвать Application->ProcessMessages() то же не отображается? |
О! Спасибо!
Сработало! |
|
Gedeon |
Отправлено: 24.02.2005, 17:28 |
|
Ветеран
Группа: Модератор
Сообщений: 1742
|
Жаль труда и времени AVC
|
|
Rius |
Отправлено: 25.02.2005, 22:03 |
|
Мастер участка
Группа: Участник
Сообщений: 321
|
Я когла-то делал так (в главном файле проекта):
CODE | FormSplash = new TFormSplash(Application);
FormSplash->Show();
FormSplash->Update();
Application->Initialize();
FormSplash->Label->Caption = "Создание главного окна...";
FormSplash->Update();
Application->HelpFile = "";
Application->Title = "БД Билеты";
Application->CreateForm(__classid(TFormMain), &FormMain);
FormSplash->Label->Caption = "Создание окна календарей...";
FormSplash->Update();
Application->CreateForm(__classid(TFormCalend), &FormCalend);
FormSplash->Label->Caption = "Железные дороги...";
FormSplash->Update();
.....
FormSplash->Label->Caption = "Запуск...";
FormSplash->Update();
FormSplash->Close();
delete FormSplash;
Application->Run();
|
|
|