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

Лидеры

  1. xenon54

    xenon54

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


    • Баллы

      2

    • Постов

      385


  2. Brovin Yaroslav

    Brovin Yaroslav

    Администраторы


    • Баллы

      1

    • Постов

      2 124


  3. Andrey Efimov

    Andrey Efimov

    Модераторы


    • Баллы

      1

    • Постов

      851


  4. RoschinSpb

    RoschinSpb

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


    • Баллы

      1

    • Постов

      187


Популярный контент

Показан контент с высокой репутацией 05.05.2015 во всех областях

  1. Готового решения на просторах интернета не нашел. То, что напридумывал сам, оформил в виде хелпера к TListBox. Может кому пригодится. Реализовал только необходимые мне методы. И только для режима MultiSelectStyle=None Самое главное, что так индекс возвращается корректно. unit ListBoxHelper; interface uses FMX.Controls, FMX.Types, System.SysUtils, FMX.ListBox, FMX.SearchBox; // Создаем Helper для класса TListBox type TListBoxHelper = class helper for TListBox function ResetFilter : string; // возвращает старый фильтр function GetSearchBox : TSearchBox; // возвращает SearchBox function AddAndClearSelect(const S : string) : integer; // добавить, ничего не выбирать, фильтр очистить function AddAndSelect(const S : string) : integer; // добавить, выбрать, фильтр очистить function AddAndSaveOldSelect(const S : string) : integer; // добавить, сохранить выбор, фильтр очистить function AddAndSaveOldView(const S : string) : integer; // добавить, сохранить выбор и фильтр, вернуть номер добавленного в отфильтрованном списке, или -1 если не попадает в фильтр procedure DeleteItem(const i : integer = -1); // удалить по индексу. если индекс не указан то удалить выбранный end; implementation function TListBoxHelper.GetSearchBox : TSearchBox; var Child : TControl; FxmChild : TFmxObject; begin Result := nil; for Child in self.Controls do for FxmChild in Child.Controls do if FxmChild is TSearchBox then Exit( TSearchBox( FxmChild ) ); end; function TListBoxHelper.ResetFilter : string; var s : TListBoxItem; sb : TSearchBox; begin Result := EmptyStr; s := Selected; sb := GetSearchBox; if Assigned( sb ) then begin Result := sb.Text; sb.Text := EmptyStr; end; if Assigned( FilterPredicate ) then FilterPredicate := nil; if Assigned( s ) then ItemIndex := s.Index; end; function TListBoxHelper.AddAndClearSelect(const S : string) : integer; begin ClearSelection; ResetFilter; Result := Items.Add( s ); end; function TListBoxHelper.AddAndSelect(const S : string) : integer; begin Result := AddAndClearSelect( s ); if Result <> -1 then ItemIndex := Result; end; function TListBoxHelper.AddAndSaveOldSelect(const S : string) : integer; var sel : TListBoxItem; begin sel := Selected; Result := AddAndClearSelect( s ); if Assigned( sel ) then ItemIndex := sel.Index end; function TListBoxHelper.AddAndSaveOldView(const S : string) : integer; var sb : TSearchBox; iSel, iNew : TListBoxItem; flt : string; begin iSel := Selected; iNew := nil; ClearSelection; sb := GetSearchBox; flt := ResetFilter; // Result := Items.Add( s ); if Result <> -1 then iNew := ItemByIndex( Result ); // if flt <> EmptyStr then begin sb.Text := flt; if Assigned( iNew ) then Result := iNew.Index; end; if Assigned( iSel ) then ItemIndex := iSel.Index; end; procedure TListBoxHelper.DeleteItem(const i : integer = -1); var sb : TSearchBox; flt : string; iSel, iDel : TListBoxItem; begin if i > Count-1 then Exit; sb := GetSearchBox; if i > -1 then begin iSel := Selected; iDel := ItemByIndex( i ); end else begin iSel := nil; iDel := Selected; end; flt := ResetFilter; if Assigned( iDel ) then Items.Delete( iDel.Index ); // if flt <> EmptyStr then sb.Text := flt; if Assigned( iSel ) then ItemIndex := iSel.Index; end; end. Еще на XE7 есть глюк в режиме Sorted := True, при добавить одинаковые значения (или несколько одинаковых) и сразу выделении одного через IntemIndex. Но пока на выявление закономерностей и борьбу нет времени. ListBoxHelper.zip
    1 балл
  2. xenon54

    Как работает TImageList c TButton ?

    Все разработчики Embarcadero живут в Питере?
    1 балл
  3. RoschinSpb

    Как работает TImageList c TButton ?

    Поменять размер картинки можно путем изменения стиля. Вот результат: Можно пойти и традиционным путем и просто вставить в кнопку контрол TGlyph Если в каких-то стилях не отображается, или отображается не так красиво, как хотелось бы, то надо сообщить в QC. Проблема скорее всего в стиле. Возможно в него просто забыли добавить TGlyph. P.S. по предыдущему вопросу, что умолчательный размер картинки 16 рассчитан на кнопки умолчательного размера. Вот как это выглядит в VCL
    1 балл
  4. "beginscene" в методе Paint, на сколько мне известно, не нужно.
    1 балл
  5. Andrey Efimov

    [Android] TLabel и открытие URL

    Как-то так: uses FMX.Helpers.Android, Androidapi.Helpers, Androidapi.JNI.GraphicsContentViewText; procedure TForm1.Button1Click(Sender: TObject); var Intent: JIntent; begin Intent := TJIntent.Create; Intent.setAction(TJIntent.JavaClass.ACTION_VIEW); Intent.setData(StrToJURI('http://google.com')); SharedActivity.startActivity(Intent); end; Возможности проверить нет, но в теории должно сработать. В uses может быть что-то лишнее, зависит от вашей версии среды...
    1 балл
  6. Открытие ссылки под Андроид: uses FMX.Helpers.Android, Androidapi.JNI.Net, Androidapi.JNI.GraphicsContentViewText; function OpenURL(const AUrl: string): Boolean; var Uri: Jnet_Uri; OpenLinkIntent: JIntent; begin Uri := StrToJURI(AUrl); // Формируем намерение об открытии ссылки Uri в стандартном браузере OpenLinkIntent := TJIntent.JavaClass.init(TJIntent.JavaClass.ACTION_VIEW, Uri); // Устанавливаем тип данных OpenLinkIntent.setType(StringToJString('text/html')); // Задаем категорию активити, который будет открывать нашу страницу. OpenLinkIntent.addCategory(TJIntent.JavaClass.CATEGORY_BROWSABLE); // Запускаем приложение и передаем ему наше намерение SharedActivity.startActivity(OpenLinkIntent); end; А чтобы открыть файл, нужно сформировать урл AUrl в виде: "file:/ //tmp/android.txt" (убрать пробелы) Согласно принятому стандарту оформления ссылок.
    1 балл
Эта таблица лидеров рассчитана в Москва/GMT+03:00
×
×
  • Создать...