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

Кривяков Виталий

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

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

  • Посещение

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

    12

Активность репутации

  1. Like
    Кривяков Виталий получил реакцию от МихаилЪ чайковЪ в TUITabControl   
    Добрый день!
     
    В теме про наш продукт http://fire-monkey.ru/topic/1519-1c-papyc-mobilnoe-prilozhenie-dlia-masterov-priemschiko/ меня просили поделиться исходным кодом компонента TabControl с поддержкой слайда табов пальцем. С удовольствием делюсь
    В составе архива сам компонент и пример его использования.
    FMXUI.zip
  2. Like
    Кривяков Виталий получил реакцию от Maximus в Зависимость от регистра русских символов при использовании LIKE   
    Добрый день!
    В стандартных компонента есть механизм по встраиванию своих функций в SQLite. 
    ... // создаю встроенную функцию ru_lower F1 := TFDSQLiteFunction.Create(nil); F1.DriverLink := WC1; F1.FunctionName := 'ru_lower'; F1.ArgumentsCount := 1; F1.OnCalculate := ru_lower; ... procedure TORMmanager.ru_lower(AFunc: TSQLiteFunctionInstance; AInputs: TSQLiteInputs; AOutput: TSQLiteOutput; var AUserData: TObject); begin AOutput.AsString := AInputs[0].AsString.ToLower; end; SQL:
    select name from users where ru_lower(name) like '%иван%'
    Запрос вернет все имена содержащие иван в любом регистре.
  3. Like
  4. Like
    Кривяков Виталий получил реакцию от Rusland в Асинхронный NetHTTPClient   
    Добрый день!
    Все проще, гораздо.
      Net := THTTPClient.Create;
      Net.BeginPost(
        procedure (const Value : IAsyncResult)
        begin
          AsyncResult(Value); // Вот тут можно вызвать любую процедуру, или просто обработать результат.
        end, URL, InputStream, OutputStream, Headers);
    В анонимной процедуре просто вызываете нужную процедуру, для интерактивной одну, для периодических запросов другую.
  5. Like
    Кривяков Виталий получил реакцию от kami в Асинхронный NetHTTPClient   
    Добрый день!
    Все проще, гораздо.
      Net := THTTPClient.Create;
      Net.BeginPost(
        procedure (const Value : IAsyncResult)
        begin
          AsyncResult(Value); // Вот тут можно вызвать любую процедуру, или просто обработать результат.
        end, URL, InputStream, OutputStream, Headers);
    В анонимной процедуре просто вызываете нужную процедуру, для интерактивной одну, для периодических запросов другую.
  6. Thanks
    Кривяков Виталий получил реакцию от rareMax в Асинхронный NetHTTPClient   
    Добрый день!
    Все проще, гораздо.
      Net := THTTPClient.Create;
      Net.BeginPost(
        procedure (const Value : IAsyncResult)
        begin
          AsyncResult(Value); // Вот тут можно вызвать любую процедуру, или просто обработать результат.
        end, URL, InputStream, OutputStream, Headers);
    В анонимной процедуре просто вызываете нужную процедуру, для интерактивной одну, для периодических запросов другую.
  7. Thanks
    Кривяков Виталий получил реакцию от DMS в Асинхронный NetHTTPClient   
    Добрый день!
    Все проще, гораздо.
      Net := THTTPClient.Create;
      Net.BeginPost(
        procedure (const Value : IAsyncResult)
        begin
          AsyncResult(Value); // Вот тут можно вызвать любую процедуру, или просто обработать результат.
        end, URL, InputStream, OutputStream, Headers);
    В анонимной процедуре просто вызываете нужную процедуру, для интерактивной одну, для периодических запросов другую.
  8. Like
    Кривяков Виталий получил реакцию от dnekrasov в Асинхронный NetHTTPClient   
    Добрый день!
    Все проще, гораздо.
      Net := THTTPClient.Create;
      Net.BeginPost(
        procedure (const Value : IAsyncResult)
        begin
          AsyncResult(Value); // Вот тут можно вызвать любую процедуру, или просто обработать результат.
        end, URL, InputStream, OutputStream, Headers);
    В анонимной процедуре просто вызываете нужную процедуру, для интерактивной одну, для периодических запросов другую.
  9. Like
    Кривяков Виталий получил реакцию от Anatoliy в Возможно ли узнать, что программа написана на Delphi?   
    Можно, по куче признаков:
    1. classes.dex определенного размера
    2. firemonkey и embarcadero - часто встречаются в манифесте.
    3. Темный экран при старте.
    И.т.д.
  10. Like
    Кривяков Виталий получил реакцию от Rusland в Splash Form не отображается   
    Добрый день!
     
    Firemonkey имеет много отличий в работе от VCL. Одно из них связано с порядком создания форм. Когда в модуле проекта вы видите код:
     
    Application.CreateForm(TfrmDM, frmDM);
     
    То это не означает, что форма или модуль будут созданы в в момент исполнения этого вызова, вместо этого программа запомнит, что нужно создать такую форму TfrmDM и поместить указатель на нее в frmDM. Реальное создание форм произойдет при выполнении Application.Run. Поэтому, все обращения к "созданным" формам и модулям в модуле проекта приведет к ошибке.
    Чем еще FM занимается до реального создания основной формы - одним разработчикам известно, и я бы поостерегся выполнять какие либо действия связанные с отрисовкой форм в модуле приложения.
    Набросал пример, посмотрите, возможно такое решение вам подойдет.
    SplashDemo.zip
  11. Like
    Кривяков Виталий получил реакцию от Anatoliy в Анимация пока создается форма   
    Добрый день!
    1. Посмотрите стек при возникновении "stack overflow", та будет видно, что привело к проблеме.
    2. Анимации не будет. Анимация работает в основном потоке приложения. Создание формы тоже происходит в основном потоке, т.е на время создания формы анимация остановиться.
  12. Like
    Кривяков Виталий получил реакцию от TTTimon в Анимация пока создается форма   
    Добрый день!
    1. Посмотрите стек при возникновении "stack overflow", та будет видно, что привело к проблеме.
    2. Анимации не будет. Анимация работает в основном потоке приложения. Создание формы тоже происходит в основном потоке, т.е на время создания формы анимация остановиться.
  13. Like
    Кривяков Виталий получил реакцию от x11 в TUITabControl   
    Добрый день!
     
    В теме про наш продукт http://fire-monkey.ru/topic/1519-1c-papyc-mobilnoe-prilozhenie-dlia-masterov-priemschiko/ меня просили поделиться исходным кодом компонента TabControl с поддержкой слайда табов пальцем. С удовольствием делюсь
    В составе архива сам компонент и пример его использования.
    FMXUI.zip
  14. Like
    Кривяков Виталий получил реакцию от Равиль Зарипов (ZuBy) в Как открыть PDF в стандартном приложении просмотра PDF файлов?   
    function GetDefaultFilePath(const FileName: string): string; begin {$IFDEF Android} Result := TPath.Combine(TPath.GetSharedDocumentsPath, FileName); {$ENDIF} {$IFDEF IOS} Result := TPath.Combine(TPath.GetDocumentsPath, FileName); {$ENDIF} {$IFDEF MSWindows} Result := TPath.Combine(TPath.GetDocumentsPath, FileName); {$ENDIF} ForceDirectories(ExtractFilePath(Result)); end; procedure TForm.ShowPDF; var {$IFDEF Android} Intent: JIntent; {$ENDIF} FilePath, tmpStr: string; begin FilePath := GetDefaultFilePath(Filename); {$IFDEF Android } try Intent := TJIntent.Create; Intent.setAction(TJIntent.JavaClass.ACTION_VIEW); Intent.setDataAndType(StrToJURI('file:' + FilePath), StringToJString('application/pdf')); Intent.setFlags(TJIntent.JavaClass.FLAG_ACTIVITY_NO_HISTORY); Intent.setFlags(TJIntent.JavaClass.FLAG_ACTIVITY_NEW_TASK); SharedActivity.startActivity(Intent); except on E: Exception do ShowToast(E.Message); end; {$ENDIF} {$IFDEF IOS} wbViewPDF.Visible := True; wbViewPDF.URL := 'file:/' + FilePath; {$ENDIF} end; Приблизительно так...
  15. Like
    Кривяков Виталий получил реакцию от Евгений Корепов в [Статья] Как конвертировать растровую картинку в векторный TPath Firemonkey. How to convert a bitmap image (png, jpeg, bmp) into a Firemonkey vector TPath.   
    Добрый день!
    Коллеги, хочу озвучить одну из причин, из-за которой может возникать ситуация " Иногда бывает что при вставке пути в TPath, компонент его отображает некорректно"
    Дело в том, что существуют сокращения в представлении данных и не все из низ TPath понимает, вот с чем столкнулся:
    Есть команда 'c' - рисование кривой. не буду вдаваться в подробности, можно найти в интернете описание, скажу только то, что данная команда содержит 6 чисел. В идеале должно быть:
    сX1 X2 X3 X4 X5 X6
    Но очень часто (например в иконках Material Design) можно встретить:
    c-1.1 0-1.99.9-1.99 2
    И на этой строчке парсер TPath падает с ошибкой, так как пытается сконвертировать '-1.99.9' в число, что не верно. В реальности данная запись соответствует двум числам -1.99 и 0.9.
     
    Для обхода проблемы я загружаю SVG в рантайме, и сроку пропускаю через корректор:
    function CorrectSVG(const Value: String): String; var SB : TStringBuilder; I: Integer; C : Char; begin SB := TStringBuilder.Create; try I := 0; for C in Value do begin if C='.' then Inc(I) else if not CharInSet(C, ['0'..'9']) then I := 0; if I=2 then begin SB.Append(' 0.'); I := 0; end else SB.Append(C); end; Result := SB.ToString; finally FreeAndNil(SB); end; end;  
  16. Like
    Кривяков Виталий получил реакцию от Евгений Корепов в Как рассчитать Baseline для выводимого текста?   
    Добрый день!
    Столкнулся с проблемой вывода текста разного размера по одной линии. Не получается использовать BaseLine доступную для Firemonkey. 
    Baseline -   воображаемая прямая линия, проходящая по нижнему краю прямых знаков без учёта свисаний и нижних выносных элементов. В строке символы текста стоят на базовой линии, а нижние выносные элементы текста «свисают» с неё.
    Из описанного выше ясно, что выводимые символы должны лежать на это линии, но в реале как то все некорректно выводится.
    Сделал два примера VCL (черный фонт) и FireMonkey(черный полупрозрачный фонт), оказалось, что вывод текста осуществляется по разному, при одном и том же значении размера шрифта. Базовая линия в обоих примерах 356.
    Совмещаем отображение символов: GlyphsEqual.png Символы совпали, но базовая линия смещена.
    Совмещаем базовую линию: PosEqual.png Базовая линия совпала, как и верхний край контролов, а вот текст (серый) значительно ниже.
    А теперь собственно вопрос вопрос, где ошибка? Как рассчитать базовую линию для FMX?
     
    P.S.
    Про attributes у TTextLayout знаю.


    BaseLine.rar

  17. Like
    Кривяков Виталий получил реакцию от Rusland в [Статья] Как конвертировать растровую картинку в векторный TPath Firemonkey. How to convert a bitmap image (png, jpeg, bmp) into a Firemonkey vector TPath.   
    Добрый день!
    Коллеги, хочу озвучить одну из причин, из-за которой может возникать ситуация " Иногда бывает что при вставке пути в TPath, компонент его отображает некорректно"
    Дело в том, что существуют сокращения в представлении данных и не все из низ TPath понимает, вот с чем столкнулся:
    Есть команда 'c' - рисование кривой. не буду вдаваться в подробности, можно найти в интернете описание, скажу только то, что данная команда содержит 6 чисел. В идеале должно быть:
    сX1 X2 X3 X4 X5 X6
    Но очень часто (например в иконках Material Design) можно встретить:
    c-1.1 0-1.99.9-1.99 2
    И на этой строчке парсер TPath падает с ошибкой, так как пытается сконвертировать '-1.99.9' в число, что не верно. В реальности данная запись соответствует двум числам -1.99 и 0.9.
     
    Для обхода проблемы я загружаю SVG в рантайме, и сроку пропускаю через корректор:
    function CorrectSVG(const Value: String): String; var SB : TStringBuilder; I: Integer; C : Char; begin SB := TStringBuilder.Create; try I := 0; for C in Value do begin if C='.' then Inc(I) else if not CharInSet(C, ['0'..'9']) then I := 0; if I=2 then begin SB.Append(' 0.'); I := 0; end else SB.Append(C); end; Result := SB.ToString; finally FreeAndNil(SB); end; end;  
  18. Like
    Кривяков Виталий получил реакцию от krapotkin в [Статья] Как конвертировать растровую картинку в векторный TPath Firemonkey. How to convert a bitmap image (png, jpeg, bmp) into a Firemonkey vector TPath.   
    Добрый день!
    Коллеги, хочу озвучить одну из причин, из-за которой может возникать ситуация " Иногда бывает что при вставке пути в TPath, компонент его отображает некорректно"
    Дело в том, что существуют сокращения в представлении данных и не все из низ TPath понимает, вот с чем столкнулся:
    Есть команда 'c' - рисование кривой. не буду вдаваться в подробности, можно найти в интернете описание, скажу только то, что данная команда содержит 6 чисел. В идеале должно быть:
    сX1 X2 X3 X4 X5 X6
    Но очень часто (например в иконках Material Design) можно встретить:
    c-1.1 0-1.99.9-1.99 2
    И на этой строчке парсер TPath падает с ошибкой, так как пытается сконвертировать '-1.99.9' в число, что не верно. В реальности данная запись соответствует двум числам -1.99 и 0.9.
     
    Для обхода проблемы я загружаю SVG в рантайме, и сроку пропускаю через корректор:
    function CorrectSVG(const Value: String): String; var SB : TStringBuilder; I: Integer; C : Char; begin SB := TStringBuilder.Create; try I := 0; for C in Value do begin if C='.' then Inc(I) else if not CharInSet(C, ['0'..'9']) then I := 0; if I=2 then begin SB.Append(' 0.'); I := 0; end else SB.Append(C); end; Result := SB.ToString; finally FreeAndNil(SB); end; end;  
  19. Like
    Кривяков Виталий получил реакцию от Равиль Зарипов (ZuBy) в [Статья] Как конвертировать растровую картинку в векторный TPath Firemonkey. How to convert a bitmap image (png, jpeg, bmp) into a Firemonkey vector TPath.   
    Добрый день!
    Коллеги, хочу озвучить одну из причин, из-за которой может возникать ситуация " Иногда бывает что при вставке пути в TPath, компонент его отображает некорректно"
    Дело в том, что существуют сокращения в представлении данных и не все из низ TPath понимает, вот с чем столкнулся:
    Есть команда 'c' - рисование кривой. не буду вдаваться в подробности, можно найти в интернете описание, скажу только то, что данная команда содержит 6 чисел. В идеале должно быть:
    сX1 X2 X3 X4 X5 X6
    Но очень часто (например в иконках Material Design) можно встретить:
    c-1.1 0-1.99.9-1.99 2
    И на этой строчке парсер TPath падает с ошибкой, так как пытается сконвертировать '-1.99.9' в число, что не верно. В реальности данная запись соответствует двум числам -1.99 и 0.9.
     
    Для обхода проблемы я загружаю SVG в рантайме, и сроку пропускаю через корректор:
    function CorrectSVG(const Value: String): String; var SB : TStringBuilder; I: Integer; C : Char; begin SB := TStringBuilder.Create; try I := 0; for C in Value do begin if C='.' then Inc(I) else if not CharInSet(C, ['0'..'9']) then I := 0; if I=2 then begin SB.Append(' 0.'); I := 0; end else SB.Append(C); end; Result := SB.ToString; finally FreeAndNil(SB); end; end;  
  20. Like
    Кривяков Виталий получил реакцию от Равиль Зарипов (ZuBy) в как сделать плавность   
    Посмотрите тут TUITabControl
  21. Like
    Кривяков Виталий получил реакцию от Kitty в как сделать плавность   
    Посмотрите тут TUITabControl
  22. Like
    Кривяков Виталий получил реакцию от afors в TUITabControl   
    Добрый день!
     
    В теме про наш продукт http://fire-monkey.ru/topic/1519-1c-papyc-mobilnoe-prilozhenie-dlia-masterov-priemschiko/ меня просили поделиться исходным кодом компонента TabControl с поддержкой слайда табов пальцем. С удовольствием делюсь
    В составе архива сам компонент и пример его использования.
    FMXUI.zip
  23. Like
    Кривяков Виталий получил реакцию от Rusland в как сделать плавность   
    Посмотрите тут TUITabControl
  24. Like
    Кривяков Виталий получил реакцию от zairkz в Как рассчитать Baseline для выводимого текста?   
    Добрый день!
    Столкнулся с проблемой вывода текста разного размера по одной линии. Не получается использовать BaseLine доступную для Firemonkey. 
    Baseline -   воображаемая прямая линия, проходящая по нижнему краю прямых знаков без учёта свисаний и нижних выносных элементов. В строке символы текста стоят на базовой линии, а нижние выносные элементы текста «свисают» с неё.
    Из описанного выше ясно, что выводимые символы должны лежать на это линии, но в реале как то все некорректно выводится.
    Сделал два примера VCL (черный фонт) и FireMonkey(черный полупрозрачный фонт), оказалось, что вывод текста осуществляется по разному, при одном и том же значении размера шрифта. Базовая линия в обоих примерах 356.
    Совмещаем отображение символов: GlyphsEqual.png Символы совпали, но базовая линия смещена.
    Совмещаем базовую линию: PosEqual.png Базовая линия совпала, как и верхний край контролов, а вот текст (серый) значительно ниже.
    А теперь собственно вопрос вопрос, где ошибка? Как рассчитать базовую линию для FMX?
     
    P.S.
    Про attributes у TTextLayout знаю.


    BaseLine.rar

  25. Like
    Кривяков Виталий получил реакцию от dnekrasov в TUITabControl   
    Добрый день!
     
    В теме про наш продукт http://fire-monkey.ru/topic/1519-1c-papyc-mobilnoe-prilozhenie-dlia-masterov-priemschiko/ меня просили поделиться исходным кодом компонента TabControl с поддержкой слайда табов пальцем. С удовольствием делюсь
    В составе архива сам компонент и пример его использования.
    FMXUI.zip
×
×
  • Создать...