-
Постов
317 -
Зарегистрирован
-
Посещение
-
Победитель дней
52
Активность репутации
-
dnekrasov получил реакцию от sulion в Помогите начать работу с Oracle
Для того, чтобы это работало нужна FireDACOracleDriver25(6)0.bpl. Не факт что она идёт вместе с Trial (в Community её точно нет).
-
dnekrasov отреагировална Tumaso в Не получается скачать файл по https
Используй TNetHTTPClient вместо инди, проблема с ssl уйдет.
При использовании инди и указании https в URL например в виндах требуется две дополнительные dll-ки (libeay32.dll / ssleay32.dll), для андроида libcrypto.so / libssl.so и т.д. Поэтому проще перейти на TNetHTTPClient
-
dnekrasov получил реакцию от Android в Кто-нибудь щупал TMS Web Core?
Пробовал я и TMS Web Core и UniGUI, но как по мне - лучше чем Thinfinity VirtualUI нет. И да, реально на всех получаются неплохие веб-приложения на Delphi без знания всех этих новомодных фреймворков.
-
dnekrasov получил реакцию от #WAMACO в HTML парсер для Firemonkey
как-то так
uses System.RegularExpressions; ... const AHREF = '<a href="([^"]*)"[^>]*>([^<]*)</a>'; var Match: TMatch; s: String; begin Match := TRegEx.Match(ваша HTML строка, AHREF); while Match.Success do begin // здесь что-то делаем //<a href"...>...</a> в Match.Value //Match.Groups[1] - адрес ссылки //Match.Groups[2] - отображаемый текст ссылки Match := Match.NextMatch; end; end
-
dnekrasov получил реакцию от Alisson R Oliveira в HTML парсер для Firemonkey
как-то так
uses System.RegularExpressions; ... const AHREF = '<a href="([^"]*)"[^>]*>([^<]*)</a>'; var Match: TMatch; s: String; begin Match := TRegEx.Match(ваша HTML строка, AHREF); while Match.Success do begin // здесь что-то делаем //<a href"...>...</a> в Match.Value //Match.Groups[1] - адрес ссылки //Match.Groups[2] - отображаемый текст ссылки Match := Match.NextMatch; end; end
-
dnekrasov получил реакцию от Barbanel в HTML парсер для Firemonkey
как-то так
uses System.RegularExpressions; ... const AHREF = '<a href="([^"]*)"[^>]*>([^<]*)</a>'; var Match: TMatch; s: String; begin Match := TRegEx.Match(ваша HTML строка, AHREF); while Match.Success do begin // здесь что-то делаем //<a href"...>...</a> в Match.Value //Match.Groups[1] - адрес ссылки //Match.Groups[2] - отображаемый текст ссылки Match := Match.NextMatch; end; end
-
dnekrasov получил реакцию от Ingalime в HTML парсер для Firemonkey
как-то так
uses System.RegularExpressions; ... const AHREF = '<a href="([^"]*)"[^>]*>([^<]*)</a>'; var Match: TMatch; s: String; begin Match := TRegEx.Match(ваша HTML строка, AHREF); while Match.Success do begin // здесь что-то делаем //<a href"...>...</a> в Match.Value //Match.Groups[1] - адрес ссылки //Match.Groups[2] - отображаемый текст ссылки Match := Match.NextMatch; end; end
-
dnekrasov отреагировална Slym в Расположение нажатого элемента управления по отношению к экрану
Доступ ко многим protected методам можно получить через интерфейсы:
ClientToScreen доступен через IControl, т.е. любой контрол (Ctrl as IControl).ClientToScreen
про поиск TCommonCustomForm - у всех контролов есть Root - TCommonCustomForm(Ctrl.Root.GetObject) (незабываем проверять nil :) )
еще есть Scene...
-
dnekrasov отреагировална slav_z в Symbol 'Release' is deprecated
Release уже давно объявлен как deprecated.
Release позволяет выполнить отложенное удаления объекта (удалить, но не прям сейчас). Если это вам действительно нужно (иногда позволяет избежать некоторых ошибок), то просто повторите его код. Но пока его окончательно не убрали, лучше пользоваться существующим методом. Ругается и ругается - бог с ним. Если надо просто удалить объект, то Free, если с обнулением ссылки то FreeAndNil или Free + присвоить nil в коде (как у вас).
-
dnekrasov отреагировална slav_z в Разработка кросплатформенных приложений в одном проекте
ну как так то? условная компиляция! посмотрите в исходных кодах дельфи... там куча примеров... КУЧА!!!
-
dnekrasov отреагировална slav_z в Rio 10.3. Выделение текста в TText
минимальный код:
unit Unit1; interface uses System.SysUtils, System.Types, System.UITypes, System.UIConsts, System.Classes, FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Objects, FMX.TextLayout; type TForm1 = class(TForm) Text1: TText; procedure Text1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Single); procedure Text1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Single); procedure Text1Painting(Sender: TObject; Canvas: TCanvas; const ARect: TRectF); procedure FormCreate(Sender: TObject); private Range: TTextRange; function TextLayout: TTextLayout; public function GetSelectedText: string; end; var Form1: TForm1; implementation {$R *.fmx} procedure TForm1.FormCreate(Sender: TObject); begin Text1.AutoCapture:=True; end; type TTextAccess = class(TText); function TForm1.TextLayout: TTextLayout; begin Result:=TTextAccess(Text1).Layout; end; function TForm1.GetSelectedText: string; begin Result:=Text1.Text.Substring(Range.Pos,Range.Length); end; procedure TForm1.Text1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Single); begin Range.Pos:=TextLayout.PositionAtPoint(PointF(X,Y)); Range.Length:=0; Text1.Repaint; end; procedure TForm1.Text1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Single); begin if Text1.Pressed then begin Range.Length:=TextLayout.PositionAtPoint(PointF(X,Y))-Range.Pos; Text1.Repaint; end; end; procedure TForm1.Text1Painting(Sender: TObject; Canvas: TCanvas; const ARect: TRectF); begin Canvas.Fill.Color:=claSilver; Canvas.Fill.Kind:=TBrushKind.Solid; for var R in TextLayout.RegionForRange(Range,False) do Canvas.FillRect(R,0,0,AllCorners,1); end; end.
textselected.zip
-
dnekrasov получил реакцию от Ingalime в компонент – Индикатор("лампочка")
Лучше TPaintBox или TShape
вообще лучше не делать - размер холста задаётся автоматом в зависимости от размеров контрола
переопределите функцию GetDefaultSize: TSizeF
Вы контрол рисуете полностью сами, значит inherited тут не надо
А вообще - посмотрите исходники TCircle-TEllipse-TShape - всё станет намного понятнее.
-
-
dnekrasov получил реакцию от Илья Ненашев в GlowEffect на кнопке
Зачем? Ведь стиль для того и создается, чтобы не заморачиваться над UI.
В редакторе стилей у GlowEffect поставить Enabled=False и в триггере выбрать IsPressed=True - и наслаждайтесь
-
-
-
dnekrasov получил реакцию от Edward Tarasov в Error: E0776 error: exportArchive: No 'teamID' specified and no team ID found in the archive
c:\Program Files (x86)\Embarcadero\Studio\20.0\bin\CodeGear.Deployment.Targets - в нём найдите параметр NotarizeAppAdditionalParams В нём пропишите NotarizeAppAdditionalParams="-itc_provider [TeamID]" TeamID можно узнать здесь https://developer.apple.com/account/#/welcome -
dnekrasov отреагировална OnePeople в не работает в Андроид TTabTransition.Slide
SetActiveTabWithTransitionAsync
-
dnekrasov отреагировална krapotkin в Material design shadow
Столкнулся с необходимостью генерировать тень в соответствии с material design guide
дополнительное условие - тень нужна не привязанная к контролу, т.е. просто прицепить TShadowEffect нельзя
интернет сказал мне, что одной тени недостаточно, стал ставить эксперименты с двумя.
эмпирически подобрал алгоритм и параметры, которые дают довольно близкий к гайду результат
1. https://material.io/design/environment/light-shadows.html#shadows
2. мой скриншот
положил сюда https://bitbucket.org/vkrapotkin/vkshadowgenerator
Механизм работы понятен из приложенного примера.
В принципе можно применять те же параметры и к обычным TShadowEffect
-
dnekrasov отреагировална Dmitry_4501 в BlurBehind Control
BlurBehind Control.
Компонент позволяет использовать размытие, по типу, которое реализовано в WIndows 10, т.е компонент позволяет "размыть" то, что находится под ним.
Пусть и увидел это непосредственно в самой студии на стартовой странице (Welcome Page), но все-таки подумал скинуть ссылку сюда.
Исходники: https://github.com/grijjy/CodeRage2019/tree/master/BlurBehind
Видео:
-
dnekrasov отреагировална Eric Myval в Unable to create process
Результат следующий
Мой проект корректно работает под
1) Windows 32/64
2) Android 32/64
3) iOS 32/64 (обязательно настроить сертификаты, которые можно создать и прикрепить в Xcode + настроить их в Rad Studio в разделе Project-Deployment-Provisioning, выбрать там ключи как вы их настроили на вашем маке + ОБЯЗАТЕЛЬНО в version info удалить текст в CFBundleIdentifier, должно быть пусто)
4) MacOS 32/64
5) iOS 32/64 simulator - не работает!!!
-
dnekrasov получил реакцию от Ingalime в Unable to create process
http://docwiki.embarcadero.com/RADStudio/Rio/en/MacOS_Notarization
Делал как здесь описано - всё получилось.
-
dnekrasov получил реакцию от Andrey Efimov в Unable to create process
http://docwiki.embarcadero.com/RADStudio/Rio/en/MacOS_Notarization
Делал как здесь описано - всё получилось.
-
dnekrasov отреагировална Losev Andrei в Деплой приложения на iOS (Delphi 10.3.3 в связке с macOS Catalina)
Проблема была в правах доступа на МАКе. Выяснилось случайно, когда попробовал делоить тот же проект под МАК и IDE выдала явную ошибку о невозможности создать файл во вложенной в /Users/macuser/PAServer директории. Вылечилось раздачей прав Read & Wtite для ролей staff/everyone для папки PAServer и вложенных директорий (Apply to enclosed items).
На quality.embarcadero.com есть по крайней мере две заявки на эту тему, почему-то закрытые: RSP-25526 и RSP-26093
В первой автор откатился на Mojave, во второй стоит «Resolution: Cannot Reproduce». Так что описанная проблема спорадический возникает.
Всем успехов и поменьше граблей на пустом месте :)
-
dnekrasov получил реакцию от Павел Блажеев в Как сделать координатную сетку ?
Посмотрите компонент TPlotGrid. Может поможет чем