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

xenon54

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

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

  • Посещение

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

    14

Весь контент xenon54

  1. TListStyle = (Vertical, Horizontal); TTest = class(TComponent) private fq : TListStyle; fg: TListStyle; function get_fg : TListStyle; procedure set_fg(aa : TListStyle); { Private declarations } protected { Protected declarations } public { Public declarations } published property q : TListStyle read get_fg write set_fg; { Published declarations } end; Ну вот только что сделал вот так и все ок. Или я задачу не так понял?
  2. Как я понял, в фоновом режиме на андроиде работают сервисы и в RadStudio его не написать, а вот реализовать фоновую активность приложения для IOS'a вполне можно. Возможно я ошибаюсь насчет андроида.
  3. Вы бы сами нашли ответ на свой вопрос если бы запустили VirtualKeyboardDemo на устройстве
  4. Ничего что сама IDE имеет совсем непривлекательную цену? Встроенный магазин в IDE лично для Бровина, это из области фантастики, если конечно он не соучредитель А встроенный магазин от Embarcadero это рукалицо, ибо за что тогда вообще платить за новые версии...
  5. Для таких целей просто нужно использовать TListView. ListBox будет тормозить, он не создан для больших списков. Для вас отлично подойдет MultiDetailView. Он в Samples лежит.
  6. Большое спасибо за ответы. P.S.: И все таки терзает вопрос "зачем у конечного trackbar'a убрали доступ к объекту(свойству) Thumb". Хотя конечно это нужно спрашивать у разработчика компонента, так что вопрос практически риторический...
  7. Тогда 2 вопроса: 1. Почему в итоге обработчик устанавливается 2. Как делать правильно?
  8. У TrackBara может не оказаться THumb'a? Это что за трекбар такой О_о
  9. Прикрепил. Только там через Дополнительный View (iPhone 4"). В мастере почему-то вообще игнорируется когда я выставляю height в 0. В проекте показывает что 0, а когда запускаю приложение на телефоне, то панель имеет дефолтную высоту. test.zip
  10. Всем привет! У 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, то объект внутри нее вообще не создан =\ Попахивает вообще какими-то чудесами...
  11. Ок, если нужно уничтожение из самого окна, то чем не устраивает self.release? Или я вопроса просто не понимаю...
  12. Тогда же когда ты хотел вызывать Close;
  13. Зачем модальные. Просто пишешь: MyForm := TMyform.create(nil); Myform.Show;
  14. Думаю лучшее удаление динамически созданной формы будет Myform.DisposeOf; myForm := nil;
  15. Notification server это "прокладка" между вашим сервером и устройством. Этот сервер сам знает как послать сообщение на устройство, вам не нужно заботиться об IP и всем вытекающем отсюда. Вы наверняка видели как всякие Viber и Whatsup присылают сообщения когда приложение свернуто. Появляются всплывающие сообщения. Так вот эти сообщения приходят с Notification Server'a. Почитайте тут и тут. Ну и вообще просто погуглите "Remote Push Notification Android Delphi".
  16. Это плохое взаимодействие. 1. Если приложение выгружено, связи не будет. 2. Оператор сотовой связи может вам 100 раз IP поменять пока вы будете слать что-то друг другу. В своем проекте под IOS я использую Apple push notification, для андроида тоже есть Notification. Суть в том, что ваше приложение на девайсе загружается и тутже отправляет запрос на notification сервер на регистрацию. Тот выдает обратно в ответ Device Token (некий уникальный идентификатор устройства). Вы этот Device Token посылаете на сервер и запоминаете его, чтобы потом знать кому отправлять сообщение. Все. С этого момента ваше обращение к устройству происходит через Notification server. Вы посылаете запрос с сервера на Notification server с Device Token устройства. А сервер доставляет это сообщение на устройство. Это сообщение может иметь текст, может не иметь, может быть со звуком и без, может быть вообще невидимым для пользователя, но при получении такого сообщение, устройство запускает в фоновом режиме приложение и выполняет то что вы там пропишете в обработчике. А если запущено приложение, то тут же выполняет то что вам нужно. Возможно под андроид есть свои нюансы, но принцип думаю такойже.
  17. Значит беда, а метод анонсирован как кроссплатформенный. На IOS и Windows работает.
  18. Там же список возвращается? в нем только 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 } Так пробовали?
  19. Вот кстати, нашел: https://forums.embarcadero.com/thread.jspa?threadID=109341
  20. Данный метод зависит от стороннего ресурса - это очень плохо.
  21. 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 и т.д.
  22. t := TImage.Create(Form1); Этого вам для начала будет достаточно? "[Weak] FOwner: TComponent;" такое объявление делает так что RefCount не увеличивается от этой ссылки.
×
×
  • Создать...