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

Лидеры

  1. Andrey Efimov

    Andrey Efimov

    Модераторы


    • Баллы

      3

    • Постов

      842


  2. Labian

    Labian

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


    • Баллы

      3

    • Постов

      19


  3. zairkz

    zairkz

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


    • Баллы

      3

    • Постов

      135


  4. Brovin Yaroslav

    Brovin Yaroslav

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


    • Баллы

      2

    • Постов

      2 124


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

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

  1. Места проведения и даты: Москва (24.09.15), Алматы (2.10.15) Официальный сайт мероприятия: http://www.delphitour.ru Регистрация: http://forms.embarcadero.com/EM15Q3RURADStudio10LiveEvent Приглашаем вас принять участие в Мировом туре RAD Studio XE10 Seattle, который пройдет 24 сентября в Москве и 2 октября в Алматы. Мы расскажем о том как, с помощью новых возможностей RAD Studio 10 вы сможете: Разрабатывать приложения для Windows 10 и использовать новые компоненты VCL; Ускорить разработку мобильных приложений для Android и iOS (отлаживать iOS 64-bit, тестировать кода); Использовать новый компилятор C++ 11 CLANG; Эффективно использовать среду разработки и новые возможности GetIt; Создавать приложения для «Internet of Things» и Beacons; Применять новые возможности FIreDAC для расширенной поддержки JSON и BSON; Быстрее создавать приложения для работы с NoSQL СУБД MongoDB с помощью новых компонент, классов, реализующих MongoDB API, и нового драйвера FireDAC для MongoDB. Количество мест ограничено! Участие в мероприятии бесплатное. p.s. Решил подменить Ярослава. p.s.2. Кто придёт?)
    3 балла
  2. С ZuBy приедем с Астаны в Алмату, мы будем 2 октября , также предлагаю обмыть встречу в Алмате, кто за и кто будет? Будем пить и не мало, надеюсь Ярослав выпьет со своими форумчанами
    2 балла
  3. Всем привет! Возникла трудность при разработке приложения для iOS. Необходимо получить информацию о пользователе в VK методом "users.get" Использую REST для авторизации и запросов. При попытке выполнить запрос к https://api.vk.com/method/ возникает ошибка : First chance exception at $000178C8. Exception class EIdOSSLCouldNotLoadSSLLibrary with message 'Could not load SSL library.' Что нужно сделать чтоб работать с https на iOS? Delphi XE7 Update 1
    1 балл
  4. я свои типы не проталкиваю пока, но связка у меня норм работает...ниже мой код, может вам и сгодиться... альясы запроса у меня с шириной сразу, это очень удобно - к примеру пишите select name as ФИО_150 from...вот и вам и имя и ширина сразу ) важно подчеркивание ставить просто в конце... var vSp: МойДатасет; c: TLinkGridToDataSourceColumn; i,k: integer; begin LinkGrd.Columns.Clear; for i := 0 to vSp.FieldCount - 1 do begin c := LinkGrd.Columns.Add; c.MemberName := vSp.Fields[i].FullName; k := Pos('_',c.MemberName); if k > 0 then begin c.Width := copy(c.MemberName,k+1,length(c.MemberName)-k).ToInteger; c.Header := copy(c.MemberName,1,k-1); end else begin c.Width := 100; c.Header := c.MemberName; end; end; end;
    1 балл
  5. Aptem

    Атрибуты в Delphi

    Мы используем атрибуты для проверки через RTTI заполнено ли поле значением или нет: unit TopologyPoint; interface uses SysUtils, Classes, Rtti, Spring.Container, //BL TopologyPointInterface, //Modules WhatElementAttribute ; /// <summary> /// Class for point primitive /// </summary> type TTopologyPoint = Class ( TInterfacedObject, ITopologyPoint ) private {$REGION 'Fields'} /// <summary> /// Gets or sets X coordinate /// </summary> [TWhatElementAttribute ( TWhatElement.PublicField )] _x : Variant; /// <summary> /// Gets or sets Y coordinate /// </summary> [TWhatElementAttribute ( TWhatElement.PublicField )] _y : Variant; /// <summary> /// Gets or sets Z coordinate /// </summary> _z : Variant; {$ENDREGION} {$REGION 'Methods'} /// <summary> /// Gets X /// </summary> /// <returns>X</returns> function GetX () : Variant; /// <summary> /// Sets X /// </summary> /// <param name="value">X</param> procedure SetX ( const value : Variant ); /// <summary> /// Gets Y /// </summary> /// <returns>Y</returns> function GetY () : Variant; /// <summary> /// Sets Y /// </summary> /// <param name="value">y</param> procedure SetY ( const value : Variant ); /// <summary> /// Gets Z /// </summary> /// <returns>Z</returns> function GetZ () : Variant; /// <summary> /// Sets Z /// </summary> /// <param name="value">Z</param> procedure SetZ ( const value : Variant ); /// <summary> /// Gets empty flag of coordinates /// </summary> /// <returns>True if all coordinates are 0, false otherwise</returns> function GetEmptyFlag () : Boolean; {$ENDREGION} public {$REGION 'Properties'} /// <summary> /// X coordinate /// </summary> property X : Variant read GetX write SetX; /// <summary> /// Y coordinate /// </summary> property Y : Variant read GetY write SetY; /// <summary> /// Z coordinate /// </summary> property Z : Variant read GetZ write SetZ; /// <summary> /// Gets empty flag of coordinates /// </summary> property IsEmpty : Boolean read GetEmptyFlag; {$ENDREGION} end; implementation {TTopologyPoint} /// <summary> /// Gets empty flag of coordinates /// </summary> /// <returns>True if all coordinates are 0, false otherwise</returns> function TTopologyPoint.GetEmptyFlag () : Boolean; var context : TRttiContext; objectType : TRttiType; field : TRttiField; attribute : TCustomAttribute; found : Boolean; begin context := TRTTIContext.Create (); objectType := context.GetType ( Self.ClassInfo ); found := false; for field in objectType.GetFields do begin for attribute in field.GetAttributes do begin if attribute is TWhatElementAttribute then begin if ( attribute as TWhatElementAttribute ).Element = TWhatElement.PublicField then begin if field.FieldType.Handle = TypeInfo ( String ) then begin if field.GetValue ( self ).ToString <> '' then begin found := true; break; end; end; if field.FieldType.Handle = TypeInfo ( Integer ) then begin if field.GetValue ( self ).ToString <> '0' then begin found := true; break; end; end; if field.FieldType.Handle = TypeInfo ( Extended ) then begin if field.GetValue ( self ).ToString <> '0' then begin found := true; break; end; end; end; end; end; end; Result := not found; end; /// <summary> /// Gets X /// </summary> /// <returns>X</returns> function TTopologyPoint.GetX () : Variant; begin Result := _x; end; /// <summary> /// Sets X /// </summary> /// <param name="value">X</param> procedure TTopologyPoint.SetX ( const value : Variant ); begin _x := value; end; /// <summary> /// Gets Y /// </summary> /// <returns>Y</returns> function TTopologyPoint.GetY () : Variant; begin Result := _y; end; /// <summary> /// Sets Y /// </summary> /// <param name="value">y</param> procedure TTopologyPoint.SetY ( const value : Variant ); begin _y := value; end; /// <summary> /// Gets Z /// </summary> /// <returns>Z</returns> function TTopologyPoint.GetZ () : Variant; begin Result := _z; end; /// <summary> /// Sets Z /// </summary> /// <param name="value">Z</param> procedure TTopologyPoint.SetZ ( const value : Variant ); begin _z := value; end; initialization GlobalContainer.RegisterType<TTopologyPoint>.Implements<ITopologyPoint>; end. А вот сам класс TWhatElement: unit WhatElementAttribute; interface uses SysUtils, Classes; /// <summary> /// Attribute type enumeration /// </summary> type TWhatElement = ( PublicField, PublicProperty, PublicMethod ); /// <summary> /// Class for attribute types /// </summary> type TWhatElementAttribute = class ( TCustomAttribute ) private {$REGION 'Private fields'} /// <summary> /// Element type instance /// </summary> _element : TWhatElement; {$ENDREGION} public {$REGION 'Properties'} /// <summary> /// Property for element type instance /// </summary> property Element : TWhatElement read _element write _element; {$ENDREGION} {$REGION 'Constructors'} /// <summary> /// Creates TWhatElementAttribute instance /// </summary> constructor Create ( const element : TWhatElement ); {$ENDREGION} end; implementation /// <summary> /// Creates TWhatElementAttribute instance /// </summary> constructor TWhatElementAttribute.Create ( const element : TWhatElement ); begin _element := element; end; end. Смысл в том, что когда полей очень много, то писать проверку всех полей очень затруднительно. В случае использования атрибутов, достаточно указать атрибут поля и он будет включен в проверку автоматически.
    1 балл
  6. zairkz

    Кодировка под Android

    with TStringStream.Create do try LoadFromFile('d:\11.txt', TEncoding.UTF8); Edit1.Text := DataString; finally Free; end; всё что нужно было
    1 балл
  7. neo

    Кодировка под Android

    итак расскажу о своём опыте... вдруг кому-то будет полезно попробовал максимально простым способом записать/считать строку в файле procedure WriteToFile(s: String); var f: TMemoryStream; begin f:=TMemoryStream.Create; try f.Write(S[1], Length(s)); f.SaveToFile(TPath.GetDocumentsPath + PathDelim +'access.key'); finally f.Free; end; end; function GetTextFromFile: string; begin with TStringStream.Create do try LoadFromFile(TPath.GetDocumentsPath + PathDelim +'access.key'); Result:=DataString; finally Free; end; end; но тоже ничего не получилось... в XE8 под android нету ShortString и AnsiString поэтому скачал их отдельно и изменил на WriteToFile(s: ShortString); и всё заработало... не понятно только зачем их убрали? и как сдалать без них? вот ссылка на ShortString и AnsiString http://www.fmxexpress.com/use-ansistring-and-utf8string-in-delphi-xe5-firemonkey-on-android-and-ios/
    1 балл
  8. Я так подозреваю - переходить на RAD 10 SEATLE!!! https://www.embarcadero.com/ru/products/rad-studio#double
    1 балл
  9. procedure TForm1.InfoPanelEdit1KeyDown(Sender: TObject; var Key: Word; var KeyChar: Char; Shift: TShiftState); begin if KeyChar = '=' then begin KeyChar := '+'; end{if}; KeyChar := #0; end{procedure TForm1.InfoPanelEdit1KeyDown};
    1 балл
  10. Labian

    Нужна идея для дороги в 3D игре

    Сделай отдельные модели(Поворотов, перекрестков, разветвлений и т.д.), потом их соединяй
    1 балл
  11. Описание: Назначение: Получение основных событий приложения, путем подвешивания обработчиков на события компонента в дизайнере Поддерживаемые платформы: Windows, OSX, iOS, Android Демо проект: Samples\ApplicationEventsDemo\ApplicationEventsDemo.dproj Доступен с версии: XE7 Возможности: Все события перехватываю события во всем приложении. Получение результатов (интентов) из других приложений (OnActivityResult) Нотификация о выполнения Action в TAсtionList (OnActionExecute) Нотификация о обновлении Action в TAсtionList (OnActionUpdate) Перехват любого исключения в приложении (OnException) Простой приложения (OnIdle) Оповещение об изменении размера формы (OnFormSizeChanged) Оповещение о необходимости сохранить данные UI формы при изменении состояния приложения. Особенно актуально для мобильных платформ (OnSaveState) Изменение состояния приложения (OnStateChanged) Факт изменения стиля формы (OnStyleChanged) Изменение ориентации устройства (OnOrientationChanged) Все формы приложения на старте созданы (OnFormsCreated) Форма приложения разрушается (OnFormReleased) Изменение главной формы (OnMainFormChanged) Изменение заголовка главной формы (OnMainFormCaptionChanged) Уведомление об отображении формы (OnFormBeforeShown) Уведомления об активации и деактивации формы (OnFormActive, OnFormDeactivate) Уведомления о создании и разрушении формы (OnFormCreate, OnFormDestroy) Изменение скейла экрана (OnScaleChanged)
    1 балл
  12. Brovin Yaroslav

    Описание TfgActivityDialog

    Описание Назначение: Компонент предназначен для визуального отображения хода выполнения длительной операции. При этом пользовательский интерфейс блокируется диалоговым окном до окончания выполнения задачи. Используется, когда время выполнения задачи нельзя оценить никаким адекватным способом (Ожидание ответа от сервера при авторизации и тд.) Если время выполнения известно, то рекомендуется использовать TfgProgressDialog Поддерживаемые платформы: iOS, Android Демо проект: Samples\ProgressDialogDemo\ProgressDialogDemo.dproj Скриншоты Работа под iOS: Работа под Андроид (Выше, чем GingerBread 2.3): Работа под Андроид (GingerBread 2.3):
    1 балл
  13. Большое спасибо, все понял.
    1 балл
Эта таблица лидеров рассчитана в Москва/GMT+03:00
×
×
  • Создать...