-
Постов
2 517 -
Зарегистрирован
-
Посещение
-
Победитель дней
264
Активность репутации
-
Равиль Зарипов (ZuBy) получил реакцию от Ingalime в [Обзор] #0 ModernListView - знакомство
Ссылка: http://blog.rzaripov.kz/2016/11/0-modernlistview.html
Автор: Равиль Зарипов @ZuBy
Описание: Знакомство с ModernListView
-
Равиль Зарипов (ZuBy) получил реакцию от pill в [Обзор] #0 ModernListView - знакомство
Ссылка: http://blog.rzaripov.kz/2016/11/0-modernlistview.html
Автор: Равиль Зарипов @ZuBy
Описание: Знакомство с ModernListView
-
Равиль Зарипов (ZuBy) получил реакцию от Евгений (KeeperWorld) в ListView Color Helper
Привет Всем!
Много тем на форуме про раскраску TListView, нашел в интернете решение и доработал его
Вот что получилось
LV_Helper.zip ColorListView.zip
Доступно для Seattle
ListView1.SetColorItemSelected(TAlphaColorRec.Orangered); //выделенный ListView1.SetColorItemFill(TAlphaColorRec.Gray); // обычный цвет Item ListView1.SetColorItemFillAlt(TAlphaColorRec.Lightgrey); // альтернативный цвет Item ListView1.SetColorBackground(TAlphaColorRec.Black); // цвет самого TListView ListView1.SetColorItemSeparator(TAlphaColorRec.Lightgray); // Линия разделения Item'ов ListView1.SetColorText(TAlphaColorRec.Red); // Обычный текст ListView1.SetColorTextSelected(TAlphaColorRec.White); // выделенный текст ListView1.SetColorTextDetail(TAlphaColorRec.Yellow); // текст доп. инфы ListView1.SetColorTextHeader(TAlphaColorRec.Green); // текст заголовка ListView1.SetColorTextHeaderShadow(TAlphaColorRec.Lightgray); // тень текста ListView1.SetColorButtonText(TAlphaColorRec.Orange); // цвет текста кнопки ListView1.SetColorButtonTextPressed(TAlphaColorRec.Orangered); // цвет нажатой кнопки добавлено в Berlin
ListView1.SetColorPullRefresh(TAlphaColorRec.Orange); ListView1.SetColorPullRefreshIndicator(TAlphaColorRec.Orangered); ListView1.SetColorStretchGlow(TAlphaColorRec.Lime); ModernListView.rar
-
Равиль Зарипов (ZuBy) получил реакцию от gonzales в vkbdhelper - поднятие компонентов над клавиатурой
Как пользоваться:
поместить файл в папку с проектом, прописать в uses желательно в .dpr файле. Всё
-
Равиль Зарипов (ZuBy) получил реакцию от gonzales в vkbdhelper - поднятие компонентов над клавиатурой
Привет Всем!
vkbdhelper.pas
Давно пользовался vkbdhelper'ом, но он был только для андроида.
руки добрались и до этого, теперь его можно использовать и на IOS
изменения
* почистил uses секцию
* убрал зависимость от платформ (кросс-платформенный)
* добавил глобальную переменную VKOffset
VKOffset - расстояние между контролом и клавиатурой
для тех случаев когда включены подсказки/автозамена
и контрол оказывается под доп. панелькой
Не все клавиатуры включают доп. панели в свой размер!
Например для IOS нужно всегда прибавлять 30-32 пикселя, панель с кнопкой Done перекрывает контрол
{$IFDEF IOS} VKOffset := 31; {$ELSE} VKOffset := 0; // на свой вкус // не знаю как определить размер доп. панельки // когда она не входит в размер клавиатуры // и определить есть ли панелька вообще... {$ENDIF} vkbdhelper.zip
-
Равиль Зарипов (ZuBy) получил реакцию от Ilya.Z в Использовать edit в popup форме
использовать TMultiView с режимом Custom + FMX.MultiView.CustomPresentation.pas
смотреть демо пример
кинуть на этот MultiView edit и кнопку, готово
-
Равиль Зарипов (ZuBy) получил реакцию от Ingalime в Экспорт в файл/импорт из файла.
вот так примерно
json-treeview.zip
-
Равиль Зарипов (ZuBy) получил реакцию от Ingalime в Seattle Android Ошибка exited with code 1
поставил Берлин не снимал галки с установки SDk создал новый проект для андроида сразу ошибку выдал скачал SDK android 6.0, установил дефолтным поставил последний JDK (для уверенности и 32 бита и 64 бита) теперь компилирует, собирает библиотеку, но не создается апк Все это запущено на виртуалке, чтобы рабочую сиетл не грохнуть
что можно еще предпринять?
дело было в sdk, скопировал из сиетла и норм
-
Равиль Зарипов (ZuBy) получил реакцию от Ingalime в Использование нативных LocalBroadcastManager и BroadcastReceiver
емба сломала это еще в Берлине, в Токио не починили.
Службы "нормально" работают только в Сиетле
-
Равиль Зарипов (ZuBy) получил реакцию от pogromist в DropBox Rest
на например можно вот так
DropBox_test.rar
UPDATE: Там не используется TRest** компоненты, я их не люблю. Поэтому написал по своему.
В мемо показана картинка, другого ничего не было на дропбоксе, думаю разберетесь в коде
-
Равиль Зарипов (ZuBy) получил реакцию от Ingalime в Работа с маркерами
используйте правильные методы
Form3.Close; Form5.Show; что на этих формах содержится?
я бы на всякий случай весь код в событиях TMapView заключал бы в
TThread.Synhronize(nil, procedure begin // тут код который нужно выполнить end); -
Равиль Зарипов (ZuBy) получил реакцию от Ingalime в Поток в Firemonkey Android для скачивания TXT
во первых: синхронизация сделана не правильно
во вторых: в примерах студии есть демка с отображением индикатора загрузки
в третьих: создание TIdHTTP (лучше заменить на THTTPClient) нужно делать в потоке
код на коленке, без TThread
// uses System.Threading TTask.Run( procedure var aHTPP: THTTPClient; aStream: TStringStream; aResult: String; begin aResult := ''; aHTPP := THTTPClient.Create; aStream := TStringStream.Create('', TEncoding.UTF8); try aHTTP.Get('урл://', aStream); aResult := aStream.DataString; finally FreeAndNil(aHTPP); FreeAndNil(aStream); end; TThread.Synchronize(TThread.CurrentThread, procedure begin Memo1.Text := aResult; end) end)
-
Равиль Зарипов (ZuBy) получил реакцию от Edward Tarasov в Приложение для получения раздражителей в работе Магазинов розничной сети
а что в этом сложного?
найди сервис который будет тебе отправлять смску за нормальную цену.
1) сгенерируй код, в пределах 1111-9999
2) запомни его (в переменную)
3) вызови апи сервиса который отправляет смс, со своим текстом и кодом
5) вызови диалог ввода смс-кода
6) пользователь вводит смс-код
7) сравниваешь с сохраненным в переменную значением
8) Профит!
6 пункт можно автоматизировать, через бродкаст и автоматическое чтение смс
-
Равиль Зарипов (ZuBy) получил реакцию от Anatoliy в CloudFlare [IPV6]
Доброго времени суток!
Для тех, кто не может опубликовать приложение в AppStore
Если приложение посылает запросы на сервер и у Вас на сервере нет поддержки IPV6, Apple не опубликует приложение!
Что нужно для успешной публикации:
Получить у Вашего хостера IPV6 адрес (примерно такой вид имеет ipv6 адрес) 2001:0db8:11a3:09d7:1f34:8a2e:07a0:765d
Если нет root-доступа к серверу, то можно воспользоваться сервисом https://cloudflare.com Если есть root-доступ, то ознакомьтесь с инструкцией Мы рассмотрим самый частый вариант, без root-доступа, через сервис CloudFlare
Не буду расписывать регистрацию, там все просто Нажимаем +Add Site, вписываем адрес Вашего сайта (домен), как только система проверит конфигурацию Вашего текущего DNS, она предложит изменить NS-сервера В кабинете хостера Вам нужно будет сменить NS-сервара, на те которые выдал CloudFlare В CloudFlare -> раздел DNS Нужно будет дописать запись типа AAAA с Вашим ipv6 адресом Все поддомены которые есть также прописать через запись типа CNAME Чтобы работало FTP нужно отключить HTTP Proxy (CDN) Теперь FTP протокол будет доступен по IPv4, не по домену Ждём обновления DNS и проверяем правильность конфигурации
Результат примерно такой должен быть
Что нужно сделать в Delphi / C++:
Выкидываем TidHTTP (Indy) и переписываем на TNetHTTPClient Приложу пример запроса и обработки ответов, учтен баг с получением контента на IOS
TmyAPI.zip или https://github.com/rzaripov1990/FMX.HTTP.Request
-
Равиль Зарипов (ZuBy) получил реакцию от Юрий В. в vkbdhelper - поднятие компонентов над клавиатурой
Привет Всем!
vkbdhelper.pas
Давно пользовался vkbdhelper'ом, но он был только для андроида.
руки добрались и до этого, теперь его можно использовать и на IOS
изменения
* почистил uses секцию
* убрал зависимость от платформ (кросс-платформенный)
* добавил глобальную переменную VKOffset
VKOffset - расстояние между контролом и клавиатурой
для тех случаев когда включены подсказки/автозамена
и контрол оказывается под доп. панелькой
Не все клавиатуры включают доп. панели в свой размер!
Например для IOS нужно всегда прибавлять 30-32 пикселя, панель с кнопкой Done перекрывает контрол
{$IFDEF IOS} VKOffset := 31; {$ELSE} VKOffset := 0; // на свой вкус // не знаю как определить размер доп. панельки // когда она не входит в размер клавиатуры // и определить есть ли панелька вообще... {$ENDIF} vkbdhelper.zip
-
Равиль Зарипов (ZuBy) получил реакцию от Roma77751 в [TListView] Как отловить нажатие на картинку в TListView?
if ItemObject is TListItemImage then begin if ItemObject.Name = 'Image2' then ..... end; -
Равиль Зарипов (ZuBy) получил реакцию от Ingalime в Приложение для расчёта сцепления автомобиля и его привода v.1.1
загрузить на файлообменник или в облако и приложите ссылку в тему
-
Равиль Зарипов (ZuBy) получил реакцию от Tom1984 в Динамическая подгрузка картинок в ListView
Привет Всем!
Как принято в современных приложениях, догружать контент(обычно это картинки) при скролинге.
я взял картинки пользователей этого форума
Seattle LVdynamicLoadBitmap.zip
Berlin LVdynamicLoadBitmap(Berlin).zip
-
Равиль Зарипов (ZuBy) получил реакцию от Евгений Корепов в Прозрачная иконка приложения
вот так
NotificationCenter1.ApplicationIconBadgeNumber := 0;
-
Равиль Зарипов (ZuBy) получил реакцию от Ingalime в GIT - как с ним наиболее просто работать
если нужно чтобы проекты были в гите и секьюрно, то можно воспользоваться решением от atlassian.
купить продукт Server, развернуть на любом сервере. стартер пак - 10$ на 10 человек
-
Равиль Зарипов (ZuBy) получил реакцию от Barbanel в GIT - как с ним наиболее просто работать
если нужно чтобы проекты были в гите и секьюрно, то можно воспользоваться решением от atlassian.
купить продукт Server, развернуть на любом сервере. стартер пак - 10$ на 10 человек
-
Равиль Зарипов (ZuBy) получил реакцию от MrAnderson в Работа с ListView
procedure TForm3.Button1Click(Sender: TObject); begin with ListView1.Items.Add do begin Text := '...'; Data['STATUS'] := 'Signal'; end; with ListView1.Items.Add do begin Text := '...'; Data['STATUS'] := 'Normal'; end; ListView1.Resize; end; procedure TForm3.ListView1UpdateObjects(const Sender: TObject; const AItem: TListViewItem); var TextObject: TListItemText; begin TextObject := AItem.Objects.FindDrawable('STATUS') As TListItemText; if TextObject = nil then begin TextObject := TListItemText.Create(AItem); TextObject.Name := 'STATUS'; end; if TextObject.Text = 'Signal' Then TextObject.TextColor := TAlphaColorRec.Red else TextObject.TextColor := TAlphaColorRec.Black; end; остальное сами настроете
-
Равиль Зарипов (ZuBy) получил реакцию от Manfred в [Статья] Настройка пуш уведомлении через сервис Firebase для ANDROID и IOS [Часть 2]
Принцип работы Push на разных ОС не отличается
если коротко, не обращаем внимание на OS и термины (для ознакомления прошу сюда)
Описание технологии GCM и APNs хорошо расписаны на хабре, гораздо более профессионально. Я уж точно ничего нового не внесу.
-
Равиль Зарипов (ZuBy) получил реакцию от Manfred в [Статья] Настройка пуш уведомлении через сервис Firebase для ANDROID и IOS [Часть 2]
@Ingalime спасибо за вопросы)
1) Вот есть хорошее описание работы и терминов касательно APNs и GCM, тратить на это время и писать тоже самое не хотелось
2) Реализация серверной и клиентской части есть в статье
3) Что для этого нужно и как настроить есть в предыдущей статье
Laravel - это PHP фреймфорк, но выложил код на "чистом" PHP, чтобы каждый мог быстро интегрировать в свой проект, не привязываясь к фреймворкам
-
Равиль Зарипов (ZuBy) получил реакцию от petyaas в TLocationSensor - километраж
встроенных нету, по прямой можно рассчитать так
function GetDistance(const aStart, aEnd: TMapCoordinate): Real; const Radius = 6372795; PiDiv180 = Pi / 180; var CosLatStart, SinLatStart, CosLatEnd, SinLatEnd, Delta, CosDelta, SinDelta, X, Y: Real; begin try CosLatStart := Cos(aStart.Latitude * PiDiv180); CosLatEnd := Cos(aEnd.Latitude * PiDiv180); SinLatStart := Sin(aStart.Latitude * PiDiv180); SinLatEnd := Sin(aEnd.Latitude * PiDiv180); Delta := (aEnd.Longitude * PiDiv180) - (aStart.Longitude * PiDiv180); CosDelta := Cos(Delta); SinDelta := Sin(Delta); Y := Sqrt(((CosLatEnd * SinDelta) * (CosLatEnd * SinDelta)) + ((CosLatStart * SinLatEnd - SinLatStart * CosLatEnd * CosDelta) * (CosLatStart * SinLatEnd - SinLatStart * CosLatEnd * CosDelta))); X := SinLatStart * SinLatEnd + CosLatStart * CosLatEnd * CosDelta; Result := Round(ArcTan2(Y, X) * Radius); except Result := MaxSingle; // сравнивать с MaxSingle, вдруг ошибка произошла end; end;