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

Ллирик

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

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

  • Посещение

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

  1. Подскажите, пожалуйста, как сделать эффект нажатия кнопки? Пробовал поиграться с TFloatAnimation.Property.Scale, но уменьшение масштаба идёт не к центру, а к левому верхнему углу и никакие выравнивания по центру не помогают. То есть какую анимацию из TAnimatiom надо применить к Buttonstyle в StyleBook, чтобы получить эффект уменьшения изображения к центру?


    Сделал 4 анимации TFloatAnimation. Две на Padding и по одной на ширину и высоту, но анимация почему-то срабатывает с задержкой, хотя delay и duration поставлены на 0

  2. 1 час назад, krapotkin сказал:

    в том, что на билдере выполнение процедуры останавливается в ShowMessage

    код

    
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
       Label1->Text = L"До";
       ShowMessage(L"Привет");
       Label1->Text = L"После";
    }

     

    Да, действительно код не останавливается. Но четыре месяца назад я писал приложение в билдере, в котором при вызове ShowMessage выполнение кода останавливалось и мой друг может это подтвердить)  В общем чудеса какие-то.....)

     

    1 час назад, krapotkin сказал:

    по поводу алгоритма закрытия формы через N секунд

    нужно вызвать из таймера диалог с сообщением. (лучше взять у ZuBy уже предложенную библиотеку MyDialogs. я начинал ее делать именно из-за того, что стандартные диалоги не вывозят)

    а на закрытие диалога повесить form.Release

    тогда все будет как вы хотите

    сначала выйдет сообщение. Потом закроется форма

    Так мне не нужно, чтобы форма сама закрывалась

  3. 1 час назад, Kitty сказал:

    В этой теме:

    http://fire-monkey.ru/topic/3760-there-is-no-overloaded-version-of-messagedialog-that-can-be-called-with-these-arguments/#comment-23646

    я хотела ответить автору кодом из С++ Builder и скриншотами, что он не прав. Но жаль, что тему закрыли.

    И в чём же я был не прав, Сударыня?

  4. 4 часа назад, krapotkin сказал:

    что вообще происходит?

    вам нужно вызвать диалог через 10 секунд?

    Так это просто пример) В моем приложении таймер устанавливается на 30 секунд и срабатывает отдельно от других диалогов, если пользователь не успел правильно ответить на вопрос

  5. 17 часов назад, Равиль Зарипов (ZuBy) сказал:

    посмотрите вот этот пример

    Если в Вашем примере добавить вызов TMyMsgDlg.Create по таймеру, например так

    procedure TFormMain.Button3Click(Sender: TObject);
    var
      mY: TMyMsgDlg;
    begin
      mY := TMyMsgDlg.Create('Вывести сообщение по закрытию окна?', self,
        procedure
        begin
          ShowMessage('Сообщение по закрытию окна');
        end, false);
      mY.ShowMe;
      timerr := 10;
      Timer1.Enabled := true;
    end;
    
    procedure TFormMain.Timer1Timer(Sender: TObject);
    var
      mY: TMyMsgDlg;
    begin
    Timerr := Timerr -1;
    if Timerr = 0 then begin
    Timer1.Enabled := false;
      mY := TMyMsgDlg.Create('Таймер сработал!!!! Вывести сообщение по закрытию окна?', self,
        procedure
        begin
          ShowMessage('Сообщение по закрытию окна');
        end, false);
      mY.ShowMe;
      end;
    end;

    , то на андроиде будет точно такой же глюк, как у меня, то есть если на экране сообщение 'Вывести сообщение по закрытию окна?', то сообщение 'Таймер сработал!!!! Вывести сообщение по закрытию окна?' на экране не появится

  6. 50 минут назад, chaplin.u@gmail.com сказал:

    Я имею ввиду 

    
    Buttton

    как говорит Леонид Якубович : в этом слове есть 3 такие буквы значит вам полагается шкатулочка...

    Если тут была бы ошибка, то компилятор просто бы не скомпилировал программу) Так что тут никакой ошибки нет))

  7. 9 часов назад, krapotkin сказал:

    не нужно ничего закрывать из модального окна. и в других ОС тоже.

    его нужно использовать как и везде для диалога с юзером.

    просто та часть, где идет проверка и реакция на ввод, сейчас живет в отдельной процедуре

    соответственно if Result = mrOk then Application.Terminate;

    
    procedure ExitQwery(MainSelf: TForm);

     

    Не понял, а я как тогда сделал? Чем Ваш код отличается от моего? И у меня главный вопрос всё таки второй. Он вообще никак не связан с первым

  8. Вопрос 1. Как закрыть приложение из модального окна на андроиде? Делаю так:

    
    procedure ExitQwery(MainSelf: TForm);
    var
      FormExitQwery: TFormExitQwery;
    begin
      Application.CreateForm(TFormExitQwery, FormExitQwery);
      FormExitQwery.BringToFront;
      FormExitQwery.StyleBook := MainSelf.StyleBook;
      FormExitQwery.Label1.Width := 1;
      FormExitQwery.ShowModal(
        procedure(Result: TModalResult)
        begin
          if Result = mrOk then
          begin
                  FormExitQwery.Free;
                  MainSelf.Close;
                  MainSelf.Free;
     Application.Terminate;
           end
          else if Result = mrCancel then
          begin
            FormExitQwery.CloseModal;
            FormExitQwery.Free;
          end;
    
        end);
    end;
    
    procedure TFormExitQwery.Close(Sender: TObject; var Action: TCloseAction);
    begin
      Action := TCloseAction.caFree;
    end;
    
    end.

    , но приложение не закрывается.

     

    Вопрос 2. По нажатию на TImage и по таймеру создаются два модальных окна

    procedure ShowMessageModal(Self: TForm; const AMessage: string;
      ADefProc: TProc);
    var
      locMessageForm: TMessageForm;
    begin
      Application.CreateForm(TMessageForm, locMessageForm);
      locMessageForm.BringToFront;
      // locMessageForm.ModalResult := mrOk;
      locMessageForm.CurWidth := false;
      locMessageForm.SelfWidth := Self.Width;
      locMessageForm.StyleBook := Self.StyleBook;
    //  locMessageForm.Parent := Self;
      locMessageForm.MessText.BeginUpdate;
      locMessageForm.MessText.Text := AMessage;
      locMessageForm.MessText.EndUpdate;
      locMessageForm.ButtonHeight := Round(locMessageForm.Buttton.Height);
      locMessageForm.ButtonWidth := Round(locMessageForm.Buttton.Width) + 24;
      locMessageForm.MessText.Width := 1;
      locMessageForm.Buttton.ModalResult := mrOk;
      locMessageForm.showModal(
        procedure(Result: TModalResult)
        begin
          if Result = mrOk then
          begin
            ADefProc();
            locMessageForm.CloseModal;
          end;
        end);
    end;
    
    end.

    Если на экране смартфона уже есть окно от нажатия на TImage, то окно по таймеру уже не показывается. Как быть?

  9. В 03.02.2017 в 20:08, krapotkin сказал:

    берем форму и вызываем ее модально. все почти так же как и раньше
     

    
    f:=TForm2.Create(NIL);
    f.showModal(procedure (Result:TModalResult) begin
    if result = mrOk then begin 
    end;
    end);
    
    

    не забыть на кнопки OK Cancel у TForm2 установить свойства ModalResult

    Выполнение кода всё равно не останавливается

  10. В C++ builder при вызове showMessage  выполнение кода останавливается, а в делфи нет, но в C++ builder есть другой глюк, поэтому написал всё на делфи. Теперь только осталось решить проблему остановки выполнение кода при вызове showMessage 

  11. Пытаюсь создать модальное окно вот так:

    procedure ShowMessageModal(const AMessage: string);
    var
      ACloseDialogEvent: TInputCloseDialogEvent;
      DialogSvc: IFMXDialogService;
    begin
      DialogSvc.MessageDialog(Translate(AMessage), TMsgDlgType.mtCustom,
        [TMsgDlgBtn.mbOK], TMsgDlgBtn.mbOK, -1, -1, nil, nil,
        procedure(const AResult: TModalresult)
        begin
          if Assigned(ACloseDialogEvent) then
            ACloseDialogEvent(DialogSvc.MessageDialog, AResult);
        end);
    end;

    но выдаёт

    Цитата

    [dcc32 Error] MessageModal.pas(27): E2250 There is no overloaded version of 'MessageDialog' that can be called with these arguments

    Пожалуйста, подскажите как решить проблему

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