-
Постов
208 -
Зарегистрирован
-
Посещение
-
Победитель дней
12
Весь контент GASCHE
-
Сюда вместо Image2.Position.X, Image2.Position.Y подставлять преобразованные координаты Х, Y из
-
Согласно этому получилось так Path3D1->Path->MoveTo(TPointF(0,0)); Path3D1->Path->LineTo(TPointF(0,0));
-
Теорию можно посмотреть здесь. Там же есть ссылка на пример, правда на Python.
-
Увы показалось что вернули дату изменения ?
-
У меня совпадает с московским
-
У меня так procedure TForm1.Timer1Timer(Sender: TObject); VAR iJ : Integer; begin ProgressBar1.Value:=iI; Label1.Text := iI.ToString ; //Timer1.Enabled := False; Inc( iI ); //sleep(100); for iJ := 0 to 100000000 do LT := LT + 1; IF iI > 100 THEN Timer1.Enabled := False; end; не "встает" хоть sleep хоть FOR.
-
Ну извините я не Кашпировский чтобы догадаться какой код нужно выполнять вместо sleep(100), и естественно на болванку я предложил такую же болванку. Как реально все это синхронизировать это дело автора вопроса если он захочет этим воспользоваться. У меня весь "sleep(100)" работает в потоке, проблем с синхронизацией нет. Предложите своё и, если оно будет проще непременно им воспользуюсь.
-
Если нет данных и вы хотите отобразить их загрузку, то что будет делать в это время основной поток? Основной поток простаивает зачем нужен дополнительный? Если в основном потоке работает пользователь, то зачем ему надо показывать прогресс бар?
-
Пожалейте пользователя, перед глазами две формы плюс splash форма да еще форма с прогресс баром при этом на каждой что-то меняется куда ему смотреть и на какой жать клавиши
-
C этим согласен, но как бы было хорошо если бы андроид научили "тормозить" потоки типа WaitForSingleObject.
-
Вы бы прикрепили исходники с имитацией вашей проблемы может кто что и подскажет, а так будем долго обсуждать что у вас не получается.
-
Полностью с вами согласен, но каков вопрос... Да все просто использовать application.ProcessMessages и sleep не есть хорошо, и если это убрать и использовать таймер, то код будет довольно прост procedure TForm1.Button2Click(Sender: TObject); begin IF NOT Timer1.Enabled THEN BEGIN Label1.Text := '0'; Timer1.Enabled := True; END; end; procedure TForm1.Timer1Timer(Sender: TObject); begin Inc( LT ); Label1.Text := inttostr( LT ); Inc( iI ); IF iI = 5 THEN BEGIN Timer1.Enabled := False; iI := 0; LT := 0; END; end;
-
Можно так procedure TForm1.Button1Click(Sender: TObject); begin Label1.Text := '2'; tthread.CreateAnonymousThread( procedure begin sleep(1000); tthread.Synchronize( tthread.Currentthread, procedure begin Label1.Text := '3'; end); end). Start; end;