Перейти к содержанию
  • Регистрация

Лидеры


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

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

  1. 4 балла
    krapotkin

    Фреймворк для стандартного ListView

    еще один пример раскладки из реального проекта { "Columns":[], "Variables": [ {"Y_UNIT":"12"}, {"GAP":"8"}, {"ITEM_H":"2*GAP+5*Y_UNIT"}, {"IMG_H":"76"}, {"IMG_W":"76"}, {"STOCK_SIZE":"48"}, {"PRICE_COLW":"53"} ], "Objects": [ {"Name":"ID","Kind":"data"}, , {"Name":"img","Kind":"image", "Place":{"X":"0","Y":"0","W":"IMG_W","H":"IMG_H"}, } , {"Name":"Text","Kind":"text","TextHAlign":"leading","TextVAlign":"leading", "Place":{"X":"img.right","Y":"GAP","W":"itemwidth - IMG_W - GAP - 2*PRICE_COLW - GAP","H":"52"}, "WordWrap":true, "Color":"black", "Font":{"Size":12} } , {"Name":"earlier","Kind":"text","TextHAlign":"leading","TextVAlign":"leading", "Place":{"X":"text.left","Y":"ITEM_H-2*GAP+2","W":"itemwidth - 2*PRICE_COLW","H":"Y_UNIT"}, "WordWrap":false, "Color":"green", "Font":{"Size":10} } , {"Name":"price1","Kind":"text","TextHAlign":"trailing","TextVAlign":"trailing", "Place":{"X":"itemwidth-GAP-PRICE_COLW-W","Y":"GAP+2*Y_UNIT","W":"auto","H":"Y_UNIT*1.5", "priority":"WXYH"}, "WordWrap":false, "Color":"black", "Font":{"Size":15} } , {"Name":"imgstrike","Kind":"image", "Place":{"X":"price1.x-5","Y":"price1.y","W":"price1.w+8","H":"price1.h"}, } , {"Name":"price2","Kind":"text","TextHAlign":"trailing","TextVAlign":"trailing", "Place":{"X":"price1.right-W","Y":"ITEM_H-GAP-Y_UNIT*1.5","W":"auto","H":"Y_UNIT*1.5", "priority":"WXYH"}, "WordWrap":false, "Color":"black", "Font":{"Size":15, "style":"bold"} } , {"Name":"qty","Kind":"text","TextHAlign":"trailing","TextVAlign":"center", "Place":{"X":"itemwidth-PRICE_COLW-GAP","Y":"GAP","W":"PRICE_COLW","H":"2*Y_UNIT"}, "WordWrap":false, "Color":"black", "Font":{"Size":27, "style":"bold"} } , {"Name":"imgstock","Kind":"image", "Place":{"X":"itemwidth-STOCK_SIZE-3","Y":"ITEM_H-STOCK_SIZE-4","W":"STOCK_SIZE","H":"STOCK_SIZE"}, } ], "ItemHeight":"ITEM_H", "ItemSpaces": {"X":"0","Y":"0","W":"0","H":""}, "SideSpace":"0" }
  2. 3 балла
    krapotkin

    StatusBar Color

    Запустил код по ссылке на delphi 10.3.2, android 8.1 Xiaomi redmi 5 plus В моем случае выяснилось, что поведение зависит от состояния Mainform.Borderstyle Если none - ведет себя как Fullscreen, статусбар прячется Дополнено! Чистый проект на 10.3.2 сам добавляет в Deployment файл styles-v21.xml Его нужно отключить! иначе будет только вариант Fullscreen (он же Borderstyle=none) когда статусбар скрыт и выезжает полупрозрачный, либо обычный неокрашенный статаусбар. Если без него впоследствии что-то не взлетит, можно так же как с основным styles.xml добавить в deployment свой, модифицированный, со строками <item name="android:windowTranslucentStatus">true</item> <item name="android:windowTranslucentNavigation">false</item> У меня после отключения окрашивание статусбара работает корректно.
  3. 3 балла
    Нужно в настройках проекта изменить имя пакета. В 10.3 это в Project -> Options -> Application -> Version Info -> Key: ProgramID
  4. 3 балла
    Короче уточнил: бета-версия 10.3.3 будет называться Sugarloaf, она выйдет до конца этого месяца, там будет 64-битный компилятор под Андроид, но так и не понял по поводу - дадут ли "коммунякам" или нет так в ближайшие 7 дней ждем Sugarloaf
  5. 2 балла
    dnekrasov

    ADO components

    Это надо делать после присвоения LoginPrompt и ConnectionString. IsLinkedTo только проверяет привязку DataSource к DataSet. В Вашем случае - бесполезная строчка (мало того - ещё и вредная). Насчёт связи StringGrid и DataSource - в FMX, насколько я знаю, кроме LiveBindings стандартных вариантов нет (ну кроме как ручками отрисовывать ячейки).
  6. 2 балла
    В соседней ветке писали про обновление 32 битных приложений, и что нужно обращаться в тех.поддержку гугла - типа пояснить ситуацию и тогда разрешат обновлять 32-битные приложения. Возможно эта договоренность Google - Embarcadero касается и вновь публикуемых приложений. Лично я буду пробовать общаться с ними через пару месяцев, если конечно обновление студии не прилетит раньше.
  7. 2 балла
    Ronalds Rizakovs

    Ping на Android или на iOS

    У меня была похожая проблема - проверить доступен ли хост. Как я понял TIdICMPClient работает лиш при наличии root. Даже под win надо "as administrator" запускать. Были варианты вызвать системную команду PING и анализировать результат, но сложно. Проблему обошол с помощью IdTCPClient. function CheckInternet: boolean; begin result:=false; try IdTCPClient1.ReadTimeout:=200; IdTCPClient1.ConnectTimeout:=200; IdTCPClient1.Port:=Port; IdTCPClient1.Host:=Server; IdTCPClient1.Connect; IdTCPClient1.Disconnect; result:=true; except result:=false; end; end; Если надо время отклика проверит - не подойдот. А для доступности по моему ок!
  8. 2 балла
    Mohamed BEN AMMAR

    Воспроизведение видео на Android.

    at this time you can use the ALCinoe Library it can provide you all you need take a look at my sample here. you should see this tuto here
  9. 2 балла
    krapotkin

    Фреймворк для стандартного ListView

    Обновил репозиторий. Добавил метод AfterLayout для условного форматирования элементов после раскладки по итему LV https://bitbucket.org/vkrapotkin/vklistview/src/master/
  10. 2 балла
    Шамсуддин

    Замена текста в Word и OpenDocument

    Доброго времени суток! Сделал простенький компонент для замены текста в документах Word (docx) и OpenDocument (odt). Особенностью данного компонента является отсутствие необходимости какого-либо дополнительного ПО типа MS Office или OpenOffice и использует только встроенные библиотеки. В связи с чем он может работать на различных платформах (но ещё не проверял ). DocumentProcessing.zip Как использовать: uses DocumentProcessing; ... procedure TForm2.Button1Click(Sender: TObject); var Document: TDocumentProcessor; begin Document:= TDocumentProcessor.Create(Self); Document.FilePath:= 'D:\test.docx'; Document.Open(TDocumentKind.dkDocx); Document.ReplaceText('Familiya', 'Cat'); Document.Save; Document.Open('D:\test.odt', TDocumentKind.dkOdt); Document.ReplaceText('Familiya', 'Cat', [rfReplaceAll]); Document.Save; end; Немного о принципе работы: Проблемы:
  11. 2 балла
    Я в своем сообщении указал способ решения: https://quality.embarcadero.com/browse/RSP-25523 Там Dave Nottage написал причину и способ исправления: Прикладываю архив с исправленным FMX.Platform.iOS.pas - положите в папку с проектом и все заработает нормально (я проверил). P.S. Несчастный FMX.Platform.iOS.pas изуродовали в Рио бесчеловечно )) Какой то индус прошелся по нему в наркотическом угаре. FMX.Platform.iOS.pas.7z
  12. 2 балла
    Да, легко удалось воспроизвести проблему - набрал yandex.ru, нажал Go (открылась страница), на странице нажал ссылку "Картинки" - появилась клавиатура, которая не получает фокуса, не реагирует на тыканье. Среда 10.3.2, iPhone SE, iOS 12.3.1 Возможно проблема перекликается с https://quality.embarcadero.com/browse/RSP-25523
  13. 1 балл
    Rusland

    Invalid parameter при подключении таблицы

    Кажется нашел я причину проблем с моим DataSnap проектом - при создании я поставил галочку HTTPS. Сейчас пересоздал проект заново без HTTPS, все заработало. PS. Возможно просто нужно найти правильные ssleay32.dll и libeay32.dll
  14. 1 балл
    slav_z

    Работа с атрибутами текста

    Как сделать текст с подобными атрибутами? Очень просто! (Цвет текста не работает в XE8) Вот весь код: unit Unit1; interface uses System.SysUtils, System.Types, System.UITypes, System.UIConsts, System.Classes, System.Variants, FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.Controls.Presentation, FMX.StdCtrls, FMX.Objects, FMX.TextLayout; type TForm1 = class(TForm) Button1: TButton; Text1: TText; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.fmx} type TTextAccess = class(TText); procedure ClearTextAttribute(Text: TText); begin TTextAccess(Text).Layout.ClearAttributes; end; procedure AddTextAttribute(Text: TText; Pos,Length: Integer; FontStyles: TFontStyles; FontColor: TAlphaColor); var Font: TFont; begin Font:=TFont.Create; Font.Assign(Text.Font); Font.Style:=FontStyles; TTextAccess(Text).Layout.AddAttribute( TTextRange.Create(Pos,Length), TTextAttribute.Create(Font,FontColor)); end; procedure TForm1.Button1Click(Sender: TObject); begin AddTextAttribute(Text1,10,17,[TFontStyle.fsBold],claRed); AddTextAttribute(Text1,34,8,[TFontStyle.fsUnderline],claBlue); AddTextAttribute(Text1,47,8,[TFontStyle.fsStrikeOut],claGreen); Text1.Repaint; end; end.
  15. 1 балл
    Anatoliy

    Умный дом

    В телеграмм канале обсуждалось создание умного дома. Пишу сюда. Телеграмм канал не удобен. Со временем там каша ничего не найти. Он лучше для флуда, а форум самое то. По теме - в студии для управления домом все есть из коробки. Сами биконы стоят копейки. Видио показывает управление. Ну и дополнительные полезные ссылки на yutube:
  16. 1 балл
    Евгений Корепов

    Умный дом

    К сожалению тема никакого отношения в Умному дому не имеет. В телеграмме я поднимал тему о реальных технологиях умного дома - датчиках (задымление, протечка, газ, открытие двери/окна, движение), протоколы и технологии соединения всего этого, к примеру ZigBee, ну и работа со всем этим хозяйством. Тема прикольная и интересная. Написал на delphi класс работы в ZigBee шлюзом, нормально опрашиваю все датчики, но запись реализовать не удалось из за отсутствия в delphi библиотек шифрования "из коробки". Наработок куча, но все они времен Delph 7 - абсолютно все используют короткие ANSI строки, и в современных версиях среды результат шифрования/дешифровки может быть какой угодно, но не правильный. Пока все что нужно по быстрому написал на php, там хоть с шифрованием порядок, не надо изобретать велосипед или адаптировать код двадцатилетней давности. Так что теперь могу включать/выключать свет с помощью умной розетки, включать светильник на основном хабе, выбирая яркость и палитру, но на php ))))
  17. 1 балл
    krapotkin

    Фреймворк для стандартного ListView

    Всем привет! После долгого творческого запоя я запилил альфу либы, которая позволяет юзать обычный, не-генномодифицированный ListView. Данные подаются в виде модели данных, описание раскладки итема лежит в JSON. Для работы пишется примитивный наследник класса-адаптера, который биндит данные модели на элементы из JSON. Я решил, что руками делать это дешевле чем через RTTI { TMyAdapter } procedure TMyAdapter.SetupDrawableContent(const ADrawable: TListItemDrawable; const AData: TMyData); begin if SameText( ADrawable.Name, 'text') then begin (ADrawable as TListItemText).Text := AData.Text; end else if SameText( ADrawable.Name, 'detail') then begin (ADrawable as TListItemText).Text := AData.Detail; end else if SameText( ADrawable.Name, 'balance') then begin (ADrawable as TListItemText).Text := FormatFloat('0.00', AData.Balance); end else if SameText( ADrawable.Name, 'reserved') then begin (ADrawable as TListItemText).Text := FormatFloat('0.00', AData.Reserved); end end; Главная хитрость и отличие от стандартного DynamicAppearance+LiveBinding - переменная высота итемов ListView и использование арифметики в описании раскладки. Можно указать Detail.Y = Text.Bottom + 5, ItemHeight = Detail.Bottom + 10, Detail.W = ItemWidth/2 - X {"Kind":"rect","Name":"BonusRect","Value":"", "Place":{"X":"itemwidth*3/4","Y":"Text.Y","W":"ItemWidth/4-5","H":"50"}, "BorderColor":"#FF005500", "Color":"lime", "LineWidth":3}, {"TextHAlign":2,"TextVAlign":1,"Kind":"text","Name":"Balance","Value":"", "Place":{"X":"BonusRect.x+5","Y":"Text.Y","W":"BonusRect.w-10","H":"50"}, "WordWrap":true, "Color" :"Black", "Font":{"Size":18,"Style":""}} ], "ItemHeight":"detail.bottom+10", Это дает довольно гибкую систему. Не на все случаи жизни, но все, что нужно, можно после автоматической раскладки дополнительно приписать в OnUpdateObjects Код для работы примерно такой procedure TForm1.FormCreate(Sender: TObject); begin data:= TMyDataList.CreateFromFile(ExePath()+'data.json'); // загрузка в модель данных Adapter := TMyAdapter.Create(lvWallets, data.Items, ExePath()+'pattern.json'); // создание адаптера и загрузка шаблона Adapter.Pattern.SetupListView(lvWallets); // задать отступы и разную мелочь Adapter.ResetView(); // здесь в цикле из модели данных создается нужное количество итемов ListView end; procedure TForm1.lvWalletsUpdatingObjects(const Sender: TObject; const AItem: TListViewItem; var AHandled: Boolean); begin Adapter.SetupContent(AItem); // загрузить текст, картинки и другое содержимое в элементы итема Adapter.Pattern.DoLayout(AItem); // поправить раскладку в соответствии с содержимым элементов итема end; Для использования кроме стандартных - текст, картинка, кнопка - создано несколько дополнительных элементов итема - прямоугольник, круг, уголок, линия. Отличие от ModernLV - , 1) все происходит без правки системных файлов 2) пока нет колонок и других особых изысков. На результат работы смотреть тут. Исходники пока не причесаны, будут чуть позже ListViewFramework.7z
  18. 1 балл
    Во-первых, откройте для себя фреймы )) Во-вторых убивать себя из обработчика себя нельзя, да и не нужно (см п.1) В качестве костыля. 1. Создавайте все с Owner=NIL2. 2. TTask.Run(procedure begin tthread.synchronize(nil, procedure begin KILLTHEMALL(); end); end)
  19. 1 балл
    Короче нашел способ, чтобы добавлялись Item при LiveBinding! Потратил кучу времени. Вот так: FDQuery1.FetchNext; LinkFillControlToField1.Active := False; LinkFillControlToField1.Active := true; Но есть тогда другая проблема - ListView прокручивается на самый верх при добавлении новых строк. Решил это вот так: procedure TForm1.ListView1ScrollViewChange(Sender: TObject); var ItemHeight, p: single; begin p := ListView1.ScrollViewPos; ItemHeight := ListView1.ItemAppearance.ItemHeight; if ListView1.ScrollViewPos + ListView1.Height > ItemHeight * 0.8 * ListView1.ItemCount then begin FDQuery1.FetchNext; LinkFillControlToField1.Active := False; LinkFillControlToField1.Active := true; ListView1.ScrollViewPos := p; end; end; В принципе работает, надо только добавить условия, что все данные показаны и т.п., но наверное не буду я всё равно делать на биндингах. Хочу всё переделать назад на ручное добавление элементов. Подумаю как лучше будет работать.
  20. 1 балл
    Доброго времени суток, коллеги. Столкнулся с проблемой неотрисовки итемов в ListView при выставлении свойства TFDQuery.FetchOptions.Mode := fmManual. Данные с TListView (и TGrid) связаны посредством LiveBindings. На скрине видно, что данные в принципе загружены в датасет и даже отображаются в TGrid, но не в Listview. Может кто сталкивался? Варианты пробовал разные, бьюсь 3-й день, но увы( До решения в общем додумался (но вышеуказанный способ не выходит из головы))): отлавливать событие, что список прокручен до упора и увеличивать свойство FetchOptions.RecsMax (при FetchOptions.Mode := скажем fmAll). Для чего нужно: открывать без задержек таблицы с большим количеством записей, не загружая их в датасет сразу все. fmOnDemand необходимого эффекта не дал - все равно загружаются все записи сразу. Хотя здесь (http://docwiki.embarcadero.com/Libraries/XE8/en/FireDAC.Stan.Option.TFDFetchOptions.Mode) о свойстве с этим значением написано обратное. PS. Delphi XE7 (XE8), БД SQLite. Проект в прицепе. 33333.zip
  21. 1 балл
    С ListView - нет. Уже и не помню зачем мне это было нужно) Решил задачу другим способом.
  22. 1 балл
    Что? Опять? Сериал. Новый сезон. "Убийство кнопок" :))
  23. 1 балл
    вот тебе методы обнаружения ложных gps с исходниками :https://github.com/smarques84/MockLocationDetector
  24. 1 балл
    qz5

    Модерация приложения в google play

    Сейчас вроде три дня обещают модерировать
  25. 1 балл
    Martifan

    FireDac компоненты

    var DriverID, Server, SetDatabase, UserName, Password: string; Begin .... FDConnection1.Close; FDConnection1.Params.Clear; FDConnection1.Params.Add('DriverID=' + DriverID); FDConnection1.Params.Add('SERVER=' + Server); FDConnection1.Params.Add('Database=' + SetDatabase); FDConnection1.Params.Add('User_Name=' + UserName); FDConnection1.Params.Add('Password=' + Password); FDConnection1.Open; End;
  26. 1 балл
    Дмитрий Ш.

    Умный дом

    биконы google убил. точнее он убил технологию Nearby. так что красивая сказка о получении скидок о прочего маркетингового мусора - умерла.
  27. 1 балл
    #WAMACO

    Контролировать приход SMS

    нет конечно! еще не хватало, чтобы вирусню разную писали.... иж что захотели... скрытые символы, выполнение функций в зависимости от поступления команд.... запретить!
  28. 1 балл
    #WAMACO

    Контролировать приход SMS

    тогда почтовыми голубями! :)))
  29. 1 балл
    krapotkin

    Unable to create process: Performing Streamed Install

    bluestacks работает на intel Delphi официально не поддерживает этот процессор
  30. 1 балл
    krapotkin

    Контролировать приход SMS

    значит, договаривайтесь с гугл, чтобы изменили политику взад...
  31. 1 балл
    Смотрите, вот ваш код: procedure TfmMain.LoadBitmapFromURL(const AURL: string; const AItem: TListViewItem; aBitmap: TBitmap; aSourceBmp: TRectangle); var K: Integer; // Анонимная процедура захватывает локальную переменную, а не обращается к AItem, которой уже может не быть в момент _окончания_ скачивания фотки FHTTPClient : THTTPClient; ResourceStream: TResourceStream; begin Вы используете асинхронный вызов FHTTPClient.BeginGet , начинает выполнятся HTTP запрос, одновременно процедура LoadBitmapFromURL завершает работу и компилятор уничтожает локальные переменные, включая FHTTPClient. Асинхронные вызовы с получением результат происходят уже после уничтожения FHTTPClient и естественно ничего не работает. Вод виндой работает случайно - из за другой модели управления памятью. У вас несколько путей: 1. Сделать FHTTPClient глобальным - лучший и простой путь. 2. Создавать поток самостоятельно, использовать в нем FHTTPClient.Get (не асинхронный) 3. И еще куча вариантов.... Посмотрите как реализовано у меня (по первому варианту)
  32. 1 балл
    Ingalime

    Unable to create process: Performing Streamed Install

    Мне помогло ссоздание эмулятора с маленьким разрешением.
  33. 1 балл
    Ingalime

    Программирование под 64-bit Android невозможна

    https://community.idera.com/developer-tools/b/blog/posts/august-2019-delphi-android-beta-plans-august-roadmap-update
  34. 1 балл
    Ingalime

    Ping на Android или на iOS

    Для платформы Андроид автор библиотеки Indy по имени Remy, приводит свои рассуждения тут: https://stackoverflow.com/questions/25096126/delphi-xe6-and-android-ping
  35. 1 балл
    krapotkin

    Автомасштабирование компонент

    погуглить слово Align поиграться с Margins и Paddings прочитать статью http://docwiki.embarcadero.com/RADStudio/Rio/en/FireMonkey_Layouts_Strategies http://docwiki.embarcadero.com/RADStudio/Rio/en/Tutorial:_Using_FireMonkey_Layouts
  36. 1 балл
    Все заработало - огромное спасибо Евгению за активное участие в решении "мировой" проблемы!
  37. 1 балл
    Там видимо все контролы ControlType Platform подвержены этому глюку. А Браузер - это нативный контрол по умолчанию.
  38. 1 балл
    Закиньте сюда тестовый проект, я проверю на своем устройстве.
  39. 1 балл
    Татьяна

    Андроид 9 и Интернет

    Выражаю Евгению Корепову благодарность за высокопрофессиональную помощь!
  40. 1 балл
    FMX.VirtualKeyboard.iOS.rar
  41. 1 балл
    сделано на Datasnap - 3х звенка MsSql- Сервис Https - Клиент ( Андроид, Ios, Win, Mac) Личный кабинет пациента клиники (www.familydoctor.ru) открывает зарегистрированным пользователям доступ к медицинской карте (результаты лабораторных исследований и функциональной диагностики, описание приемов врачей, направления и рекомендации, истории посещений клиники (дата, время, специалист), программам медицинского наблюдения (перечень, период прикрепления), информации о движении средств по депозитам. Для пересылки выписок (файлов) из медицинской карты используется электронная почта (в системе должен быть настроенный Майл Агент на отправку почты).Полной версией приложения могут воспользоваться только пациенты, подключившие услугу "Личный кабинет" в регистратуре любого корпуса клиники "Семейный доктор".В новой версии изменен дизайн, появились новые функции и разделы:вход по номеру медкарты или ФИО;запрос нового пароля;заявка на онлайн запись;отмена приема;прейскурант услуг клиники;справочник адресов клиники. сервис оплаты услуг клиники через приложение.В ближайшем будущем функционал личного кабинета будет дополнен онлайн расписанием специалистов, возможностью электронной записи на приём. в гугл плее https://play.google.com/store/apps/details?id=com.familydoctor.FD Есть тестовый вход, обращайтесь.
  42. 1 балл
    #WAMACO

    Как получить значения переменных пакета?

    с помощью SQL select * from GLOBALS
  43. 1 балл
    Отвечу сам себе. Проблема решена. Всего два дня поисков и вот он, случай - краеугольный камень поиска ошибок! Меня аж забомбило, когда я это откопал. Оказалось, что мой грид лежит на лайоуте, у которого hittest = false. Так вот до тех пор, пока я не перевел его в true грид отказывался принимать ondragover. Но как только layout.hittest:=true все заработало. Дальше дело техники.
  44. 1 балл
    Евгений Корепов

    Проверка наличия прав

    Вам удалось решить проблему для камеры? Перелопатил весь интернет, но похоже Эмба не озаботилась этим вопросом. Пока присобачил костыль из говна и палок - в AppEvent определяю что приложение стало не активным TApplicationEvent.WillBecomeInactive, значит вылез диалог спрашивания разрешений, После этого по событию TApplicationEvent.BecameActive (диалог завершен), проверяю что приходит от камеры в FCamera.OnSampleBufferReady - если черный-черный ничего, то можно подумать что разрешение не было дано )))))))) От этого костыля у меня кровь из глаз....
  45. 1 балл
    Владимир Б.

    TInstructor - Step-By-Step инструкция

    Собственно понадобился подобный компонент для FMX, но готового решения найти не смог - пришлось ваять свой. Использовать проще простого: var scenaries: TDictionary<TFmxObject, string>; begin scenaries := TDictionary<TFmxObject, string>.Create; scenaries.Add(btn_1, '1 Button'); scenaries.Add(btn_2, '2 Button'); scenaries.Add(btn_3, '3 Button'); scenaries.Add(rctngl, 'Rectangle'#13#10'Rectangle'#13#10'Rectangle'#13#10'Rectangle'#13#10'Rectangle'#13#10'Rectangle'#13#10'Rectangle'); scenaries.Add(pnl_1, 'Panel Panel Panel Panel Panel Panel Panel Panel Panel Panel'#13#10'Panel'); scenaries.Add(nil, 'Msg without target control!'); try instructor.LoadSteps(scenaries); finally FreeAndNil(scenaries); end; Репозиторий GitHub: https://github.com/ange007/TInstructor/
  46. 1 балл
    Barbanel

    Исправили или нет? (Delphi 10.3.2)

    Был как-то на презентации Embarcadero, был задан вопрос из зала про эту ошибку. Менеджер ответил что это сильно второстепенная задача, и вообще он рекомендует эту подсветку выключать, ибо в некоторых случаях она напрочь ломается и неправильно группирует участки кода. (в нашем рабочем проекте - 80-90% времени подсветка ведет себя неадекватно) Исходя из опыта общения с этим чуваком, для себя я сделал вывод что это пофиксят очень нескоро. А вообще не парьтесь, подсветка не главное)
  47. 1 балл
    ENERGY

    Неверная ширина текста из .Canvas.TextWidth

    Оттого, что ширина текста определяется для шрифта и размера указанного в Canvas, а не для шрифта из компонента. Например, в TLabel.TextSettings.Font и в его TLabel.Canvas.Font размер шрифта будет разный (в Canvas он дефолтный - 12). В FMX компонентах Canvas, кстати, общий и один и тот же - это Canvas формы. Если в OnResize чего-либо, сделать так: Label.Canvas.Font.Size := Label.Font.Size; или Label.Canvas.Font.Assign(Label.Font); (чуть дольше) lRealWidth := Label.Canvas.TextWidth(Label.Text); То размер будет корректный.
  48. 1 балл
    ENERGY

    Что невозможно сделать на Delphi для Android?

    Delphi хоронят уже лет 15, это все слова. Нет идеальных инструментов. У всех какие то косяки, втч и у нативных средств, ведь все это придумывают люди, люди не роботы. На деле Delphi отличное средство для мультиплатформенной разработки вполне сложных программ. Мне как фрилансеру вполне хватает. Производительность гораздо лучше чем у Angular\Ionic, которые по факту WebView - веб в браузере - очень тормозное решение и подходит только для формочки "логин\пароль". Также по производительности и глюкам Delphi имхо лучше чем ReactJS, и Xamarin aka Mono. Во фрилансе огромная конкуренция, в основном индусы, в этом плане с Delphi можно быстрее разработать ПО чем предлагают сроки остальные. Проблема Делфай в том что оно дорогое, и не так распространено - (это взаимосвязанный фактор) - таким образом сложно найти команду и мало проектов на нем разрабатывается, меньше сообщество и меньше документации и библиотек с готовыми решения Поэтому для одиночек это больше подходит. Но конечно нужно смотреть на развитие - вот Токио получилась очень сырым продуктом, я до сих пор на Берлине пишу под 4 платформы, если следующая версия выйдет такой же ультраглючной, то следует задуматься. А вообще хороший программист - это тот кто знает несколько языков, не бойтесь учить новое - опыт ускорит разработку с любым инструментом.
  49. 1 балл
    Похоже FireDAC плохо дружит с LiveBinding. Я тоже напоролся на проблему - не обновляются данные. Есть 3 три таблицы, связанных внешними ключами через Master/Detail, по цепочке 1>2>3. Если перейти по записям в первой таблице - во второй данные обновятся, а в третьей - нет. Обновляются только если нет связанных данных. Самое интересное то, что точно такой же проект, с теме же таблицами на VCL отлично работает. Из чего складывается вывод - косячит биндинг. Точнее TBindSourceDB.
  50. 0 баллов
    krapotkin

    Контролировать приход SMS

    Насколько я помню, эта функциональность теперь считается опасной и у гугла спец апи для этого https://medium.com/@sampadasalimath14/sms-retriever-api-for-automatic-sms-verification-e029cc501b1f реализаций на делфи не видел
Эта таблица лидеров рассчитана в Москва/GMT+03:00
×
×
  • Создать...