Есть sleep(); но с ним программа как бы зависает. Я эту процедуру в цикле использую. Есть что-либо подобное sleep'a? Или как-то по другому надо ее использовать?
Автор: hiv 24.11.2006 21:27
Цитата(Koresh @ 24.11.2006 17:00)
Есть sleep(); но с ним программа как бы зависает. Я эту процедуру в цикле использую.
И правильно делает. Ведь эта команда так и переводится. При этом другие процессы и нити могут дальше работать пока твоя программа "спит".
Цитата(Koresh @ 24.11.2006 17:00)
Есть что-либо подобное sleep'a? Или как-то по другому надо ее использовать?
Есть: делать sleep в параллельно выполняющейся нити TThread, тогда твоя программа "основной процесс" будет жива и откликаться.
Автор: Koresh 24.11.2006 21:41
procedure TForm1.MFileMouseMove(Sender: TObject; Shift: TShiftState; X,Y: Integer); var i:integer; begin form1.Canvas.Pen.Color:=clred; for i:=0 to 99 do begin; sleep(1); form1.Canvas.MoveTo(50,i+50); form1.Canvas.LineTo(100,i+50); end; end;
procedure TFile.CMMouseLeave(var msg: TMessage); var i:integer; begin inherited; form1.Canvas.Pen.Color:=clBtnFace; for i:=99 downto 0 do begin; sleep(1); form1.Canvas.MoveTo(50,i+50); form1.Canvas.LineTo(100,i+50); end; end;
Две процедуры: одна при наведении, другая при отведении... Куда этот sleep поставить... я с TThread не понял
Автор: hiv 24.11.2006 22:11
А здесь и не надо TThread. 1 милисекунда для отбражения окон - ерунда.
Автор: Koresh 24.11.2006 22:24
Цитата(hiv @ 24.11.2006 22:11)
А здесь и не надо TThread. 1 милисекунда для отбражения окон - ерунда.
Это у меня что-то типо попап меню, если без этой одной милисекунды, то оно моментально выскочит, а мне надо, чтоб с задержкой и без лагов... Объясните что за TThread и как его использовать, очень уж надо
Автор: hiv 27.11.2006 15:12
Цитата(Koresh @ 24.11.2006 18:24)
Объясните что за TThread и как его использовать, очень уж надо
Рекомендуем загрузить DRKB (см. выше) Win32 многозадачная среда - TThread позволяет этим пользоваться. ЗЫ: какие могут быть лаги за 1 млсек