-
Постов
385 -
Зарегистрирован
-
Посещение
-
Победитель дней
14
Сообщения, опубликованные xenon54
-
-
компонент который позволяет или метод который позволяет работать приложению фоновом режиме
и компонент который позволяет потоками получить звук который записываешь с помощью микрофона, и их воспроизвести
заранее спасибо
Как я понял, в фоновом режиме на андроиде работают сервисы и в RadStudio его не написать, а вот реализовать фоновую активность приложения для IOS'a вполне можно. Возможно я ошибаюсь насчет андроида.
-
http://pix.my/tRoaPGFv вот так у меня на IPhone
-
Вы бы сами нашли ответ на свой вопрос если бы запустили VirtualKeyboardDemo на устройстве
-
Ничего что сама IDE имеет совсем непривлекательную цену? Встроенный магазин в IDE лично для Бровина, это из области фантастики, если конечно он не соучредитель А встроенный магазин от Embarcadero это рукалицо, ибо за что тогда вообще платить за новые версии...
-
Для таких целей просто нужно использовать TListView. ListBox будет тормозить, он не создан для больших списков.
Для вас отлично подойдет MultiDetailView. Он в Samples лежит.
-
Большое спасибо за ответы.
P.S.: И все таки терзает вопрос "зачем у конечного trackbar'a убрали доступ к объекту(свойству) Thumb". Хотя конечно это нужно спрашивать у разработчика компонента, так что вопрос практически риторический...
-
Тогда 2 вопроса:
1. Почему в итоге обработчик устанавливается
2. Как делать правильно?
-
У TrackBara может не оказаться THumb'a?
Это что за трекбар такой О_о
-
Прикрепил. Только там через Дополнительный View (iPhone 4"). В мастере почему-то вообще игнорируется когда я выставляю height в 0. В проекте показывает что 0, а когда запускаю приложение на телефоне, то панель имеет дефолтную высоту.
-
-
Всем привет!
У TrackBar есть внутренний контрол TThumb. Доступ к нему через свойство исчезает при переходе из TCustomTrack в TTrackBar. Добавил это свойство к TTrackBar. Получил доступ к нему все ок.
Вообще доступ к нему мне нужен для двух вещей:
1. Узнавать стоит ли сейчас палец на нем ( IsPressed )
2. Поставить обработчик события OnMouseUp;
Так вот с первым все хорошо, а вот со вторым получаю AV. Причем AV возникает именно тогда когда устанавливается обработчик событий.
TrackBar1.Thumb.OnMouseUp := form1.ThumbMouseUp;
Глушу это дело через Except и все отлично работает. Т.е. вылетает AV, но при этом обработчик устанавливается.
Собственно вопрос: WTF!?
С чего вдруг AV? И почему тогда отрабатывает строка по установке обработчика события.
TrackBar лежит на панели у которой в момент установки обработчика высота равно нулю.
Случайно наткнулся на такую вещь: Если сделать высоту у этой панели хотя бы "0,001", то AV не вылетает О_о.
Такое ощущение что если у этой панели высота равна 0, то объект внутри нее вообще не создан =\
Попахивает вообще какими-то чудесами...
-
Ок, если нужно уничтожение из самого окна, то чем не устраивает self.release?
Или я вопроса просто не понимаю...
-
Тогда же когда ты хотел вызывать Close;
-
Зачем модальные.
Просто пишешь:
MyForm := TMyform.create(nil); Myform.Show;
-
Думаю лучшее удаление динамически созданной формы будет
Myform.DisposeOf; myForm := nil;
-
Notification server это "прокладка" между вашим сервером и устройством. Этот сервер сам знает как послать сообщение на устройство, вам не нужно заботиться об IP и всем вытекающем отсюда. Вы наверняка видели как всякие Viber и Whatsup присылают сообщения когда приложение свернуто. Появляются всплывающие сообщения. Так вот эти сообщения приходят с Notification Server'a.
Почитайте тут и тут. Ну и вообще просто погуглите "Remote Push Notification Android Delphi".
-
Это плохое взаимодействие.
1. Если приложение выгружено, связи не будет.
2. Оператор сотовой связи может вам 100 раз IP поменять пока вы будете слать что-то друг другу.
В своем проекте под IOS я использую Apple push notification, для андроида тоже есть Notification. Суть в том, что ваше приложение на девайсе загружается и тутже отправляет запрос на notification сервер на регистрацию. Тот выдает обратно в ответ Device Token (некий уникальный идентификатор устройства). Вы этот Device Token посылаете на сервер и запоминаете его, чтобы потом знать кому отправлять сообщение. Все. С этого момента ваше обращение к устройству происходит через Notification server. Вы посылаете запрос с сервера на Notification server с Device Token устройства. А сервер доставляет это сообщение на устройство. Это сообщение может иметь текст, может не иметь, может быть со звуком и без, может быть вообще невидимым для пользователя, но при получении такого сообщение, устройство запускает в фоновом режиме приложение и выполняет то что вы там пропишете в обработчике. А если запущено приложение, то тут же выполняет то что вам нужно. Возможно под андроид есть свои нюансы, но принцип думаю такойже.
-
Значит беда, а метод анонсирован как кроссплатформенный. На IOS и Windows работает.
-
Там же список возвращается? в нем только 127.0.0.1? Других значений нет?
#include <linux/if.h> #include <linux/if_arp.h> #include <arpa/inet.h> #include <sys/socket.h> String strGetSocketAddressProperty(String strInterface, int iProperty) { int fd(0); int rv; struct ifreq ifr; char buffer[128]; String strProperty = "" , IPAddr ; try { fd = socket(AF_INET, SOCK_DGRAM, 0); } catch (...) { ShowMessage("Error here"); } ifr.ifr_addr.sa_family = AF_INET; memset(ifr.ifr_name,0,IFNAMSIZ); memcpy(ifr.ifr_name,AnsiString(strInterface).c_str(),AnsiString(strInterface).Length()); rv = ioctl(fd, iProperty, &ifr); if (rv == 0) { /* display result */ IPAddr = inet_ntoa(((struct sockaddr_in *)&ifr.ifr_addr)->sin_addr) ; strProperty = IPAddr ;//buffer; strProperty = Trim(strProperty); } else { strProperty = (IntToStr(rv)); //DEBUG_MESSAGE(std::string("rv: ") + itoa(rv) ); } close(fd); return strProperty; } void __fastcall TForm1::btn1Click(TObject *Sender) { mmo1->Lines->Clear(); mmo1->Lines->Add( strGetSocketAddressProperty(L"wlan0",SIOCGIFADDR) );//ip address mmo1->Lines->Add( strGetSocketAddressProperty(L"wlan0",SIOCGIFNETMASK) );//net mask mmo1->Lines->Add( strGetSocketAddressProperty(L"wlan0",SIOCGIFBRDADDR) );//broadcast address }
Так пробовали?
-
-
Так попробуй
TIdStack::IncUsage();
-
можно куда проще
ip:= IdHttp.get('http://icanhazip.com/');
Данный метод зависит от стороннего ресурса - это очень плохо.
-
uses IdCustomTransparentProxy, IdSocks, IdIPWatch, IdStack, IdTCPConnection, IdTCPClient, IdHTTP; function TForm1.localip : string; var AAddresses: TStrings; begin AAddresses := TStringList.Create; try TIdStack.IncUsage; try GStack.AddLocalAddressesToList(AAddresses); finally TIdStack.DecUsage; end; if AAddresses.Count > 0 then begin if TOSVersion.Platform = pfiOS then Result := AAddresses.Strings[AAddresses.Count-1]; //AAddresses if TOSVersion.Platform = pfWindows then Result := AAddresses.Strings[0]; end; finally AAddresses.Free; end; end;
В "AAddresses" вы получите все локальные IP. Это будет и IP от wifi и ip от LTE\GPRS и т.д.
-
Кто-нибудь может объяснить почему RefCount такой большой? Ведь по идее в самом начале на объект ссылается только сама переменная "T" и плюс ссылка в списке "components" у form1.
t := TImage.Create(Form1);
Этого вам для начала будет достаточно?
"[Weak] FOwner: TComponent;" такое объявление делает так что RefCount не увеличивается от этой ссылки.
Свой editor в ObjectInspector'е
в Разработка компонентов
Опубликовано
Ну вот только что сделал вот так и все ок. Или я задачу не так понял?