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

Лидеры

  1. krapotkin

    krapotkin

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


    • Баллы

      2

    • Постов

      2 213


  2. Tumaso

    Tumaso

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


    • Баллы

      2

    • Постов

      356


  3. Равиль Зарипов (ZuBy)

    Равиль Зарипов (ZuBy)

    Модераторы


    • Баллы

      1

    • Постов

      2 517


  4. Alex7wrt

    Alex7wrt

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


    • Баллы

      1

    • Постов

      508


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

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

  1. А меня System.JSON полностью устраивает. Ошибок парсинга валидных данных не было ни разу, скорость на нормальном уровне. Гигабайтные данные правда не парсирую, но мне это и не нужно
    2 балла
  2. если кратко то вот TTask.Run( procedure begin что-то качаем TThread.Synchronize(TThread.CurrentThread, procedure begin допустим выводим что скачали end); end);
    1 балл
  3. krapotkin

    Пример работы с потоками

    ничем не отличается от примера работы под не-андроидом я вот тут например писал
    1 балл
  4. Akad

    Нужен нормальный JSON парсер

    Нашёл SuperObject, он из ~1500 JSON проглючил всего на 4-х. Хотя online парсеры эти 4 кушают без проблем. Уже результат. Но всё же хочется лучше. Не думал, что парсинг структурированного текста хоть как-то сложная задача...
    1 балл
  5. Ок. Спасибо всем. ModernLV очень спас компонент во всём на данный момент устраивает, как прозрачный разделитель так и прозрачный фон и прозрачный Item, просто супер. Есть ещё такой вопрос раз пошло тут про прозрачности. Как можно нарисовать стиль для SearchBox хотелось бы что бы под Windows и Android выглядело одинаково, а не под платформу.
    1 балл
  6. любую Shared папку, которую вам не жалко "захламлять". В остальные вас система не пустит, а не-shared уйдут вместе с программой
    1 балл
  7. Alex7wrt

    [Андроид] TAniIndicator

    Может быть вам пригодится - мой пример векторного подхода к AniIndicator без использования картинок и для различных разрешений экрана. Для отрисовки дуги использовал компонент Равиля на основе FMX.Graphics.Native, поскольку стандартные функции не красиво рисуют под Андроидом. Сам индикатор: unit newaniindicator; interface uses System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants, FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.Ani, FMX.Objects, FMX.Layouts, FMX.ZNativeDrawFigure; type TNewAniIndicator = class(TZNativeDrawFigureArc) Animation: TFloatAnimation; procedure AnimationProcess(Sender: TObject); procedure AnimationFinish(Sender: TObject); procedure IndicatorResize(Sender: TObject); procedure Start; procedure Stop; Constructor Create(AOwner: TComponent); override; Destructor Destroy; override; private active: boolean; public colors: array of TAlphaColor; end; implementation constructor TNewAniIndicator.Create(AOwner: TComponent); begin inherited Create(AOwner); Fill.Kind:=TBrushKind.None; Stroke.Cap:=TStrokeCap.Round; Stroke.Join:=TStrokeJoin.Round; Animation:=TFloatAnimation.Create(Self); with Animation do begin Parent:=Self; Duration:=1; StartValue:=-90; StopValue:=270; PropertyName:='StartAngle'; Interpolation:=TInterpolationType.Quadratic; OnProcess:=AnimationProcess; OnFinish:=AnimationFinish; end; OnResize:=IndicatorResize; end; destructor TNewAniIndicator.Destroy; begin Animation.Free; inherited; end; procedure TNewAniIndicator.IndicatorResize(Sender: TObject); begin Stroke.Thickness:=Width*0.1; end; procedure TNewAniIndicator.Start; begin active:=true; Stroke.Color:=colors[0]; Visible:=true; Animation.Start; end; procedure TNewAniIndicator.Stop; begin active:=false; Visible:=False; Animation.Stop; end; procedure TNewAniIndicator.AnimationProcess(Sender: TObject); begin EndAngle:=-0.0037*sqr(StartAngle)+0.667*StartAngle+90; //Функция сжатия/растяжения дуги end; procedure TNewAniIndicator.AnimationFinish(Sender: TObject); var i: byte; begin if active then begin i:=0; while colors[i] <> Stroke.Color do inc(i); if i=length(colors)-1 then Stroke.Color:=colors[0] else Stroke.Color:=colors[i+1]; Animation.Start; end; end; end. Далее в программе: ani:=TNewAniIndicator.Create(form1); with ani do begin Parent:=Form1; Width:=Form1.Width*0.2; Height:=Width; setlength(colors,6); colors[0]:=TAlphaColors.Red; colors[1]:=TAlphaColors.Orange; colors[2]:=TAlphaColors.Yellow; colors[3]:=TAlphaColors.Green; colors[4]:=TAlphaColors.Blue; colors[5]:=TAlphaColors.Violet; Start; end; newaniindicator.zip
    1 балл
  8. ENERGY

    Поиск контакта по номеру

    Большое Вам спасибо Ярослав, за то что вносите большой вклад в развитие Mobile Delphi. Очень мало примеров и документации (причем на любом языке) по этому поводу, ваш сайт очень выручает. Я попробовал демку c:\Program Files (x86)\Embarcadero\Studio\18.0\Samples\Object Pascal\Multi-Device Samples\Device Sensors and Services\Address Book\Contacts\Contacts_Delphi.dproj с TAddressBook . Delphi 10 upd 1 Запускал на телефоне HTC - ни один контакт не загрузился - просто пустой список. UPD: Вместо AddressBook1.AllContacts(Source, Contacts); Нужно AddressBook1.AllContacts(nil, Contacts); тогда загружает все контакты. Вся проблема в том, что он считывает сразу все контакты. А мне это не нужно. Лучше использовать код для поиска конкретного номера, прекрасно находит работает (также работает и вставка нового контакта, здесь описал http://stackoverflow.com/questions/29782398/insert-contacts-in-android-with-delphi/41294891#41294891): function TCore.IsNumberInAddressBook(const aNumber: string): boolean; var vCursor: JCursor; vQueryStr: string; begin Result := false; // will be: data1 LIKE '%+380501960000%' (with quotes) vQueryStr := JStringToString( TJCommonDataKinds_Phone.JavaClass.NORMALIZED_NUMBER) + ' LIKE ''%' + aNumber + '%'''; vCursor := TAndroidHelper.Activity.getContentResolver.query( TJCommonDataKinds_Phone.JavaClass.CONTENT_URI, nil, //projection String: A list of which columns to return. Passing null will return all columns, which is inefficient. StringToJString(vQueryStr), // String: A filter declaring which rows to return, formatted as an SQL WHERE clause (excluding the WHERE itself). Passing null will return all rows for the given URI. nil, nil); // Query help: https://developer.android.com/reference/android/content/ContentResolver.html#query(android.net.Uri, java.lang.String[], java.lang.String, java.lang.String[], java.lang.String) if vCursor <> nil then try Result := vCursor.getCount > 0; finally vCursor.close; end; end; // а это может пригодится while (cursor.moveToNext) do begin lbContactsList.Text := JStringToString(cursor.getString( cursor.getColumnIndex(StringToJString('DISPLAY_NAME')))); lbContactsList.Tag := cursor.getInt(cursor.getColumnIndex(StringToJString('_ID'))); // ListBox1.AddObject(ListBoxItem); end; UPD: AllContacts находится в \source\fmx\FMX.AddressBook.Android.pas А вообще для самообразования хотелось бы узнать как вызвать ContactsContract.PhoneLookup.CONTENT_FILTER_URI И что это за конструкция такая Uri.withAppendedPath, ведь в будущем наверняка с ней придется сталкиваться. Если вы в курсе, расскажите пожалуйста.
    1 балл
Эта таблица лидеров рассчитана в Москва/GMT+03:00
×
×
  • Создать...