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

Pavel M

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

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

  • Посещение

Сообщения, опубликованные Pavel M

  1. Спасибо.

    Меня интересует именно уровень приема от вышки (не тип или скорость интернета).

    А больше интересует как где рашририть свои знания как пользоваться сайтом android.developer - покупать книжку по программам под студию, изучить и тогда пытаться на родном Delphi?

  2. Как получить уровень приема сотовой сети?

     

    Google пользоваться умею, а вот отсутствие опыта дает о себе знать.

    Буду благодарен за ссылки, что почитать для общего понятия написания по android c учетом специфики Delphi.

     

     

    Нашел:

    TelephonyManager tm = (TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE);
    int dbm = 0;
    if ( tm.getNetworkType() == TelephonyManager.NETWORK_TYPE_LTE){
    dbm = Integer.parseInt(parts[8])*2-113;
    }
    else{
    if (signalStrength.getGsmSignalStrength() != 99) {
    int intdbm = -113 + 2
    * signalStrength.getGsmSignalStrength();
    dbm = Integer.toString(intdbm);
    }
    }
    public static final int LISTEN_SIGNAL_STRENGTH
    Added in API level 1

     

    This constant was deprecated in API level 7.
    by LISTEN_SIGNAL_STRENGTHS

    Listen for changes to the network signal strength (cellular).

    Requires Permission: READ_PHONE_STATE

    Constant Value: 2 (0x00000002)

     

     

     

     

    Вот что пытаюсь сделать:

    function  GetLevel: string;
    var
      TelephonyObj: JObject;
      TelephonyManager: JTelephonyManager;
      Listner: JPhoneStateListener;
    begin
      TelephonyObj := SharedActivityContext.getSystemService(TJContext.JavaClass.TELEPHONY_SERVICE);
      TelephonyManager := TJTelephonyManager.Wrap((TelephonyObj as ILocalObject).GetObjectID);
     Listner :=  TelephonyManager.listen(Listner, 2);
    
      result := JStringToString(Listner.toString); //ПОЛАГАЮ ПОЛУЧУ НАЗВАНИЕ КОМПОНЕНТА ВМЕСТО РЕЗУЛЬТАТА??? ))
    end;

    Пытаюсь и вот так

    function  GetSim1Level: integer;
    var
      TelephonyObj: JObject;
      TelephonyManager: JTelephonyManager;
      cellinfogsm: JCellInfoGsm;
      CellSignalStrengthGsm:  jcellSignalStrengthGsm;
      Level: integer;
    begin
      TelephonyObj := SharedActivityContext.getSystemService(TJContext.JavaClass.TELEPHONY_SERVICE);
    
      TelephonyManager := TJTelephonyManager.Wrap((TelephonyObj as ILocalObject).GetObjectID);
     cellinfogsm:= (TelephonyManager.getAllCellInfo.get(0) as JCellInfoGsm);
    
    
    CellSignalStrengthGsm := cellinfogsm.getCellSignalStrength();
    Result := cellSignalStrengthGsm.getLevel;
    
    end;

    В на выходе конечно же получаю ошибку...

     

    Как я понимаю тут надо создать какой то ресивер?

    Он используется постоянно и вызываетя при событии описываемой в Delphi процедурой?

    Или к нему разовый доступ и получение текущей информации при обращении к его свойствам?

    Прошу больше помочь не готовым кодом, а что почитать. Поскольку есть желание понять.

  3. Добрый день!

     

    TreeRazdel (TTreeView) отражает разделы с подкатегориями

     

    ListDocs (TListBox) отражает элементы выбранной категории

     

    Необходимо перемещение элементов ListDocs по категориям (с изменениями в БД)

     

    Включаю AllowDrag для ListDocs и TreeRazdel.

    procedure TFormMain.TreeRazdelDragDrop(Sender: TObject;
      const [Ref] Data: TDragObject; const [Ref] Point: TPointF);
    
    begin
    
    if Data.Source is TListBoxItem then
       begin
         idRazdel := TreeRazdel.ItemByPoint(Point.X,Point.Y).Tag;
         idDocs := (Data.Source as TListBoxItem).Tag;
    
         //(Data.Source as TListBoxItem).Free; - ДАЁТ ОШИБКУ
    
         if (idRazdel > 0) and (idDocs >0) then  
         MoveDocs(idDocs, idRazdel); //процедура перемещения элемента в другой раздел
    
       end;
    
    end;
    

    Проблемы:

    1) Элементы ListBox реально переносятся в TTreeView (как их сразу же уничтожать?)

    2) При перемещении в свободное место TTreeView (не в категорию) - ошибка

    3) При включении у TTreeView  DragMode := dmAutomatic не возможно выбрать его элементы.

  4. Вывожу в ListBox содержимое таблицы.

    В основной текст хочу вывести 3 поля, а в заголовок Lookup значение (таблицы-справочника).

     

    Для Item.Text выставляю

    CustomFormat: Owner.FieldByName('Фамилия').Text+' '+Owner.FieldByName('Имя').Text+' '+Owner.FieldByName('Отчество').Text

    ПОКА ВСЁ РАБОТАЕТ НОРМАЛЬНО

    Показывает список как надо - полные  "Фамилия Имя Отчество" для каждой записи.

     

    Если на  Header забросить поле ID_должность (числовое) оно прекрасно отображается в ListBox.

    Но задача привязать значение из справочника.

     

    Как только добавляю дополнительное поле Lookup в таблицу (TFDQuery->Fields Editor->New field->Lookup ... )

    у меня перестает работать ФИО - выдает значение "()"

     

    т.е. как только я добавляю поля или создаю новые весь LiveBindings теряет доступ к

    Self.Owner.FieldByName(....)

    .

     

    если в CustomFormat  написать:

    %s+' '+Owner.FieldByName('Имя').Text+' '+Owner.FieldByName('Отчество').Text

    Выводит: "Фамилия ()"

     

    Как обращаться к полям в CustomFormat когда они добавление через Fields editor?

  5. Пытаюсь познакомиться с FMX и найти как исполнить то что на VCL было очень просто:

    (база mdb)

    Добавлял DBGrid подключал источником таблицу, одно поле создавал вручную (отражал его на гриде - в нем Lookup подгружал текстовые названия из другой таблицы, связаны по ID) в итоге при редактировании прямо на гриде выпадающий комбобокс. Выбирам из него текстовые данные и в начальной таблице прекрасно менялся числовой ID хотя визуально выбираешь текст из второй таблицы.

     

    В FMX подключил отражение таблицы на Grid через LiveBindings так же создал поле lookup из второй таблице, ID скрыл. НО ни какого ComboBox конечно же нет, и редактировать это поле я вообще не могу.

     

    Я думаю надо делать отдельный комбобокс но как показывать текст из справочника (второй таблицы), а передать ID в первую?

    Я понимаю что можно ручками, событиями и SQL..., а можно ли это сделать LiveBindings без тонн кода?

×
×
  • Создать...