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

x11

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

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

  • Посещение

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

    13

Весь контент x11

  1. Нет ли у FMX готовой функции для открытия веб-ссылок из приложения? А то приходится городить огород с лисапетами и кучей IFDEF. В итоге что у меня получилось. Для удобства разнес все по разным модулям. Модуль для Windiws unit uUtilsWindows; interface {$IFDEF MSWINDOWS} uses ShellApi, Variants, Windows, FMX.Types, FMX.Platform.Win; procedure WindowsOpenUrl(const sUrl: string; WindowHandle: TWindowHandle); {$ENDIF} implementation {$IFDEF MSWINDOWS} procedure WindowsOpenUrl(const sUrl: string; WindowHandle: TWindowHandle); begin ShellExecute(FmxHandleToHWND(WindowHandle), 'open', PChar(VarToStr(sURL)), nil, nil, SW_NORMAL); end; {$ENDIF} end. Модуль для Android unit uUtilsAndroid; interface {$IFDEF ANDROID} uses FMX.Helpers.Android, Androidapi.JNI.Net, Androidapi.JNI.GraphicsContentViewText, AndroidApi.Helpers; procedure AndroidOpenUrl(const sUrl: string); {$ENDIF} implementation {$IFDEF ANDROID} procedure AndroidOpenUrl(const sUrl: string); Var Uri: Jnet_Uri; OpenLinkIntent: JIntent; begin Uri := StrToJURI(sUrl); OpenLinkIntent := TJIntent.JavaClass.init(TJIntent.JavaClass.ACTION_VIEW, Uri);// будем что-то смотреть OpenLinkIntent.addCategory(TJIntent.JavaClass.CATEGORY_BROWSABLE);// смотреть в браузере OpenLinkIntent.setData(Uri);// смотреть эту ссылку SharedActivity.startActivity(OpenLinkIntent);// открываем end; {$ENDIF} end. теперь в основной форме: uses ..., ...{$IFDEF ANDROID}, vkbdhelper, uUtilsAndroid{$ENDIF} {$IFDEF MSWINDOWS}, uUtilsWindows {$ENDIF}; ... ... ... procedure TfmEditObject.actOpenUrlExecute(Sender: TObject); begin {$IFDEF ANDROID}AndroidOpenUrl(edMapsCoordUrl.Text);{$ENDIF} {$IFDEF MSWINDOWS}WindowsOpenUrl(edMapsCoordUrl.Text, Self.Handle);{$ENDIF} end; А если добавлять ещё одну платформу, то ещё один модуль понадобится. Может есть более правильный вариант, так сказать, дизайна исходного кода?
  2. x11

    TColorCombobox и прокрутка

    Проблема на adnroid-устройстве в том, что список выпадает, но прокрутить его невозможно.
  3. По поводу TSwitch нашёл http://fire-monkey.ru/topic/1855-%D0%BC%D0%BE%D0%B6%D0%BD%D0%BE-%D0%BB%D0%B8-%D0%B8%D0%B7%D0%BC%D0%B5%D0%BD%D0%B8%D1%82%D1%8C-%D1%80%D0%B0%D0%B7%D0%BC%D0%B5%D1%80-switch/ тогда разработчикам следовало бы убрать, скрыть свойство Width и запретить менять размеры этой компоненты в дизайне
  4. Вот пример. Вверху размеры компонент в дизайне, а ниже - во время исполнения. Это в Win 10. Получается, что во время исполнения программы, Firemonkey плюёт на тот размер, который я выставил переключателю TSwitch и выставляет какие-то свои?
  5. Можно ли во время работы программы вызвать Items editor, который я вызываю во время дизайна приложения? Или свой лисапет создавать?
  6. Чтобы посмотреть, как будет выглядеть форма с элементами на разных экранах Пока вижу только такой вариант: на одном элементе TListBoxItem размещать TEdit с такими настройками. Тогда оно более менее нормально выглядит, но место используется не рационально. Да и вообще, дизайнер как-то странно себя ведёт. Указываешь ширину в Инспекторе свойств у компоненты и ничего не происходит, не меняется значение. А мышкой растянуть можно. А у другой получается. С таким дизайнером руки опускаются Если включено akLeft, то размер, например, TEdit`а можно изменить только мышкой, в Инспекторе свойств не получается. Если выбрать компоненту, которая лежит на TListBox и нажать Ctrl+X, вываливается AV и помогает только перезапуск IDE. Непонятно зачем среда создает дополнительные файлы fmx. Хотя после implementation только одна строка "{$R *.fmx}" Где это настраивается, чтобы эти файлы не создавались?
  7. Такая же свистопляска, если лежат несколько TLabel и TEdit с Align := Right один за другим. Почему-то один из Edit`ов перемещается влево + размер меняет. А почему тогда другие размер не меняют? К примеру, есть 2 TEdit: 1 и 2. Выбираю разные View и в разных View элементы TEdit в разном порядке. Сделал ещё вот такой эксперимент. Кинул на ListBoxItem TPanel, указал Align := Client. Кинул 2 TEdit на панель и указал им в Align := Left; Потом второй TEdit переместил мышкой левее первого. Переключаю View в разные режимы и теперь ВСЕГДА TEdit2 перемещается на своё прежнее второе место. Хотя в Master этот элемент виден первым.
  8. Не могу понять странного поведения компонент. Лежат все так один за другим: Label1, Edit1, Edit2, Edit3, Edit4 у всех Align := Left; Если в списке "View" выбрано Windows, то всё красиво и правильно. Ну в этом режиме я и выполняю основной дизайн. Как только переключаю режим в спике View на iPhone 5.5", то первый Edit1 растягивается на всю ширину элемента TListBoxItem, остальных не видно. А вот если переключить на iPhone 4.7", то все относительно правильно. А если переключить на Android 5" Phone то Label1, который должен быть первым вдруг перемещается вправо и становится последним, а первый Edit1 вообще куда-то исчезает. А если переключить на Android 7" Tablet, то снова всё красиво.
  9. Ещё вопрос. Что это за IteamHeader.Break? Почему его нельзя отключить? То же самое и с LookupData.
  10. И ещё один вопрос. Дизайнер не видит Footer
  11. Ещё вопрос по этой же тематике. Теперь всё наоборот: Дизайнер видит то, чего нет, т.е. в ListView отсутствует элемент "TextButton10", но Дизайнер его видит. И ещё. Что это за файл *.vlb? Там "TextButton10" есть.
  12. А зачем тогда придумали Design Time? Я переделал на TTextObjectAppearance
  13. Не помогло. Выводится картинка из базы, а пустышка - нет. procedure TfmMain.lvObjectsUpdateObjects(const Sender: TObject; const AItem: TListViewItem); Var ListItemImage: TListItemImage; begin if Assigned(AItem) then begin if Assigned(AItem.Objects.FindObjectT<TListItemText>('btnEdit')) then AItem.Objects.FindObjectT<TListItemText>('btnEdit').Text := '...'; ListItemImage := AItem.Objects.FindObjectT<TListItemImage>('img'); if Assigned(ListItemImage) then if assigned(ListItemImage.Bitmap) then if ListItemImage.Bitmap.IsEmpty then ListItemImage.ImageIndex := 0; end;// if end; без строки "if assigned(ListItemImage.Bitmap) then" вываливается AV эта строка всегда возвращает FALSE if assigned(ListItemImage.Bitmap) then поэтому-то и не доходит дело до ListItemImage.ImageIndex := 0; Может картинку-пустышку можно подсунуть через LiveBindings?
  14. Через LiveBinding загружаются данные в ListView, в том числе и в ListItemImage. Но у некоторых Item`ов нет картинки. И в этом случае нужно показать "пустышку" типа No image. Делаю в событии UpdateObjects procedure TfmMain.lvObjectsUpdateObjects(const Sender: TObject; const AItem: TListViewItem); Var ListItemImage: TListItemImage; begin if Assigned(AItem) then begin ListItemImage := AItem.Objects.FindObjectT<TListItemImage>('img'); if Assigned(ListItemImage) then if not assigned(ListItemImage.Bitmap) then ListItemImage.ImageIndex := 0; end; end; Но теперь у всех ListItemImage отображается пустышка, даже там, где должна быть правильная картинка. Пробовал использовать событие UpdatingObjects, но в этом случае грузится правильная картинка, а пустышка не грузится.
  15. В TListView есть картинка и другие поля. В поля уже выводятся данные из таблицы с помощью LiveBinding. Добавил новое поле в DataSet типа TBlobField, но LiveBinding Designer это поле не отображает, не видит его, поэтому и к картинке не могу привязать. Так и должно быть или это баг?
  16. 1. Почему кнопка располагается во время работы программы не так, как я её расположил в дизайне? 2. Как привязать кнопку к правому краю? Если установить "Trailing" в свойстве Align, то кнопка вообще исчезает.
  17. как продвигается процесс?
  18. x11

    Кнопка с картинкой

    Вот так сделал. procedure TfmReference.ListView1UpdateObjects(const Sender: TObject; const AItem: TListViewItem); begin AItem.Objects.FindObjectT<TListItemImage>('Image4').Bitmap := ImageList1.Source.Items[0].MultiResBitmap[0].Bitmap; end; Так правильно? Вопрос ещё. Если у картинки указать Align := Trailing, то картинка исчезает. Как приклеить картинку к правому краю Item`а? Ещё один способ нашёл ListView1.Images := ImageList1; ... ... ... procedure TfmReference.ListView1UpdateObjects(const Sender: TObject; const AItem: TListViewItem); begin AItem.Objects.FindObjectT<TListItemImage>('btnEdit').ImageIndex := 1; end; Сделал такое же и на другой форме с другим TListView. Вываливается AV. Хотя имя "img" совпадает и ImageList с картинкой привязан. В общем, переделал так procedure TfmMain.lvObjectsUpdateObjects(const Sender: TObject; const AItem: TListViewItem); begin if Assigned(AItem) then begin if Assigned(AItem.Objects.FindObjectT<TListItemText>('btnEdit')) then AItem.Objects.FindObjectT<TListItemText>('btnEdit').Text := '...'; if Assigned(AItem.Objects.FindObjectT<TListItemImage>('img')) then AItem.Objects.FindObjectT<TListItemImage>('img').ImageIndex := 0; end; end;
  19. x11

    Кнопка с картинкой

    Данные в ListView грузятся из таблицы через BindSourceDB1. Добавил кнопку TImageObjectAppearance, но у кнопки нет свойства, отвечающего за картинку. Как добавить картинку в моём случае?
  20. Сделал. Но на Андроиде такое впечатление, что в примере не работает "OverflowMenu.RealignContent", т.к. ListBox показывает только один Item из двух, второе еле-еле выглядывает. А на винде всё сравнительно красиво.
  21. а как дела у ListView со всплывающим меню? а то у LB не всё ОК http://fire-monkey.ru/topic/4346-не-всплывает-меню-у-tlistboxitem/
  22. добавил ShowMessage(FloatToStr(lbxPoint.X) + ':' + FloatToStr(lbxPoint.Y)); окно всплывает и показывает координаты
×
×
  • Создать...