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

ENERGY

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

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

  • Посещение

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

    57

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

  1. Like
    ENERGY получил реакцию от Anatoliy в Отправка email   
    Через сервер. Можно сделать при помощи php отправку письма, а из программы вызывать этот php на сервере и ему в Post\GET запросе передавать тело письма и адрес. На всякий случай уточню, что php - это файл который работает только на сервера (хостинг).
     
    Можно еще заморочиться с SMTP протоколом, и отправлять через google mail, но имхо это сложнее.
  2. Like
    ENERGY получил реакцию от Равиль Зарипов (ZuBy) в Отправка email   
    Через сервер. Можно сделать при помощи php отправку письма, а из программы вызывать этот php на сервере и ему в Post\GET запросе передавать тело письма и адрес. На всякий случай уточню, что php - это файл который работает только на сервера (хостинг).
     
    Можно еще заморочиться с SMTP протоколом, и отправлять через google mail, но имхо это сложнее.
  3. Like
    ENERGY получил реакцию от Anatoliy в Не запускается приложение на эмуляторе   
    Вы в курсе что Embarcadero рекомендует использовать API которое идет по умолчанию со средой, и не рекомендует сторонние не проверенные со средой версии? У меня на Berlin update 2 стоит 24.3.3 - версия которая пришла со средой, все работает стабильно уже длительное время. 
  4. Like
    ENERGY получил реакцию от Rusland в [Статья] PHP сервер для рассылки Push на Android и iOS   
    Кто просил PHP код, для отправки пушей, без лимита на 1000 токенов за одну отправку. 
    Вот готовый вариант: 
    <?php                                                                                                 $server_key = 'AAAAnCw-yKA:APA91bEYphFbq_w...'; $title = 'Title'; $text = 'test'; $limit = 999; $field_name = 'DeviceToken';    $sql = mysqli_connect("mysqlserver.com", "DBName", "DBPassword");    /* check connection */    if (mysqli_connect_errno()) {     printf("Connect failed: %s\n", mysqli_connect_error());     exit(); }        $offset = 0;    while (true) {                                                                  $query = "SELECT $field_name FROM `DBName`.`TableName` LIMIT $limit OFFSET $offset";    $result = mysqli_query($sql, $query);                     if (!$result) {     die('Invalid query: ' . mysql_error()); }     if (mysqli_num_rows($result) == 0) {      echo "{\"result\":true}";        exit;        }   $arr = array();     while ($row = mysqli_fetch_array($result, MYSQL_ASSOC)) {     $arr[] =  $row["$field_name"];      }       pushSend($title, $text, $arr, $server_key);    $offset = $offset + $limit;   /* free result set */   mysqli_free_result($result);    //  foreach($arr as $item) {  //    echo $item, '<br>'; //} //echo '-----------<br>'; } mysqli_close($sql);                   // max 1000   function pushSend($title, $text, $tokens, $server_key) {     $url = 'https://fcm.googleapis.com/fcm/send';     $headers = array('Authorization: key=' . $server_key,       'Content-Type: application/json');        if (is_array($tokens))       $fields['registration_ids'] = $tokens;     else       $fields['registration_ids'] = array($tokens);        $fields['priority'] = 'high';     $fields['notification'] = array('body' => $text, 'title' => $title);     $fields['data'] = array('message' => $text, 'title' => $title);        $ch = curl_init();     curl_setopt_array($ch, array(             CURLOPT_URL => $url,             CURLOPT_POST => true,             CURLOPT_HTTPHEADER => $headers,             CURLOPT_RETURNTRANSFER => true,             CURLOPT_SSL_VERIFYHOST => 0,             CURLOPT_SSL_VERIFYPEER => false,             CURLOPT_POSTFIELDS => json_encode($fields)     ));     $result = curl_exec($ch);     curl_close($ch);     return $result; } ?>  
  5. Like
    ENERGY получил реакцию от Anatoliy в TColorAnimation вообще работает с кнопками??   
    Чтобы помигать кнопкой или любым другим контролом, для привлечения внимания я делаю так: 
    Добавить на кнопку TGlowEffect, установить нужный цвет. Внутрь TGlowEffect добавляю TFloatAnimation . В нем выбираю PropertyName = Opacity. Дальше устанавливаю Start и Stop 0 и 1. AutoReverse := true; Loop := true; Duration (0.3)
    Все.
    В коде включаем :
    GlowEffect.Enable := true и FloatAnimation.Enable := true - заставит пульсировать кнопку. 
    Например так:
    procedure TfrmMain.PulseEMRGButton; begin   GlowBtnEMRGNum.Enabled := true;   animGlowBtn.Enabled := true;   TThread.CreateAnonymousThread(procedure   begin     Sleep(1250);  // general duration     TThread.Queue(nil, procedure     begin       animGlowBtn.Enabled := false;       GlowBtnEMRGNum.Enabled := false;     end);   end).Start; end;  
    Ксати Major переименуйте тему в "Пульсирующая кнопка".
  6. Like
    ENERGY получил реакцию от Anatoliy в [Андроид] кнопка с эффектом   
    Добавить в кнопку TGlowEffect .
    Также здесь я описал как сделать пульсирующую кнопку без кода.
     
  7. Like
    ENERGY отреагировална sinuke в Как осуществить набор номера?   
    Android без дополнительных разрешений и с показом экрана набора номера:
    //uses Androidapi.Helpers, Androidapi.JNI.GraphicsContentViewText; var Intent: JIntent; begin Intent := TJIntent.Create; Intent.setAction(TJIntent.JavaClass.ACTION_VIEW); Intent.setData(StrToJURI('tel:' + somePhoneNumber)); SharedActivity.startActivity(Intent); end; А для прямого осуществления вызова (с разрешениями) есть пример стандратный в папке:
    c:\Users\Public\Documents\Embarcadero\Studio\19.0\Samples\Object Pascal\Mobile Snippets\PhoneDialer\
  8. Like
    ENERGY отреагировална krapotkin в TIdHTTP «не отпускает» dll?   
    если вы на этом форуме, то, скорее всего, выход проще - нужно отказаться от TidHTTP и использовать THttpClient, встроенный в delphi
  9. Like
    ENERGY получил реакцию от Ingalime в непонятное поведение fgActivityDialog в Delphi Tokyo   
    @Равиль Зарипов (ZuBy)
    Не знал. 
    А в Tokyo много чего печального.  Android платформа фактически не рабочая.
    А баг с утечкой TAniIndicator отправили в QC? 
     
     
  10. Like
    ENERGY получил реакцию от Евгений Корепов в Сетка в TimageList - артефакты на картинках. Проголосуйте!   
    Пожалуйста проголосуйте. Думаю это всех касается, т.к. проблема связана и с TImageList и с TImage. 
    https://quality.embarcadero.com/browse/RSP-18210
  11. Like
    ENERGY отреагировална #WAMACO в Контрастный стиль для борьбы с солнечным светом?   
    Темный текст на светлом
  12. Like
    ENERGY получил реакцию от Erlan_krg в непонятное поведение fgActivityDialog в Delphi Tokyo   
    Я делаю проще, вот мультиплатформенный вариант: обычная форма,  Transparent := true;
    на форме AniIndicator Align = HorzCenter.
    В результате получаем отображается только AniIndicator  по центру экрана. Можно добавить и label на Tlayout вместе с AniIndicator, а у Tlayout поставить Align = HorzCenter или VertCenter. 
    Форму конечно, как и все остальные формы создавать нужно динамически и уничтожать когда не нужно.
     
    Можно еще сделать чтобы весь остальной фон, кроме текущей формы был затемненный - установите цвет у формы с AniIndicator в #AA000000 (Kind = Solid).
    А можно еще сделать чтобы фон плавно затемнялся после появления загрузочной формы. 
    class procedure TfrmDial.ShowForm; begin   if frmDial = nil then     frmDial := TfrmDial.Create(nil);   frmDial.Fill.Color := TColorRec.Null;   frmDial.Show;   Application.ProcessMessages;   TAnimator.AnimateColor(frmDial, 'Fill.Color', FADE_OUT_COLOR, 0.3); end;  
    И да кстати, Tokyo пока нельзя использовать для разработки Android приложений, до выхода первого Update, там есть критические баги, скорее всего проблема ТС - как раз связана с этими багами.
  13. Like
    ENERGY отреагировална Mars M в Перемещение 3D объектов   
    Вот тут есть пример где объект перемещается в позицию клика мыши.
     
  14. Like
    ENERGY получил реакцию от Ingalime в Перемещение 3D объектов   
    Вот здесь посмотрите https://github.com/FMXExpress/Firemonkey/tree/master/Embarcadero/XE6/ObjectPascal/Cubes
  15. Like
    ENERGY получил реакцию от Ingalime в Сетка в TimageList - артефакты на картинках. Проголосуйте!   
    Пожалуйста проголосуйте. Думаю это всех касается, т.к. проблема связана и с TImageList и с TImage. 
    https://quality.embarcadero.com/browse/RSP-18210
  16. Like
    ENERGY получил реакцию от Rusland в Сетка в TimageList - артефакты на картинках. Проголосуйте!   
    Пожалуйста проголосуйте. Думаю это всех касается, т.к. проблема связана и с TImageList и с TImage. 
    https://quality.embarcadero.com/browse/RSP-18210
  17. Like
    ENERGY получил реакцию от Ingalime в Не запускается приложение на эмуляторе   
    Вы в курсе что Embarcadero рекомендует использовать API которое идет по умолчанию со средой, и не рекомендует сторонние не проверенные со средой версии? У меня на Berlin update 2 стоит 24.3.3 - версия которая пришла со средой, все работает стабильно уже длительное время. 
  18. Like
    ENERGY отреагировална sinuke в Посоветуйте, сделать TGrid из TListView. Как добавить кнопку-колонку в ListView   
    в МодернЛВ есть свойства для отступов. Можно задать верхний отступ для итемов, чтобы в эту область всунуть те же SpeedButton

  19. Like
    ENERGY отреагировална RoschinSpb в TGrid можно ли установить разную высоту у ячеек? Можно ли объединять ячейки?   
    1,2 - нет
    3-4. зависит от реализации. Графика за границами видимой области рисуется быстрее, но там выполняется и другая работа не связанная с рисованием. TScrollContent  это составная часть TCustomScrollBox тут нельзя выбрать одно, или другое.
    Ну ... рекомендации, если уже решили писать свой собственный компонент, конечно, не используйте ни то не другое. Наследуйтесь от TControl, поскольку Вам не нужна совместимость ... но Вы об этом пожалеете. 
    Вообще же графика рисуется очень медленно на мобильных платформах, радикально быстрее будут рисоваться нативные контролы. Для IOS была сделана нативная реализация TGrid, и там выигрыш в скорости значительный, хотя не все возможности стилевой реализации были поддержаны. В Berlin`е можно посмотреть.

    Если интересно посмотрите мои наброски...
    Grid.zip
  20. Like
    ENERGY получил реакцию от Anatoliy в [Статья] PHP сервер для рассылки Push на Android и iOS   
    Кто просил PHP код, для отправки пушей, без лимита на 1000 токенов за одну отправку. 
    Вот готовый вариант: 
    <?php                                                                                                 $server_key = 'AAAAnCw-yKA:APA91bEYphFbq_w...'; $title = 'Title'; $text = 'test'; $limit = 999; $field_name = 'DeviceToken';    $sql = mysqli_connect("mysqlserver.com", "DBName", "DBPassword");    /* check connection */    if (mysqli_connect_errno()) {     printf("Connect failed: %s\n", mysqli_connect_error());     exit(); }        $offset = 0;    while (true) {                                                                  $query = "SELECT $field_name FROM `DBName`.`TableName` LIMIT $limit OFFSET $offset";    $result = mysqli_query($sql, $query);                     if (!$result) {     die('Invalid query: ' . mysql_error()); }     if (mysqli_num_rows($result) == 0) {      echo "{\"result\":true}";        exit;        }   $arr = array();     while ($row = mysqli_fetch_array($result, MYSQL_ASSOC)) {     $arr[] =  $row["$field_name"];      }       pushSend($title, $text, $arr, $server_key);    $offset = $offset + $limit;   /* free result set */   mysqli_free_result($result);    //  foreach($arr as $item) {  //    echo $item, '<br>'; //} //echo '-----------<br>'; } mysqli_close($sql);                   // max 1000   function pushSend($title, $text, $tokens, $server_key) {     $url = 'https://fcm.googleapis.com/fcm/send';     $headers = array('Authorization: key=' . $server_key,       'Content-Type: application/json');        if (is_array($tokens))       $fields['registration_ids'] = $tokens;     else       $fields['registration_ids'] = array($tokens);        $fields['priority'] = 'high';     $fields['notification'] = array('body' => $text, 'title' => $title);     $fields['data'] = array('message' => $text, 'title' => $title);        $ch = curl_init();     curl_setopt_array($ch, array(             CURLOPT_URL => $url,             CURLOPT_POST => true,             CURLOPT_HTTPHEADER => $headers,             CURLOPT_RETURNTRANSFER => true,             CURLOPT_SSL_VERIFYHOST => 0,             CURLOPT_SSL_VERIFYPEER => false,             CURLOPT_POSTFIELDS => json_encode($fields)     ));     $result = curl_exec($ch);     curl_close($ch);     return $result; } ?>  
  21. Like
    ENERGY получил реакцию от Ingalime в [Статья] PHP сервер для рассылки Push на Android и iOS   
    Кто просил PHP код, для отправки пушей, без лимита на 1000 токенов за одну отправку. 
    Вот готовый вариант: 
    <?php                                                                                                 $server_key = 'AAAAnCw-yKA:APA91bEYphFbq_w...'; $title = 'Title'; $text = 'test'; $limit = 999; $field_name = 'DeviceToken';    $sql = mysqli_connect("mysqlserver.com", "DBName", "DBPassword");    /* check connection */    if (mysqli_connect_errno()) {     printf("Connect failed: %s\n", mysqli_connect_error());     exit(); }        $offset = 0;    while (true) {                                                                  $query = "SELECT $field_name FROM `DBName`.`TableName` LIMIT $limit OFFSET $offset";    $result = mysqli_query($sql, $query);                     if (!$result) {     die('Invalid query: ' . mysql_error()); }     if (mysqli_num_rows($result) == 0) {      echo "{\"result\":true}";        exit;        }   $arr = array();     while ($row = mysqli_fetch_array($result, MYSQL_ASSOC)) {     $arr[] =  $row["$field_name"];      }       pushSend($title, $text, $arr, $server_key);    $offset = $offset + $limit;   /* free result set */   mysqli_free_result($result);    //  foreach($arr as $item) {  //    echo $item, '<br>'; //} //echo '-----------<br>'; } mysqli_close($sql);                   // max 1000   function pushSend($title, $text, $tokens, $server_key) {     $url = 'https://fcm.googleapis.com/fcm/send';     $headers = array('Authorization: key=' . $server_key,       'Content-Type: application/json');        if (is_array($tokens))       $fields['registration_ids'] = $tokens;     else       $fields['registration_ids'] = array($tokens);        $fields['priority'] = 'high';     $fields['notification'] = array('body' => $text, 'title' => $title);     $fields['data'] = array('message' => $text, 'title' => $title);        $ch = curl_init();     curl_setopt_array($ch, array(             CURLOPT_URL => $url,             CURLOPT_POST => true,             CURLOPT_HTTPHEADER => $headers,             CURLOPT_RETURNTRANSFER => true,             CURLOPT_SSL_VERIFYHOST => 0,             CURLOPT_SSL_VERIFYPEER => false,             CURLOPT_POSTFIELDS => json_encode($fields)     ));     $result = curl_exec($ch);     curl_close($ch);     return $result; } ?>  
  22. Like
    ENERGY отреагировална Fedor K в Как прочитать ВСЕ свои push из шторки, при старте программы   
    ENERGY Для получения всех активных уведомлений в Android существует метод:
    getActiveNotifications added in API level 23 StatusBarNotification[] getActiveNotifications () FMX (Berlin и ниже точно, Tokyo не смотрел) не предоставляет доступ к этому методу, в исходниках (Androidapi.JNI.App.pas) он закомментирован. Возможно при использовании своего wrapper для класса JNotificationManager или отсюда можно получить доступ к требуемому функционалу.
  23. Like
    ENERGY получил реакцию от Ingalime в Подскажите как отобразить значение свойтсва StartupNotifications?   
    @krapotkin TNotificationCenter.Create(nil).CancelAll; Это же утечка памяти. Надо уничтожать объект.
    Хотя по идее нет, в ARC компиляторах он должен сам уничтожится.
     
  24. Like
    ENERGY получил реакцию от Ingalime в Проблемы с Android программами   
    Под отладчиком запускали?
    Удалите программу с Андроид. 
    Сделайте Clean проекту. Запустите (Run) еще раз.
    Какая модель девайса?
    Новый пустой проект запускается?
     
  25. Like
    ENERGY отреагировална RoschinSpb в Сетка в TimageList - артефакты на картинках. Проголосуйте!   
    Не может, а точно. 
    А баг не заметили потому, что проявляется далеко не на всех картинках. Как я понял только на одном, или нескольких оттенках серого (Ц).
    Это на сколько я понял из-за того, что при записи TBitmap в поток и последующем восстановлении данные получаются не совсем идентичными.
    Вот например если эту процедуру запускать несколько раз, то картинка становится клетчатой
    procedure TForm2.UpdateBitmap(var Bitmap: TBitmap); var Stream: TMemoryStream; begin if Bitmap <> nil then begin Stream := TMemoryStream.Create; try Bitmap.SaveToStream(Stream); FreeAndNil(Bitmap); Stream.Position := 0; Bitmap := TBitmap.Create; Bitmap.LoadFromStream(Stream); finally FreeAndNil(Stream); end; end; end; Вот, что у меня получилось. Вторая картинка (для сравнения) преобразуется точно также, но как видно не портится.

    Так что проблема не в TImageList и не в TImage, а где-то на более глубоком уровне. Добавляю также небольшой демо проектик. Проверял на Windows 10. Интересно что будет на других платформах.
    Proj.zip
×
×
  • Создать...