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

Лидеры

  1. Brovin Yaroslav

    Brovin Yaroslav

    Администраторы


    • Баллы

      10

    • Постов

      2 124


  2. Равиль Зарипов (ZuBy)

    Равиль Зарипов (ZuBy)

    Модераторы


    • Баллы

      8

    • Постов

      2 517


  3. dnekrasov

    dnekrasov

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


    • Баллы

      6

    • Постов

      317


  4. AngryOwl

    AngryOwl

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


    • Баллы

      5

    • Постов

      394


Популярный контент

Показан контент с высокой репутацией 12.09.2016 во всех областях

  1. Пишу на Delphi с ноября 1995 года (Delphi 1 под Win 3.11). До этого использовал TurboPascal и TurboC (еще с 1989 года), но как только увидел Delphi - то сразу влюбился в эту среду разработки. В последствии приходилось писать на С++, С#, PowerBuilder, но всегда возвращался на Delphi и каждый раз вздыхал с облегчением Однако в 2009-м уже серьёзно начал склоняться в сторону Java, но с появлением FireMonkey в очередной раз с радостью вздохнул и Delphi стала опять моей основной IDE. Теперь RAD Studio удовлетворяет все мои потребности в плане программирования и больше ни на какой другой язык я даже не смотрю.
    6 баллов
  2. Компания Embarcadero начинает новую образовательную программу. Целью программы является предоставление бесплатного доступа к средствам разработки RAD Studio, Delphi, C++Builder для государственных школ и университетов. В рамках программы школа или университет может получить: до 15 лицензий RAD Studio Pro для использования в учебном классе с подпиской на обновления. Срок действия - один год. Тип лицензии - Concurrent. до 100 лицензий RAD Studio Pro для студентов/школьников для использования дома для выполнения домашних заданий. Тип лицензий - Workstation. Срок действия - 9 месяцев. Подписка на обновления также включена. Условия продления лицензий и подписки будут определены позднее. Лицензии в данной программе образовательные. Они позволяют использовать продукты только в целях обучения программированию. Любая разработка, в том числе коммерческая, некоммерческая, научная или выполнение внутренних разработок по автоматизации школы/университета с помощью этих лицензий запрещена. Для участия в программе образовательное учреждение должно заполнить форму, подготовить письмо об образовательном использовании и оправить ее в Embarcadero. Для участия в программе требуется прохождение минимальной квалификации и одобрения заявки со стороны компании Embracdero. Также для участия в программе образовательное учреждение обязуется разместить на своем сайте лого Образовательного партнера Embarcadero. Образец лого будет предоставлен позднее. Образовательный прайс-лист сохраняет свое действие. Если учебному заведению нужны постоянные лицензии, большее число лицензий или лицензии другого типа или на другую редакцию продукта, а также если заказчик не попадает в категории "государственная школа" или "государственный университет", то он может воспользоваться действующим прайс-листом. Вложения: EDU_Licence_EMBT_Programm 2016.doc Embarcadero Academic Program Release 8-24-16 RU.DOCX RU Academic License Order Form 070916 .xlsx
    5 баллов
  3. нужно делать вот так: 1) использовать компоненты Ярослава 2) анимацию запускаем до потока (в котором выполняются разного рода запросы), по завершению операции в !синхронизации! выключаем анимацию
    3 балла
  4. Установить PAServer на удаленной машине (ПК/планшет) и все. Как сделать тут и тут. И вообще много в сети примеров, в том числе и на этом форуме где-то было.
    3 балла
  5. При реализации OAuth 2.0 при помощи TWebBrowser главное отследить Redirect. В случае успешной авторизации в URL будет содержаться необходимый токен. Посмотрите в сторону использования вот этих форм (находятся в ..\source\data\rest): {$IFDEF MSWINDOWS} REST.Authenticator.OAuth.WebForm.Win {$ELSE} REST.Authenticator.OAuth.WebForm.FMX {$ENDIF} У них есть событие: property OnAfterRedirect: TOAuth2WebFormRedirectEvent read FOnAfterRedirect write FOnAfterRedirect; TOAuth2WebFormRedirectEvent = procedure(const AURL: string; var DoCloseWebView : boolean) of object; Вот обработчик: procedure TframeAutch.AfterRedirect(const AURL: string; var DoCloseWebView: boolean); var i:integer; Str: string; Params: TStringList; begin i := pos('#access_token=',AURL); if (i>0) then begin Str := AURL; Delete(Str,1,i); Params:=TStringList.Create; try Params.Delimiter:='&'; Params.DelimitedText := Str; token := Params.Values['access_token']; DoCloseWebView := True; finally Params.Free; end; end; end; **Код выше из XE7, сейчас мб что-то изменилось. Использовал такой подход для авторизации в vk, facebook, google+. ***Если нужно, могу сделать демку, но это только на выходных.
    3 балла
  6. ну вы же понимаете как работает анимация? 1) реорганизация положения контрола на родителе 2) реорганизация положения компонентов внутри контрола 3) сработает ресайз контрола и всех его дочерних компонентов, что вызовет содержащий в обработчиках код если высота контрола для которого применяется анимация равна 100 пикселям, все это повторится 100 раз
    3 балла
  7. Все просто. Отрисовка индикатора идёт в главном потоке. Вызывая Sleep в главном потоке, вы лочите главный поток на 5 секунд и как следствие всю отрисовку (Даже если вы выставите раньше Enabled=True). С UI компонентами можно работать только в главном потоке, поэтому все вызовы, работающие с компонентами из других потоков нужно завернуть в TThread.Synchronize.
    2 балла
  8. AngryOwl

    Проблема с анимацией

    Как один из вариантов решения подобных проблем - как можно меньше создавать/размещать на "двигающихся" элементах различных компонент. Чем меньше компонент - тем меньше "перерисовок". Отсюда - какие именно компоненты, тоже играет роль. Если это TLabel или TPanel, или другие несложные компоненты, то это "простые" элементы. Соответственно их перерисовка не сложна. Если это элементы посложнее, типа TListBox, в котором у всех его TListBoxItem определены свойства Text, Detail и, возможно, другие, типа вставлены еще и картинки и т.д., то это будет уже "весомый" элемент. Что еще важно - какой стиль вы применили к тому или иному компоненту. Если у вас простой TPanel имеет сложный стиль, переопределенный вами, то и его "прорисовка", соответственно, будет дольше происходить. Не забывайте о том, что можно сделать предварительную загрузку стиля. Это сильно уменьшит время первого отображения вашего элемента. Ну есть еще вариант... Он будет, относительно, "мудреней"... Все зависит от вашего желания) Пример, насколько я помню, можно посмотреть тут. Суть заключается в том, что можно сделать скрин вашего элемента (панели) и работать с ним (показывая его в момент анимации и отключая поле выполненной анимации). Подобных примеров достаточно, в том числе на сайте Embarcadero.
    2 балла
  9. Я использовал ранее только для себя. Я с его помощью получил часть данных в диссертацию и успешно защитился в 2007 году. Помню удивление моего диссертационного совета, когда узнали, что я сам написал эту программу. Совет был по иммунологии/клинической фармакологии. Но со временем мой основной программы продукт понравился многим. И с 2009 года я выпустил первую публичную версию еще на delphi7. С 2015 года полностью переписываю его на FMX, что добавило кроссплатформанности. Мой программный продукт является автоматизированным рабочим местом врача - клинического фармаколога. Самое главное, он абсолютно бесплатный и без рекламы. Пользователи - врачи со всей РФ. Поэтому в опросе наверху я не смог выбрать "как я использую студию".
    2 балла
  10. 1 балл
  11. В качестве новости, кому интересна данная тема Toshiba представляет подключаемый модуль BLE для Bluetooth Developer Studio
    1 балл
  12. фигасе XSuperObject, это классно и кода меньше только не совсем понятно что в этой строке происходит xItems := xResp.O['Response'].A['Items']; xItems это типа объект весь json xResp.о это респонсе потом идет сразу a итемс а как до count достучаться ? так что ли xItems := xResp.O['Response'].A['count']; и почему o и a вообще просто первый раз с такой штуко работаю) "response": { "count": 104, "items": [
    1 балл
  13. ай-яй-яй var JS : TJSONObject; JSAr : TJSONArray; s : string; i:integer; begin s := Memo2.Text; JS := TJSONObject.ParseJSONValue(s) as TJSONObject; if Assigned(JS) then begin JS := TJSONObject.ParseJSONValue(JS.GetValue('response').ToString) as TJSONObject; JSAr := TJSONObject.ParseJSONValue(JS.GetValue('items').ToString) as TJSONArray; Form2.Memo1.Lines.Clear; for i := 0 to JSAr.Count - 1 do begin JS := TJSONObject.ParseJSONValue(JSAr.Items[i].ToString) as TJSONObject; // внутри цикла нужно Memo2.Lines.Add('id: ' + JS.GetValue('id').Value); Memo2.Lines.Add('first_name: ' + JS.GetValue('first_name').Value); Memo2.Lines.Add('last_name: ' + JS.GetValue('last_name').Value); Memo2.Lines.Add('photo_100: ' + JS.GetValue('photo_100').Value); end; JS.Free; end;
    1 балл
  14. используйте XSuperObject, код будет такой procedure TForm4.Button1Click(Sender: TObject); // uses XSuperObject; var xResp, xObj: ISuperObject; xItems: ISuperArray; j: Integer; begin xResp := so(Memo1.Text); xItems := xResp.O['Response'].A['Items']; for j := 0 to xItems.Length - 1 do begin xObj := xItems.O[j]; with ListView1.Items.Add do begin Text := xObj.S['first_name'] + ' ' + xObj.S['last_name']; end; end; end;
    1 балл
  15. Martifan

    Проблема с анимацией

    Спасибо за ответы решенные нашлось, может кому пригодится TAnimator.AnimateIntWait(Rectangle1, 'Position.Y', -300); TAnimator.AnimateInt(Rectangle1, 'Position.Y', 144,1,TAnimationType.Out,TInterpolationType.Back);
    1 балл
  16. Pax Beach

    Андроид-фейсбук-вконтакте

    У меня OAuth работает на 6-м Android. Сообщения на стену летят, а вот фотографии на стену в три шага загружаются. Пытаюсь понять, как правильно отправить фото POST запросом в формате multipart/form-data.
    1 балл
  17. Это связано со старой ошибкой Google NDK, которая приводит к AV, при попытке взять константу, объявленную в базовом классе, через наследуемый. Поэтому все константы нужно брать из того, класса, где они объявлены первоначально, а не в наследуемых.
    1 балл
  18. Brovin Yaroslav

    С днем рождения!

    Большое всем спасибо за поздравление! Приятно слышать :-)
    1 балл
  19. Необходимо использовать TJContext.JavaClass.NOTIFICATION_SERVICE вместо TJActivity.JavaClass.NOTIFICATION_SERVICE Для получения менеджера лучше использовать контекст (данный код работает на версии 4.4 и 5+): function GetNotificationService: JNotificationManager; var NotificationServiceNative: JObject; begin NotificationServiceNative := TAndroidHelper.Context.getSystemService(TJContext.JavaClass.NOTIFICATION_SERVICE); Result := TJNotificationManager.Wrap((NotificationServiceNative as ILocalObject).GetObjectID); end;
    1 балл
  20. Для расчета расстояния мы работаем с событием onCalculateDistances. Параметр var NewDistance: Double. Выдается некое абстрактное дробное число, которое опытным путем можно перевести в метры. Сейчас разбираемся с BeaconFence, скачал из GetIt PM, есть желание визуализировать местонахождение маячков, по типу локатора. UPD: Расчет расстояния получаем по такой формуле: пруфлинк1, пруфлинк2, пруфлинк3, пруфлинк4. function TfmMain.GetDistance(const ATxPower, ARssi: Integer): Double; begin if ARssi = 0 then Result := -1; // Невозможно определить расстояние if (ARssi / ATxPower < 1) then Result := power(ARssi / ATxPower, 10) else Result := 0.89976 * power(ARssi / ATxPower, 7.7095) + 0.111; end;
    1 балл
  21. rareMax

    Андроид-фейсбук-вконтакте

    Намерения конечно это вариант, но: 1. Что если у пользователя не стоит клиент (для которого мы пишем намерение) для Вк/ фейсбука/ неба/ал...(ой чет увлекся). На плеймаркете полно клиентов. Придется собирать их полные названия и перебирать перед постингом. 2 С поставленной целью отлично справится вариант именно через АПИ: Пользователю нужно всего лишь один раз пройти авторизацию и дать права. Ну а после можем уже без его спроса сливать цру постить сообщения
    1 балл
  22. Brovin Yaroslav

    WEB установка RAD Studio

    Как владелец данного ресурса, и человек в отпуске (не на работе), с вами полностью согласен :-)
    1 балл
  23. sinuke

    Как Вы используете RAD Studio

    познакомился с Delphi еще будучи школьником в 2005 году (до того момента вполне неплохо для своего возраста, считаю, баловался Turbo Pascal 7 под DOS - даже штук пять игр написал простеньких). Некоторое время баловался и забросил. Вот буквально с месяц назад снова "достал из закрамов" свой багаж знаний и написал небольшое и не сильно сложное приложение на FMX (первый опыт). Так что пока только хобби, но что-то меня начинает снова затягивать... =)
    1 балл
  24. Vitaldj

    WEB установка RAD Studio

    Надо! В абракадабре, кто занимается этой частью, да простит меня Ярослав, лентяи. + Еще это связано с особенностями самой студии.
    1 балл
  25. ну тогда только так как-то, через костыли: procedure TForm1.WebBrowser1DidFinishLoad(ASender: TObject); begin cannotloadlinks := true; end; procedure TForm1.WebBrowser1DidStartLoad(ASender: TObject); begin if cannotloadlinks and (WebBrowser1.URL <> Edit1.Text) then begin WebBrowser1.Stop; WebBrowser1.URL := Edit1.Text; WebBrowser1.Navigate; end else Edit1.Text := WebBrowser1.URL; end;
    1 балл
  26. секретную, небось
    1 балл
  27. estra

    Как узнать мой IP адрес?

    Подойдет?
    1 балл
  28. ruslan

    [Android] Как узнать мой IP адрес?

    можно куда проще ip:= IdHttp.get('http://icanhazip.com/');
    1 балл
  29. Судя по разделу речь идет не о мобильных платформах. Тогда определить путь к исполняемому файлу приложения можно так: ParamStr( 0 ); Если обратиться к справке, там написано: Returns a specified parameter from the command line. ParamStr returns the parameter from the command line that corresponds to Index, or an empty string if Index is greater than ParamCount. For example, an Index value of 2 returns the second command-line parameter. Note: ParamStr(0) returns the path and file name of the executing program (for example, C:\TEST\MYPROG.EXE). Другими словами - параметром для функции ParamStr является индекс параметра командной строки. Нулевой индекс всегда возвращает полный путь к файлу. Если вы запустили исполняемый файл с параметром (например: c:\app.exe param), то: ParamStr(0) = 'c:\app.exe' ParamStr(1) = 'param' Узнать количество параметров командной строки можно с помощью функции ParamCount.
    1 балл
Эта таблица лидеров рассчитана в Москва/GMT+03:00
×
×
  • Создать...