-
Постов
135 -
Зарегистрирован
-
Посещение
-
Победитель дней
12
Активность репутации
-
zairkz отреагировална noisy в Какие статьи вы хотели бы видеть в блогах?
Рассмотрение подходов создания мобильного приложения со многими формами
табы, формы, фрэймы. Плюсы и минусы того и иного подхода.
-
zairkz отреагировална Равиль Зарипов (ZuBy) в Странные глюки ProgressBar'ов в ListBox
Мы не злые, ответили на ваш вопрос. Нет смысла дублировать ответы, если на них уже даны исчерпывающие ответы. Переходим по ссылкам и читаем, там все написано
-
zairkz отреагировална shershen в Странные глюки ProgressBar'ов в ListBox
Я это знаю, я имел ввиду, что я ошибся разделом форума, а не компонентом.
Злые вы тут, пойду на stackoverflow.com, там запрещено отвечать ссылками.
-
zairkz отреагировална AndreyS в Воспроизведение одного видео в двух окнах, Windows
Я как-то ради баловства начинал делать что-то подобное. Как раз синхронное воспроизведение одного ролика в 2-х разных окнах. (2 и даже 3 видео FullHD без проблем и тормозов воспроизводилось на ноуте. Компоненты нашел какие-то, работающие через FFMPEG (вроде). Но наткнулся на одну очень неприятную проблему. Если даже получится одновременно запустить 2 видео одновременно, то в случае их рассинхронизации не получится спозиционировать один из потоков на конкретный кадр (и даже на конкретную временную метку). Дело в том, что в видео хранится не каждый кадр. Хранится опорный кадр, в после него несколько (иногда несколько десятков) кадров, в которых содержится информация только об изменениях в опорном кадре. Поэтому и спозиционировать видео можно только на опорный кадр. (Точнее можно спозиционировать на любую метку, но до первого опорного кадра на видео будет отображаться хрень).
-
zairkz отреагировална Равиль Зарипов (ZuBy) в Простая защита программы
procedure GetWMIInfo(mem: TMemo); // uses Winapi.ActiveX, System.Win.ComObj; const wbemFlagForwardOnly = $00000020; var FSWbemLocator: OLEVariant; FWMIService: OLEVariant; FWbemObjectSet: OLEVariant; FWbemObject: OLEVariant; oEnum: IEnumvariant; iValue: LongWord; begin FSWbemLocator := CreateOleObject('WbemScripting.SWbemLocator'); FWMIService := FSWbemLocator.ConnectServer('localhost', 'root\CIMV2', '', ''); FWbemObjectSet := FWMIService.ExecQuery('Select * from Win32_MotherboardDevice', 'WQL', wbemFlagForwardOnly); oEnum := IUnknown(FWbemObjectSet._NewEnum) as IEnumvariant; while oEnum.Next(1, FWbemObject, iValue) = 0 do begin if not VarIsNull(FWbemObject.DeviceID) then mem.Lines.Add(VarToStr(FWbemObject.DeviceID)); if not VarIsNull(FWbemObject.PrimaryBusType) then mem.Lines.Add(VarToStr(FWbemObject.PrimaryBusType)); if not VarIsNull(FWbemObject.SecondaryBusType) then mem.Lines.Add(VarToStr(FWbemObject.SecondaryBusType)); FWbemObject := Unassigned; end; end; что вы там собрались брать?
Результат:
я могу вам предложить вот такой вариант
замените этими строками код выше, вы получите все устройства доступные на ПК
FWbemObjectSet := FWMIService.ExecQuery('Select * from CIM_LogicalDevice', 'WQL', wbemFlagForwardOnly); ......... if not(VarIsNull(FWbemObject.Name) and VarIsNull(FWbemObject.DeviceID)) then mem.Lines.Add(VarToStr(FWbemObject.Name) + ' - ' + VarToStr(FWbemObject.DeviceID)); или использовать защиту по MAC адресу
FWbemObjectSet := FWMIService.ExecQuery ('SELECT Description,MACAddress,IPAddress FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled=TRUE', 'WQL', wbemFlagForwardOnly); .............. if not(VarIsNull(FWbemObject.MacAddress) and VarIsNull(FWbemObject.IpAddress)) then mem.Lines.Add(VarToStr(FWbemObject.MacAddress) + ' - ' + VarToStr(FWbemObject.IpAddress[0])); -
zairkz отреагировална Brovin Yaroslav в Описание TfgToast - Быстрые уведомления
Так, у вас цвет сбрасывается, так как вы вызываете классовый метод Show, а нужно использовать show без параметров:
Toast.BackgroundColor := TAlphaColorRec.Blue; Toast.MessageColor := TAlphaColorRec.Red; Toast.Message := 'Привет'; Toast.Show; А у вас
Toast.Show('Привет!'); Это классовый метод для быстрого показа тоста только с текстом.
-
zairkz получил реакцию от R.is в Ошибка сертификата Apple
А у меня вчера, действительно эпопея), поэтому и создал тему что бы кто нибудь не разбил свой монитор, не качал бы образ Мака гигов под 40), не убил свои клетки нервные))
-
zairkz получил реакцию от Равиль Зарипов (ZuBy) в Ошибка сертификата Apple
А у меня вчера, действительно эпопея), поэтому и создал тему что бы кто нибудь не разбил свой монитор, не качал бы образ Мака гигов под 40), не убил свои клетки нервные))
-
zairkz получил реакцию от Brovin Yaroslav в Ошибка сертификата Apple
А у меня вчера, действительно эпопея), поэтому и создал тему что бы кто нибудь не разбил свой монитор, не качал бы образ Мака гигов под 40), не убил свои клетки нервные))
-
zairkz получил реакцию от Brovin Yaroslav в Ошибка сертификата Apple
Добрый день, это просто стрессовая ночь без сна, как меня з..бал APPLE ((
Если кто то собирается выпускать сертификаты Apple (сертификаты разработчика или Push сертификаты), и начнет парится потому что сертификаты выпускаются просроченными, знайте что вы не виноваты)
Вообщем в маке в "Связке ключей" в меню "Вид" кликнете на "Показать скрытые сертификаты"
Далее в Связке "Система" найдите просроченный сертификат Apple и удалите его.
После чего с кабинета разработчика скачайте и установите новый сертификат, ссылка на скачивания есть при создания нового сертификата в самом низу. ((
Подробнее на
http://stackoverflow.com/questions/35390072/this-certificate-has-an-invalid-issuer-apple-push-services/35399656#35399656
Извиняются...
-
zairkz отреагировална kami в Ошибка сертификата Apple
У меня в понедельник эта эпопея была, поскольку срок действия того сертификата закончился в воскресенье.
-
zairkz получил реакцию от Равиль Зарипов (ZuBy) в Ошибка сертификата Apple
Добрый день, это просто стрессовая ночь без сна, как меня з..бал APPLE ((
Если кто то собирается выпускать сертификаты Apple (сертификаты разработчика или Push сертификаты), и начнет парится потому что сертификаты выпускаются просроченными, знайте что вы не виноваты)
Вообщем в маке в "Связке ключей" в меню "Вид" кликнете на "Показать скрытые сертификаты"
Далее в Связке "Система" найдите просроченный сертификат Apple и удалите его.
После чего с кабинета разработчика скачайте и установите новый сертификат, ссылка на скачивания есть при создания нового сертификата в самом низу. ((
Подробнее на
http://stackoverflow.com/questions/35390072/this-certificate-has-an-invalid-issuer-apple-push-services/35399656#35399656
Извиняются...
-
zairkz отреагировална Brovin Yaroslav в [Статья][Android] Приложение будильник. Использование AlarmManager в FireMonkey на Андроиде
Ссылка: http://yaroslavbrovin.ru/using-alarmmanager-in-firemonkey-on-android-ru/ Автор: Бровин Ярослав Статья посвящена использованию Андроид AlarmManager в delphi приложения, позволяющего выполнять код в назначенное время даже, когда приложение закрыто. Все это рассматривается на примере приложения Будильник.
-
zairkz отреагировална HyperZen в Bug fix list for RAD Studio 10 Seattle Update 1
Все хотфиксы установлены и чудненько работают Спасибо братьям китайцам
-
zairkz отреагировална haword в Как увеличить скорость отработки запроса SQL к базе SQLLite
табы лучше не использовать, вместо них использовать разные формы. табы жрут все время отрисовки ибо каждый элемент отрисовывается не зависимо от того активна влкдака или нет.
-
zairkz получил реакцию от Равиль Зарипов (ZuBy) в доступ к вложенным элементам
Вот так все работает, но может я не понял вопроса
Желательно это делать в OnApplyStyleLookup данного объекта.
например если хотите заполнить стилевой текст или картинку:
Новый объект стиля TButton содержит TText, TLabel, TImage и TButton
procedure TForm_main.Button1ApplyStyleLookup(Sender: TObject);
begin TText(TButton(Sender).FindStyleResource('detail')).Text := 'Детали'; TLabel(TButton(Sender).FindStyleResource('titul')).Text := 'Наименование'; TImage(TButton(Sender).FindStyleResource('img')).Bitmap.Assign(BTMP); TButton(TButton(Sender).FindStyleResource('but_min')).Tag := 58; TButton(TButton(Sender).FindStyleResource('but_min')).OnClick := ButW_Min; end;
Сделайте одну процедуру OnApplyStyleLookup и присвойте необходимым объектам.
Можно напрямую заполнять хоть откуда например TText(Button1.FindStyleResource('detail')).Text := 'Детали'; но тогда страшные аномалии происходят если ваш объект находятся допустим в скролбоксе. -
zairkz отреагировална Равиль Зарипов (ZuBy) в OnValidateServerCertificate NetHTTPClient
убрать [Ref]
-
zairkz отреагировална Равиль Зарипов (ZuBy) в Запрет нажатия на контролы внутри ScrollBox при прокручивании
для мобильных устройств есть специальное событие OnTap
в случае с комбобокс оно не поможет а вот для кнопок самое то
-
zairkz отреагировална krapotkin в Потоки и процедуры
Я тоже сделал свой подкласс для TForm, только aProc не в Show а прямо в Create
получается аналог ShowModal(proc...() begin end) с небольшими нюансами
Но в целом идея аналогична
-
zairkz отреагировална Равиль Зарипов (ZuBy) в TRESTClient
подсказка на будущее
1) кидаем компонент на форму
2) откомпилим
3) смотрим какие модули добавились (правда не все нужны, но методом тыка убираем ненужные)
важный блок в таких модулях initialization, там обычно регистрируются сервисы и прочие плюшки для работы.
ошибка показала что у вас не инициализировались нужные интерфейсы
initialization PeerFactory.RegisterPeer(IPImpId, IIPHTTP, TIdHTTPPeer); PeerFactory.RegisterPeer(IPImpId, IIPTCPClient, TIdTCPClientPeerIP); PeerFactory.RegisterPeer(IPImpId, IIPBasicAuthentication, TIdBasicAuthenticationPeer); PeerFactory.RegisterPeer(IPImpId, IIPURI, TIdURIPeerFactory); PeerFactory.RegisterPeer(IPImpId, IIPHashMessageDigest5, TIdHashMessageDigest5Peer); -
zairkz отреагировална SergeyIT в TRESTClient
Спасибо большое, ошибка исчезла.
Но обидно чуток... Вот пришел человек новый в поисках счастья... А где логика, как ему понять что нужны такие вот неймспейсы...
Ведь день убил на это. Ладно б TMesh какой-нибудь кастомный изобретал бы
-
zairkz отреагировална Равиль Зарипов (ZuBy) в Как создать мобильную версию сайта?
у меня код состоит только из разбора json'a который формируется на сервере.
весь парсинг написан на php, по нескольким причинам:
1) всегда есть доступ к файлам чтобы отредактировать, если на сайте изменился дизайн или что-то изменили.
2) без надобности перекомпилировать приложение в делфи
3) не нужно заморачиваться с ssl т.к. на андроид 6 не работает ssl да и таскать с собой либы на айос не вариант
offtop: не делайте через TWebBrowser, это глупо. какой смысл тогда от приложения? можно сделать закладку и вытащить её на раб. стол...
p.s. приложения написанные для личного использования, потому что некоторые компании не хотят создавать приложения для удобства пользователям
приходится самому решать
-
zairkz получил реакцию от Alex7wrt в Более быстрая альтернатива DrawBitmap
Попробуй движок Shadow Engine для Firemonkey, FPS впечатляет.
https://www.youtube.com/watch?v=w6lGasU61HQ
Gihub: https://github.com/dimsa/ShadowEngine
-
zairkz отреагировална Rusland в GPS
Если знать как определяются координаты (по ЖПС или по сотовым вышкам), то можно выбирать какие координаты использовать, а какие отбрасывать...
Узнать тип сенсора можно вот так
function getLocationSensorType(const ASensor : TLocationSensor) : String; begin with ASensor do case Sensor.SensorType of TLocationSensorType.GPS: result := 'GPS'; TLocationSensorType.Static: result := 'Static'; TLocationSensorType.Lookup: result := 'Lookup'; TLocationSensorType.Triangulation: result := 'Triangulation'; TLocationSensorType.Broadcast: result := 'Broadcast'; TLocationSensorType.DeadReckoning: result := 'DeadReckoning'; TLocationSensorType.Other: result := 'Other'; else result := 'Unknown'; end; end; procedure TFrmMain.LocationSensorLocationChanged(Sender: TObject; const [Ref] OldLocation, NewLocation: TLocationCoord2D); var Lat,Lon:String; lSensorType : String; begin Lat:=Format('%2.6f',[NewLocation.Latitude]); Lon:=Format('%2.6f',[NewLocation.Longitude]); lSensorType := GetLocationSensorType(LocationSensor); Memo1.Lines.Add('Lat='+Lat+' Lon='+Lon+' lSensorType='+lSensorType); end; однако он мне выдает lSensorType=GPS всегда, даже в случае отключения GPS на устройстве... не знаю почему
-
zairkz отреагировална Равиль Зарипов (ZuBy) в Потоки и процедуры
с использованием анонимных функции жить стало легче, как по мне.
я их использую не только в потоках, а как отложенное действие..
Приведу пример:
Есть форма в которой выбираются некие данные, допустим местоположение.
Эта форма вызывается из нескольких мест, т.е. результат выбора пользователя отправляется всегда в разные формы и в визуальные компоненты.
Как я делал это раньше:
Заводил некую глобальную переменную и по ней смотрел кто вызвал и куда отправить
myVar := 'form1'; // для примера if myVar = 'form1' then form1.lbLocation.Text := myLocation // (допустим тут хранится выбранные данные пользователя ) else и т.д. Как теперь:
Переопределяю метод формы Show с параметром aProc: TThreadProcedure
procedure Show(aProc: TThreadProcedure); overload; создаю переменку FProcedure:TThreadProcedure в privat секции
В методе Show присваиваю
FProcedure:= aProc; Show; // обычный метод формы При выборе пользователем местоположения, выполняется вот такой код
FProcedure;// наша отложенная процедура Close; // закрываем форму и задаю при показе формы процедуру которая должна выполнится при выборе местоположения
1 вариант
myLocationForm.Show(procedure begin Form1.lbLocation.Text := myLocation end); 2 вариант
myLocationForm.Show(procedure begin ShowMesage(myLocation); end); Некая свобода действий всегда хорошо, и довольно просто в реализации