-
Постов
135 -
Зарегистрирован
-
Посещение
-
Победитель дней
12
Ответы сообщества
-
Пост 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;
-
Пост 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 после чего у вас дизайнере появиться дополнительная область выделения, по ней и настраивайте область для растягивания
-
Пост 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;
-
Пост 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;
-
Пост 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 в глобальную переменную и по таймеру удаляю Итем по индексу, потом выключаем таймер. Незнаю на сколько это правильно, но все работает и меня устраивает. В проекте выше есть