![]() |
|
|
#1
|
|||
|
|||
|
Вообщем я хочю сделать такую тему: есть 3 lable, visible у них false, мне необходимо сделать так чтобы свойство visible у них стало true, но только не сразу, а поочереди! как бы 1 label появляется за другим (скажем через 2 секунды). Я прочел что есть такая тема как sleep пишу:
label1.visible:=true; sleep(20); label2.visible:=true; sleep(20); label3.visible:=true; Я думал что появится первая натпись, через 2 сек вторая и еще через 2 третяя... но нифига нажимаю на кнопку и через некоторое время появляются срузу 3 label'a... что мне сделать? как решить проблемму? может мне использовать не sleep помогите плиз! Последний раз редактировалось Admin, 18.01.2009 в 13:06. |
|
#2
|
|||
|
|||
|
Перед Sleep попробуй
Код:
Application.ProcessMessages |
|
#3
|
||||
|
||||
|
Код:
label1.show; self.update; sleep(2000); label2.show; self.update; ..... |
|
#4
|
||||
|
||||
|
попробуй
Код:
Delay |
|
#5
|
|||
|
|||
|
Спасибо большое, сделал как M.A.D.M.A.N. сказал, работает!
Нехочу тупо копировать неразобравшись. Что такое sleep(2000) я понимаю, а что такое self.update;??? |
|
#6
|
||||
|
||||
|
Self.Update-обновить(перерисовать) форму. В обычных случаях не обязательно, но в циклах, sleep'ах и т.п. вещь незаменимая. Только замедлить выполнение циклов может. Сильно.
|
|
#7
|
|||
|
|||
|
[Error] Unit1.pas(116): Undeclared identifier: 'self'
решил попробовать... ужас... |
|
#8
|
|||
|
|||
|
Form1.Update
|
|
#9
|
|||
|
|||
|
Вообщем как мне подсказали, так я и сделал... все в принцапе работает, строки появляются одна за другой!
Цитата:
|
|
#10
|
|||
|
|||
|
создаешь timer
пишешь: Код:
var
global: integer=0; {можно byte}
...
procedure TForm1.Timer2Timer(Sender: TObject);
begin
case global of
0: label1.show;
1: self.update;
2: label2.show;
3: self.update;
{сколько угодно, пока не будет переполнения типа))))}
end;
global := global+1
end
end;Последний раз редактировалось ApplicatiOn, 20.01.2009 в 19:48. Причина: tegs |
|
#11
|
|||
|
|||
|
и что типо типо если я так напишу то sleep 2 таймер незатронет?
|
|
#12
|
|||
|
|||
|
зачем тебе sleep??
|
|
#13
|
|||
|
|||
|
кстати лучше так будет:
Код:
var
global: integer=0; {можно byte}
...
procedure TForm1.Timer2Timer(Sender: TObject);
begin
case global of
0:
begin
label1.show;
self.update;
end;
1:
begin
label2.show;
self.update;
end;
{сколько угодно, пока не будет переполнения типа))))}
end;
global := global+1
end
end;а еще лучше присвоить каждому tag и обрабатывать (пардон, не в цикле а в таймере) Последний раз редактировалось ApplicatiOn, 20.01.2009 в 19:58. |
|
#14
|
|||
|
|||
|
я незнаю понял ли ты меня... дело в том что есть несколько десятков label(ов) изначально их невидно, и мне нужно релизовать появление их по очереди... это я сделал, с помощью sleep и все было бы хорошо еслибы во время появления label(ов) мне недано было чтобы они динамически изменялись в цвете... я создал кнопку и прописал в ней
Цитата:
|
|
#15
|
|||
|
|||
|
1ый таймер изменяет цвета.
2ой таймер отображает label's (таймер, пример которого дал тебе я) что непонятного? если их десятки, то: Код:
var
global: integer=0; {можно byte}
...
procedure TForm1.Timer2Timer(Sender: TObject);
begin
case global of
0:
begin
label1.show;
self.update;
end;
1:
begin
label2.show;
self.update;
end;
2:
begin
label3.show;
self.update;
end;
3:
begin
label4.show;
self.update;
end;
4:
begin
label5.show;
self.update;
end;
// и т.д.
end;
global := global+1
end
end;а в интервале у таймера ставиш 2000 (2 сек) еще раз повторяю, что это второй таймер... а в первом меняешь цвета... |