-
Постов
568 -
Зарегистрирован
-
Посещение
-
Победитель дней
57
Активность репутации
-
ENERGY получил реакцию от Anatoliy в Отправка email
Через сервер. Можно сделать при помощи php отправку письма, а из программы вызывать этот php на сервере и ему в Post\GET запросе передавать тело письма и адрес. На всякий случай уточню, что php - это файл который работает только на сервера (хостинг).
Можно еще заморочиться с SMTP протоколом, и отправлять через google mail, но имхо это сложнее.
-
ENERGY получил реакцию от Равиль Зарипов (ZuBy) в Отправка email
Через сервер. Можно сделать при помощи php отправку письма, а из программы вызывать этот php на сервере и ему в Post\GET запросе передавать тело письма и адрес. На всякий случай уточню, что php - это файл который работает только на сервера (хостинг).
Можно еще заморочиться с SMTP протоколом, и отправлять через google mail, но имхо это сложнее.
-
ENERGY получил реакцию от Anatoliy в Не запускается приложение на эмуляторе
Вы в курсе что Embarcadero рекомендует использовать API которое идет по умолчанию со средой, и не рекомендует сторонние не проверенные со средой версии? У меня на Berlin update 2 стоит 24.3.3 - версия которая пришла со средой, все работает стабильно уже длительное время.
-
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; } ?>
-
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 переименуйте тему в "Пульсирующая кнопка".
-
ENERGY получил реакцию от Anatoliy в [Андроид] кнопка с эффектом
Добавить в кнопку TGlowEffect .
Также здесь я описал как сделать пульсирующую кнопку без кода.
-
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\
-
ENERGY отреагировална krapotkin в TIdHTTP «не отпускает» dll?
если вы на этом форуме, то, скорее всего, выход проще - нужно отказаться от TidHTTP и использовать THttpClient, встроенный в delphi
-
ENERGY получил реакцию от Ingalime в непонятное поведение fgActivityDialog в Delphi Tokyo
@Равиль Зарипов (ZuBy)
Не знал.
А в Tokyo много чего печального. Android платформа фактически не рабочая.
А баг с утечкой TAniIndicator отправили в QC?
-
ENERGY получил реакцию от Евгений Корепов в Сетка в TimageList - артефакты на картинках. Проголосуйте!
Пожалуйста проголосуйте. Думаю это всех касается, т.к. проблема связана и с TImageList и с TImage.
https://quality.embarcadero.com/browse/RSP-18210
-
ENERGY отреагировална #WAMACO в Контрастный стиль для борьбы с солнечным светом?
Темный текст на светлом
-
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, там есть критические баги, скорее всего проблема ТС - как раз связана с этими багами.
-
ENERGY отреагировална Mars M в Перемещение 3D объектов
Вот тут есть пример где объект перемещается в позицию клика мыши.
-
ENERGY получил реакцию от Ingalime в Перемещение 3D объектов
Вот здесь посмотрите https://github.com/FMXExpress/Firemonkey/tree/master/Embarcadero/XE6/ObjectPascal/Cubes
-
ENERGY получил реакцию от Ingalime в Сетка в TimageList - артефакты на картинках. Проголосуйте!
Пожалуйста проголосуйте. Думаю это всех касается, т.к. проблема связана и с TImageList и с TImage.
https://quality.embarcadero.com/browse/RSP-18210
-
ENERGY получил реакцию от Rusland в Сетка в TimageList - артефакты на картинках. Проголосуйте!
Пожалуйста проголосуйте. Думаю это всех касается, т.к. проблема связана и с TImageList и с TImage.
https://quality.embarcadero.com/browse/RSP-18210
-
ENERGY получил реакцию от Ingalime в Не запускается приложение на эмуляторе
Вы в курсе что Embarcadero рекомендует использовать API которое идет по умолчанию со средой, и не рекомендует сторонние не проверенные со средой версии? У меня на Berlin update 2 стоит 24.3.3 - версия которая пришла со средой, все работает стабильно уже длительное время.
-
ENERGY отреагировална sinuke в Посоветуйте, сделать TGrid из TListView. Как добавить кнопку-колонку в ListView
в МодернЛВ есть свойства для отступов. Можно задать верхний отступ для итемов, чтобы в эту область всунуть те же SpeedButton
-
ENERGY отреагировална RoschinSpb в TGrid можно ли установить разную высоту у ячеек? Можно ли объединять ячейки?
1,2 - нет
3-4. зависит от реализации. Графика за границами видимой области рисуется быстрее, но там выполняется и другая работа не связанная с рисованием. TScrollContent это составная часть TCustomScrollBox тут нельзя выбрать одно, или другое.
Ну ... рекомендации, если уже решили писать свой собственный компонент, конечно, не используйте ни то не другое. Наследуйтесь от TControl, поскольку Вам не нужна совместимость ... но Вы об этом пожалеете.
Вообще же графика рисуется очень медленно на мобильных платформах, радикально быстрее будут рисоваться нативные контролы. Для IOS была сделана нативная реализация TGrid, и там выигрыш в скорости значительный, хотя не все возможности стилевой реализации были поддержаны. В Berlin`е можно посмотреть.
Если интересно посмотрите мои наброски...
Grid.zip
-
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; } ?>
-
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; } ?>
-
ENERGY отреагировална Fedor K в Как прочитать ВСЕ свои push из шторки, при старте программы
ENERGY Для получения всех активных уведомлений в Android существует метод:
getActiveNotifications added in API level 23 StatusBarNotification[] getActiveNotifications () FMX (Berlin и ниже точно, Tokyo не смотрел) не предоставляет доступ к этому методу, в исходниках (Androidapi.JNI.App.pas) он закомментирован. Возможно при использовании своего wrapper для класса JNotificationManager или отсюда можно получить доступ к требуемому функционалу.
-
ENERGY получил реакцию от Ingalime в Подскажите как отобразить значение свойтсва StartupNotifications?
@krapotkin TNotificationCenter.Create(nil).CancelAll; Это же утечка памяти. Надо уничтожать объект.
Хотя по идее нет, в ARC компиляторах он должен сам уничтожится.
-
ENERGY получил реакцию от Ingalime в Проблемы с Android программами
Под отладчиком запускали?
Удалите программу с Андроид.
Сделайте Clean проекту. Запустите (Run) еще раз.
Какая модель девайса?
Новый пустой проект запускается?
-
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