Перейти к содержанию
Fire Monkey от А до Я

GASCHE

Пользователи
  • Постов

    208
  • Зарегистрирован

  • Посещение

  • Победитель дней

    12

Сообщения, опубликованные GASCHE

  1. 1 час назад, лёля сказал:

    Image1->Path->LineTo(TPointF(Image2.Position.X, Image2.Position.Y));

    Сюда вместо Image2.Position.X, Image2.Position.Y подставлять преобразованные координаты Х, Y из 

     

    В 20.04.2019 в 19:39, dnekrasov сказал:

    procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Single);

     

  2. 5 минут назад, Yarpda сказал:

    Конечно программа.

    А так

    procedure TForm1.Timer1Timer(Sender: TObject);
    begin
       label1.text = query.fiеlds[0].asstring;
       [.... делаем что-то, где срок выполнения задачи может быть разным]

       IF NOT Query.Eof THEN
          Timer1.Enabled := False
       ELSE
          Query.next;
    END;
    не получается?

  3. 9 часов назад, #WAMACO сказал:

    так у вас и не "встанет колом", так как ничего и не делается! где sleep(1000) (длительная операция имеется ввиду)?

    У меня так 

    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.

     

  4. 37 минут назад, krapotkin сказал:

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

    Согласен.

  5. 10 часов назад, krapotkin сказал:

    это намекает что автор какбе не верит в однопоточность  ))) и думает, что волшебные силы могут что-то делать с таймером в то время пока выполняется этот кусок кода ))))

    Верю, но думаю что таймер работает в отдельном потоке и по завершению заданного периода времени из него вызывается функция Timer1Timer, но не уверен что при этом происходит синхронизация с основным потоком,.

  6. В 02.04.2019 в 18:00, Yarpda сказал:

    Тут приведен просто пример, а на самом деле же нужно выполнять какой-то код в программе, который будет вместо sleep(100), а если это делать, то все встанет колом

    Чтоб не "встало колом" можно так ? 

    procedure TForm1.Timer1Timer(Sender: TObject);
    begin

       ProgressBar1.Value:=iI;
       Timer1.Enabled := False;
       Inc( iI );
       sleep(100);
       IF iI <= 100 THEN
          Timer1.Enabled := True;
    end;
    Вместо sleep(100) можно выполнять любой код.
     

  7. 14 часов назад, Yarpda сказал:

    Тут приведен просто пример, а на самом деле же нужно выполнять какой-то код в программе, который будет вместо sleep(100), а если это делать, то все встанет колом едва запустившись.

    Ну извините я не Кашпировский чтобы догадаться какой код нужно выполнять вместо sleep(100), и естественно на болванку я предложил такую же болванку. Как реально все это синхронизировать это дело автора вопроса если он захочет этим воспользоваться. У меня весь "sleep(100)" работает в потоке, проблем с синхронизацией нет. 

     

    14 часов назад, Yarpda сказал:

    В общем это решения ОЧЕНЬ спорное на мой взгляд.

    Предложите своё и, если оно будет проще непременно им воспользуюсь.

  8. В 22.03.2019 в 12:03, gonzales сказал:

    И еще, если я в своем классе TThread создаю форму для отображение прогресс бара

    Если 

     

    13 часов назад, gonzales сказал:

    Я хочу открыть соединение с сервером и получать в него данные, пока живо приложение

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

  9. 6 часов назад, gonzales сказал:

    И еще, если я в своем классе TThread создаю форму для отображение прогресс бара

    Пожалейте пользователя, перед глазами две формы плюс splash форма да еще форма с  прогресс баром при этом на каждой что-то меняется куда ему смотреть и на какой жать клавиши ☺️

  10. 18 часов назад, krapotkin сказал:

    как хорошо, что в Андроиде наконец всех отучат от этого крайне вредного трюка

    C этим согласен, но как бы было хорошо если бы андроид научили "тормозить" потоки типа WaitForSingleObject. 

  11. 12 часов назад, gonzales сказал:

    sleep здесь исключительно для наглядности, и вообще весь код

     

    21 час назад, gonzales сказал:

    Можно. Но этот выход не выход)))

    Вы бы прикрепили исходники с имитацией вашей проблемы может кто что и подскажет, а так будем долго обсуждать что у вас не получается. 

  12. 8 часов назад, gonzales сказал:

    Можно. Но этот выход не выход

    Полностью с вами согласен, но каков вопрос...

     

    8 часов назад, gonzales сказал:

    Боюсь представить, какой код будет в таком случае

    Да все просто использовать 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;

     

  13. 5 часов назад, gonzales сказал:

    Как заставить это все работать без ProcessMessages?

    Можно так

    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;
     

  14. 6 часов назад, Nick Peterson сказал:

    но жаль потраченного месяца работы

    Зато столько интересного для себя обнаружили и сколько обнаружите потом при переходе  на новую версию ☺️

×
×
  • Создать...