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

Активность

Лента обновляется автоматически

  1. Вчера
  2. Пытаюсь поставить себе новую бесплатную Delphi CE. Однако, в самом начале установки, программа требует регистрацию и когда я ввожу присланный мне на e-mail регистрационный код, мне сообщают что сервер, через который производится регистрация, license.embarcadero.com недоступен. И да, он действительно недоступен - не загружается в браузере, даже через VPN.
  3. "Убрать"(изменить) мастабирование для формы на платформе Windows: if (Handle is TWinWindowHandle) then // (Handle as TWinWindowHandle).DpiChanged(FDPI); // реализация для версий ДО D11 (Handle as TWinWindowHandle).SetForcedScaleForForm(FDPI/96); // релазизация ДЛЯ D11 DpiChanged - раньше работал правильно. В новом SetForcedScaleForForm изменять масштабирование можно на одинаковое значение для всех форм приложения, иначе краш..
  4. Подскажите пожалуйта как убрать маштабирование сейчас у меня 2,125 выглядит не очень , много форм смотрятся ужасно... При маштабе екрана 1.75 все супер , подскажите как решить даную задачу
  5. Последняя неделя
  6. Я это прекрасно понимаю, но нет там nil!
  7. (Sender as TStringGrid).StylesData['background.content.selection.Fill.Color'].AsType<TAlphaColor> (Sender as TStringGrid)(если тут nil то будет ошибка).StylesData['background.content.selection.Fill.Color'](если тут nil то будет ошибка).AsType<TAlphaColor> https://stackoverflow.com/questions/43624260/how-to-change-color-of-a-cell-in-a-delphi-tgrid-firemonkey-component тут варианты как можно рисовать, в конце способ отрисовки по умолчанию, если у Canvas изменить цвет то нарисует я думаю нужным цветом текст.
  8. Что здесь не так? Canvas.Fill.Color := (Sender as TStringGrid).StylesData['background.content.selection.Fill.Color'].AsType<TAlphaColor> выдаёт exception чтения с нулевого адреса. Если же в качестве пути к стилю написать любую ерунду вроде 'aaabbbccc', то выдаёт 0 и не вылетает. Сам Sender приходит нормальный, можно заменить прямо на MyGrid - будет тоже самое. Можно написать AsInteger - будет тоже самое. Вылетает вот здесь: function TRttiProperty.GetValue(Instance: Pointer): TValue; begin if not IsReadable then raise EPropWriteOnly.Create(Name); Result := DoGetValue(Instance); end; Про TAlphaColors.Null понял.
  9. Color := Stringgrig.StylesData['background.content.selection.Fill.Color'] Это просто набор цветов, который я использую. Я дал пример, выдранный из одного моего проекта, нигде ничего четко написано не будет))) Для понимания работы цветов в firemonkey - вот почитайте https://docwiki.embarcadero.com/RADStudio/Sydney/en/Colors_in_FireMonkey то, что Вы указали Color:=0 - так это нулевой цвет, с нулевой прозрачностью, что Вы ожидали увидеть?
  10. Я хочу рисовать на канве цветом, прочитанным из стандартного стиля вот в этом месте, т.к. конкретно в этом месте нет необходимости его переопределять: if TGridDrawState.RowSelected in State then Canvas.Fill.Color := ??? else Canvas.Fill.Color := ???; Т.к. если я этого не сделаю, то вместо синего фона для выбранной строки будут белые дыры с синими рамками. В Вашем примере form1.Style это что? Я думал, что это адресация к стилям из StyleBook, прикреплённого к форме. Ещё я заметил, что есил вместо условия, приведённого выше, просто написать Canvas.Fill.Color := 0; то фон будет всегда нормальный. Ничего не понимаю ) Где это всё описано чётко?
  11. Delphi 11. Под отладчиком не видны значения строк, Variant и некоторых других типов. Значения переменных типа Integer отображаются нормально. Вместо строки показывает адрес
  12. Так Вам шашечки или ехать? Если Вы рисуете на канве, то какие стили могут быть? Для канвы я Вам пример дал, там есть все про цвет выделенной ячейки. Если Вы хотите попробовать использовать стили, то примерно это должно выглядеть так Stringgrig.StylesData['background.content.selection.Fill.Color'] := Color; Но это не точно, надо пробовать А где увидеть, что именно используется из стиля я не знаю, может кто еще подскажет. По стилям есть видеоуроки от Ярослава Бровина, посмотрите, может там будет ответ
  13. если я правильно понимаю, то импортирование функций идет по имени, соответственно использовать библу без описания не получится. av_get_channel_layout_string:procedure(buf : PAnsiChar;buf_size : Integer;nb_channels : Integer;channel_layout : int64_t) ; cdecl; @av_get_channel_layout_string:=SafeGetProcAddress(AVUtilHandle, 'av_get_channel_layout_string');
  14. не так хорош, как прежний, но лучше, чем ничего!))
  15. Подскажите, а как обратиться к цвету selection'а изнутри обработчка GridDrawColumnCell() ? Ещё глобальный вопрос - а где вообще увидеть, какой контрол что именно использует из стилизатора?
  16. Впрочем, это неважно (я про dlerror). А как можно импортировать функции из .so-файла, если он как черный ящик? А потом их использоваать в GetProcAddress
  17. Для API >= 14 и API < 29 Intent := TJIntent.Create(); Intent.setAction(TJIntent.JavaClass.ACTION_INSTALL_PACKAGE); Intent.addFlags(TJIntent.JavaClass.FLAG_GRANT_READ_URI_PERMISSION); Intent.putExtra(TJIntent.JavaClass.EXTRA_NOT_UNKNOWN_SOURCE, true); Intent.setDataAndType(ApkUri,StringToJString('application/vnd.android.package-archive')); TAndroidHelper.Activity.StartActivity(Intent); API > 25 Manifest.permission.REQUEST_INSTALL_PACKAGES
  18. Решение: https://stackoverflow.com/questions/54825547/delphi-10-3-1-android-service-hangs-on-system-initunits Также нужно удалить из uses сервиса всё, что начинается на FMX(например FMX.Types, как сказано в ответе на вопрос по ссылке)
  19. Проблема описана тут. Требуется подправить мой код, либо полностью переработать алгоритм... Цена договорная, писать в ЛС или на имейл remus-xe2@ya.ru.
  20. function checkNetwork: Boolean; function GetConnectivityManager: JConnectivityManager; var ConnectivityServiceNative: JObject; begin ConnectivityServiceNative := TAndroidHelper.Context.getSystemService(TJContext.JavaClass.CONNECTIVITY_SERVICE); if not Assigned(ConnectivityServiceNative) then exit; Result := TJConnectivityManager.Wrap((ConnectivityServiceNative as ILocalObject).GetObjectID); if not Assigned(Result) then exit; end; var cm: JConnectivityManager; activeNetwork: JNetworkInfo; begin try cm := GetConnectivityManager; activeNetwork := cm.getActiveNetworkInfo; Result := Assigned(ActiveNetwork) and ActiveNetwork.isConnected; except Result := false; end; end;
  21. Подскажите, у меня программа проверяет наличие новой версии и выводит уведомление... Хочу что бы программа сама закачивала APK и запускала его на установку... Скачать по идее не проблема, а вот как показать окно юзеру, мастера установки этого АПК ? Можно какой нибудь образец на Delphi ? Пока вот что имею: procedure TUpdateAppThread.Execute; CONST url_download_nsis_script = 'https://.com/android/.apk'; var http: TNetHTTPClient; q: tmemorystream; begin q := tmemorystream.Create; http := TNetHTTPClient.Create(nil); try try http.Get(PChar(url_download_nsis_script), q); q.Position := 0; q.SaveToFile(TPath.Combine(TPath.GetDocumentsPath, 'hs.update.apk')); if FileExists(TPath.Combine(TPath.GetDocumentsPath, 'hs.update.apk')) then Synchronize(StartUpdateApp); except Synchronize(ErrorUpdateApp); end; finally q.Free; http.Free; end; end; скачал APK, ошибок нет вроде, все ок... Запихиваю апк в jnet_uri Procedure StartUpdateApp; var ApkFile: JFile; ApkUri: Jnet_Uri; path, filename: string; begin try filename := TPath.Combine(TPath.GetDocumentsPath, 'hs.update.apk'); ApkFile := TJfile.JavaClass.init(StringToJString(filename)); ApkUri := TAndroidHelper.JFileToJURI(ApkFile); StartActivity(ApkUri); except on E: Exception do ShowMessage(E.ClassName + 'StartUpdateApp поднята ошибка, с сообщением : ' + E.Message); end; UpdateForm.Label1.Text := 'Download ok.'; end; Запускаю активность... procedure StartActivity(ApkUri: Jnet_Uri); var Intent: JIntent; begin try Intent := TJIntent.Create(); Intent.setAction(TJIntent.JavaClass.ACTION_VIEW); Intent.addFlags(TJIntent.JavaClass.FLAG_ACTIVITY_NEW_TASK or TJIntent.JavaClass.FLAG_ACTIVITY_CLEAR_TOP or TJIntent.JavaClass.FLAG_GRANT_WRITE_URI_PERMISSION or TJIntent.JavaClass.FLAG_GRANT_READ_URI_PERMISSION); Intent.setDataAndType(ApkUri, StringToJString('application/vnd.android.package-archive')); TAndroidHelper.Activity.StartActivity(Intent); except on E: Exception do ShowMessage(E.ClassName + 'StartActivity поднята ошибка, с сообщением : ' + E.Message); end; end; сейчас у меня ошибка в процедуре StartUpdateApp Java type Jcontent_fileprovider could not be found. Разрешений пока не каких не запрашивал.... Сохраняю в TPath.Combine(TPath.GetDocumentsPath, 'hs.update.apk') сюда я так понимаю разрешения не нужны...
  22. Ещё раньше
  23. var http: THttpClient; pesp: IHttpResponse; http := THttpClient.Create; try resp := http.head(URL); except on e: exception do begin showmessage(e.message); end; end; http.free;
  24. Sascha

    1 okt 2021

    Просто это добавить в манифест? <meta-data android:name="com.google.android.play.billingclient.version" android:value="4.0.0" />
  25. все нормально, classes.dex собрал, файл классов использовал из папки Android\Debug\Project1.classes\, пока полет нормальный https://docwiki.embarcadero.com/RADStudio/Sydney/en/Creating_and_Deploying_a_classes.dex_File_Manually извиняюсь в deployment файл классов также подключен как и раньше, отображение прозрачное какое то и я его не заметил
  26. вариант со своим TTreeViewItem нашел в интернете, проверил - работает. type TTreeViewItemNew = class(TTreeViewItem) private FOnChangeExpanded: TNotifyEvent; FOnChangeCollapsed: TNotifyEvent; protected procedure SetIsExpanded(const Value: Boolean); override; published property OnApplyStyleLookup; property OnChangeExpanded: TNotifyEvent read FOnChangeExpanded write FOnChangeExpanded; property OnChangeCollapsed: TNotifyEvent read FOnChangeCollapsed write FOnChangeCollapsed; end; .......... procedure TTreeViewItemNew.SetIsExpanded(const Value: Boolean); var LWasExpanded: boolean; begin LWasExpanded := IsExpanded; inherited; if (IsExpanded) AND (LWasExpanded = false) then begin if Assigned(OnChangeExpanded) then OnChangeExpanded(Self) end else if Assigned(OnChangeCollapsed) then OnChangeCollapsed(Self); end; procedure TForm.OnExpand(Sender: TObject); begin // end; .... newitem:= TTreeViewItemNew.Create(TreeView); newitem.Parent:= TreeView; newitem.OnChangeExpanded:= OnExpand; newitem.Text:= 'cccccccccc';
  1. Загрузить ещё активность
×
×
  • Создать...