-
Постов
385 -
Зарегистрирован
-
Посещение
-
Победитель дней
14
Весь контент xenon54
-
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; Ну вот только что сделал вот так и все ок. Или я задачу не так понял?
- 7 ответов
-
- ObjectInspector
- editor
-
(и ещё 2 )
C тегом:
-
http://pix.my/tRoaPGFv вот так у меня на IPhone
-
Вы бы сами нашли ответ на свой вопрос если бы запустили VirtualKeyboardDemo на устройстве
-
Большое спасибо за ответы. P.S.: И все таки терзает вопрос "зачем у конечного trackbar'a убрали доступ к объекту(свойству) Thumb". Хотя конечно это нужно спрашивать у разработчика компонента, так что вопрос практически риторический...
-
Тогда 2 вопроса: 1. Почему в итоге обработчик устанавливается 2. Как делать правильно?
-
У TrackBara может не оказаться THumb'a? Это что за трекбар такой О_о
-
Прикрепил. Только там через Дополнительный View (iPhone 4"). В мастере почему-то вообще игнорируется когда я выставляю height в 0. В проекте показывает что 0, а когда запускаю приложение на телефоне, то панель имеет дефолтную высоту. test.zip
-
IOS
-
Всем привет! У 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 } Так пробовали?
-
Вот кстати, нашел: https://forums.embarcadero.com/thread.jspa?threadID=109341
-
Так попробуй TIdStack::IncUsage();
-
Данный метод зависит от стороннего ресурса - это очень плохо.
-
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 и т.д.
-
t := TImage.Create(Form1); Этого вам для начала будет достаточно? "[Weak] FOwner: TComponent;" такое объявление делает так что RefCount не увеличивается от этой ссылки.