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

zairkz

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

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

  • Посещение

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

    12

Ответы сообщества

  1. Пост zairkz - сообщение в OnButtonClick vs OnItemClick был отмечен как ответ   
    procedure TForm1.ListView1ItemClickEx(const Sender: TObject; ItemIndex: integer; const [Ref] LocalClickPos: TPointF; const ItemObject: TListItemDrawable);
    begin
      if ItemObject is TListItemTextButton then
      begin
       //Bla Bla Bla вообщем сюда перенесите OnButtonClick .
      end;
    //Next Bla Bla Bla
    end;
  2. Пост zairkz - сообщение в показать 9-patch в TstyleObject был отмечен как ответ   
    Сохраните ваш стиль, откройте блокнотом найдите нужный вам итем стиля, добавьте отступы например:
     
    SourceLink = <         item           CapInsets.Left = 8.000000000000000000           CapInsets.Top = 8.000000000000000000           CapInsets.Right = 8.000000000000000000           CapInsets.Bottom = 8.000000000000000000           SourceRect.Left = 208.000000000000000000           SourceRect.Top = 249.000000000000000000           SourceRect.Right = 248.000000000000000000           SourceRect.Bottom = 293.000000000000000000         end   после чего у вас дизайнере появиться дополнительная область выделения, по ней и настраивайте область для растягивания 
  3. Пост zairkz - сообщение в Как узнать GPS координаты устройства при отсутствии GPS датчика? был отмечен как ответ   
    Решено Zuby и Cody71727172   , может кому пригодиться:
     
    Вообщем кнопочка MyLocation на MapView цепляет данные c LOCATION_SERVICE (Androidapi.JNI.Location) 
    и если отсутствует GPS датчик в телефоне, тогда:
     
    Прописываем функцию:
    function CheckGPSActive: Boolean; // uses Androidapi.JNIBridge, Androidapi.JNI.Location,  Androidapi.JNI.JavaTypes, Androidapi.JNI.GraphicsContentViewText, Androidapi.Helpers {$IFDEF ANDROID} var   LocManagerObj: JObject;   LocationManager: JLocationManager;   allProviders: JList;   I: Integer; begin   Result := false;   LocManagerObj := SharedActivityContext.getSystemService (TJContext.JavaClass.LOCATION_SERVICE); // запрашиваем сервис Location   if Assigned(LocManagerObj) then   begin     LocationManager := TJLocationManager.Wrap((LocManagerObj as ILocalObject).GetObjectID);     // получаем LocationManager     if Assigned(LocationManager) then     begin       allProviders := LocationManager.getProviders(true);  // запрашиваем список всех провайдеров       if Assigned(allProviders) then         with TStringList.Create do         begin           for I := 0 to allProviders.size - 1 do Add(JStringToString(allProviders.get(I).ToString));           if ((IndexOf('gps') >= 0) or (IndexOf('network') >= 0) or (IndexOf('passive') >= 0)) then                      Result := true;           Free;         end;     end;  end; {$ELSE} begin   Result := false; {$ENDIF} end; и при запуске LocationSensor например на Form.Create проверяем
    procedure TForm_main.FormCreate(Sender: TObject); begin {$IFDEF ANDROID}  LocationSensor.Active:=true;  if not LocationSensor.Active then         if not CheckGPSActive then           ShowMessage('Включите GPS для определения Вашего местоположения!')         else           LocationSensor.Active := true; {$ENDIF} end; LocationSensor сам подключит источник данных, поэтому изменять в LSensor1LocationChanged ничего не нужно, например:
    procedure TForm_Main.LSensor1LocationChanged(Sender: TObject; const [Ref] OldLocation, NewLocation: TLocationCoord2D); //uses Maps.Engine var   MapsEngine: TMapsEngine;  MapsLoc: TMapCoordinate;  MapsData: TMapsEngineGeoData; begin   MapsLoc := TMapCoordinate.Create(NewLocation.Latitude, NewLocation.Longitude);   MapsEngine.SetOptionsYandex('');   MapsEngine.Geocoding(NewLocation, MapsData);   Edit1.text:= MapsData.FormattedAddress; end;  
  4. Пост zairkz - сообщение в [iOSSimulator] TBitmap.Resize - иногда белый прямоугольник был отмечен как ответ   
    Проблема 1: Есть встроенная функция CreateThumbnail в Delphi
    Проблема 2: Нужно пересохранить в другой формат (по умолчанию не сжатый bmp вроде как)
     
    Попробуйте сделать так
    uses FMX.Surfaces;
     
    procedure TmyThread.RescalePhoto(const FileName: string);
    const
      DefaultHeight = 300;
    var
      Bitmap: TBitmap;
      BitmSur:  TBitmapSurface;
      TBSS:   TBitmapCodecSaveParams;
      xScale: Double;
      newWidth, newHeight: integer;
    begin
      Bitmap := TBitmap.Create;
      try
        try
          Bitmap.LoadFromFile(FileName);
          // установим высоту в 300 пикселей.
          if Bitmap.Height <> DefaultHeight then
            begin
              xScale := Bitmap.Height / DefaultHeight;
              newHeight := DefaultHeight;
              newWidth := Round(Bitmap.Width / xScale);

              Bitmap.CreateThumbnail(newWidth, newHeight);
              TBSS.Quality := 90; //Укажите качество
              BitmSur:= TBitmapSurface.Create;
              BitmSur.Assign(Bitmap);
              TBitmapCodecManager.SaveToFile(FileName, BitmSur, @TBSS); //Сохраняем в файл
            end;
        except
          DeleteFile(FileName);
          raise;
        end;
      finally
        Bitmap.Free;
        BitmSur.Free;
      end;
    end;
  5. Пост zairkz - сообщение в argument out of range был отмечен как ответ   
    Что то я по описанию не увидел проблему, сделал проект такой же все работает TestLV
     
    Вызываю очищение и добавления ListView по нажатию ListBoxItem'a.
    while ListView1.ItemCount>0 do ListView1.Items.Delete(0);
     
    ListView1.BeginUpdate;
       for i := 0 to 50 do ListView1.Items.Insert(0).Text:='Text - '+i.ToString;
    ListView1.EndUpdate;
     
    На счет удаления из ListView компонента по нажатию, то есть из самого себя, есть проблемка, не сбрасывается ссылка на Item, пришлось обходить её через таймер (1 мс)
    Сохраняю Aitem.index в глобальную переменную и по таймеру удаляю Итем по индексу, потом выключаем таймер. Незнаю на сколько это правильно, но все работает и меня устраивает. В проекте выше есть
×
×
  • Создать...