-
Постов
317 -
Зарегистрирован
-
Посещение
-
Победитель дней
52
Активность репутации
-
dnekrasov получил реакцию от Павел Блажеев в Как сделать координатную сетку ?
Посмотрите компонент TPlotGrid. Может поможет чем
-
dnekrasov отреагировална mazayhin в FMX асинхронное управление интерфейсом в процедуре до её завершения.
Еще, причем, если будете запускать не только на Windows, сразу выберете кросплатформенного поставщика (DOM Vendor) ADOM XML v4
Тогда не надо будет вызывать CoInitialize, который и работает только для Windows
-
dnekrasov отреагировална Евгений Корепов в Затирание bitmap canvas при map-unmap
Я разобрался в чем дело:
Вместо TMapAccess.Write используйте TMapAccess.ReadWrite.
TMapAccess.Write по какой то причине затирает если не все, то некоторые последние изменения канваса. В доке http://docwiki.embarcadero.com/Libraries/Rio/en/FMX.Graphics.TBitmap.Map не нашел упоминания о таком поведении.
-
dnekrasov получил реакцию от Ingalime в Исправили или нет? (Delphi 10.3.2)
@Сергей Рыжков , @CyberStorm
Почитайте про новое в Delphi 10.3 Rio - статей и видео на эту тему куча.
-
dnekrasov получил реакцию от Tumaso в Исправили или нет? (Delphi 10.3.2)
@Сергей Рыжков , @CyberStorm
Почитайте про новое в Delphi 10.3 Rio - статей и видео на эту тему куча.
-
dnekrasov отреагировална Евгений Корепов в Helper для TBitmap - асинхронная загрузка картинки из URL
Пока тестировал хелпер в боевом проекте он потихоньку оброс исрпавлениями/улучшениями:
Загрузка из потока сделана через TBitmapSurface - это позволяет избежать множества глюков. LoadFromStream вынесен из Synchronize (основного потока) в поток HTTPClient - по результатам бенчмарка операция оказалась самая жручая. После исправления интерфейс перестал залипать совсем. Добавлен overload вариант с передачей в процедуру TListItemImage - для использования в TListView и корректной перерисовки подгруженных картинок через AListItemImage.Invalidate. unit BitmapAsyncLoader; interface uses FMX.Graphics, FMX.Surfaces, System.Net.HttpClient, System.Types, System.Classes, FMX.ListView.Types, FMX.ListView.Appearances; type TBitmapAsyncLoader = class helper for TBitmap procedure LoadFromURLAsync(const AUrl : String); overload; procedure LoadFromURLAsync(const AUrl : String; const AListItemImage : TListItemImage); overload; end; implementation var AHTTPClient : THTTPClient; procedure TBitmapAsyncLoader.LoadFromURLAsync(const AURL : String); begin try AHTTPClient.BeginGet( procedure (const ASyncResult: IAsyncResult) var AHTTPResponse : IHTTPResponse; ABitmapSurface : TBitmapSurface; begin if Not ASyncResult.IsCompleted then exit; try AHTTPResponse:=THTTPClient.EndAsyncHTTP(ASyncResult); except end; if Assigned(AHTTPResponse) and (AHTTPResponse.StatusCode = 200) then begin ABitmapSurface:=TBitmapSurface.Create; if TBitmapCodecManager.LoadFromStream(AHTTPResponse.ContentStream, ABitmapSurface, CanvasClass.GetAttribute(TCanvasAttribute.MaxBitmapSize)) then TThread.Synchronize(Nil, procedure begin if Assigned(Self)then Assign(ABitmapSurface); ABitmapSurface.Free; end ) else ABitmapSurface.Free; end; end, AURL ); except end; end; procedure TBitmapAsyncLoader.LoadFromURLAsync(const AURL : String; const AListItemImage : TListItemImage); begin try AHTTPClient.BeginGet( procedure (const ASyncResult: IAsyncResult) var AHTTPResponse : IHTTPResponse; ABitmapSurface : TBitmapSurface; begin if Not ASyncResult.IsCompleted then exit; try AHTTPResponse:=THTTPClient.EndAsyncHTTP(ASyncResult); except end; if Assigned(AHTTPResponse) and (AHTTPResponse.StatusCode = 200) then begin ABitmapSurface:=TBitmapSurface.Create; if TBitmapCodecManager.LoadFromStream(AHTTPResponse.ContentStream, ABitmapSurface, CanvasClass.GetAttribute(TCanvasAttribute.MaxBitmapSize)) then TThread.Synchronize(Nil, procedure begin if Assigned(Self) and Assigned(AListItemImage) then begin AListItemImage.BeginUpdate; Assign(ABitmapSurface); AListItemImage.Invalidate; AListItemImage.EndUpdate; end; ABitmapSurface.Free; end ) else ABitmapSurface.Free; end; end, AURL ); except end; end; initialization AHTTPClient:=THTTPClient.Create; finalization if Assigned(AHTTPClient) then AHTTPClient.DisposeOf; end. Тестовый проект, на этот раз с ListView (по кнопке добавляется 100 итемов) прилагаю.
BitmapAsyncLoaderListView.7z
-
dnekrasov получил реакцию от Barbanel в Масштабирование экрана
Суда по Вашим скринам - не тянется картинка стиля - проверьте buttonstyle.background.NormalLink
-
dnekrasov получил реакцию от Barbanel в Масштабирование экрана
Проверьте настройки проекта "Application->Enable High-DPI" После смены масштаба желательно перелогиниться в винде (особенно Win7) -
dnekrasov получил реакцию от sulion в Помогите начать работу с Oracle
Для того, чтобы это работало нужна FireDACOracleDriver25(6)0.bpl. Не факт что она идёт вместе с Trial (в Community её точно нет).
-
dnekrasov получил реакцию от Ingalime в Помогите начать работу с Oracle
В Community Edition его и не будет (как и многих других). Это одно из ограничений этой редакции студии. Выход - или купить Professional... или всем известный способ
-
dnekrasov получил реакцию от Ingalime в как найти и удалить компонент на TabItem
Вы используете LyContent.AddObject а этот метод добавляет только в LyContent.Children. Для того, чтобы добавить в LyContent.Components надо создавать фрейм с AOwner = LyContent или использовать LyContent.InsertComponent.
А вообще - не надо заморачиваться с Components. Управляйте отображением фреймов с помощью Parent, а за временем жизни пусть следит Ваш TFramesFactory
-
dnekrasov получил реакцию от Tumaso в TImageList в TImage
ImageList1.Bitmap(Size, Index). Для уточнения - читайте Help. Не знаете английский - изучайте или словарём пользуйтесь (заодно и учитесь Help-ом пользоваться). Ещё раз повторюсь - здесь не кружок "юный Delphi-программист"
-
dnekrasov получил реакцию от Ingalime в TImageList в TImage
Это уже не смешно - здесь не кружок "юный Delphi-программист" и программированию не обучают.
А по сути вопроса - зачем Вам вообще ImageList если нужны png-файлы. Используйте ресурсы (Project->Resources and Images), а загрузить в TBitmap можно так:
function LoadBitmapFromResourceName(const AResName: string; AResType: PChar = RT_RCDATA): TBitmap; var RS: TResourceStream; begin RS := TResourceStream.Create(hInstance, AResName, AResType); try Result := TBitmap.CreateFromStream(RS); finally FreeAndNil(RS); end; end;
-
dnekrasov получил реакцию от #WAMACO в TImageList в TImage
Хм... Я смотрю Help совсем популярностью у Вас не пользуется...
TImageList.Bitmap(...)
TImageList.BitmapExists(...)
TImageList.BitmapItemByName(...)
-
dnekrasov получил реакцию от Ingalime в TImageList в TImage
Хм... Я смотрю Help совсем популярностью у Вас не пользуется...
TImageList.Bitmap(...)
TImageList.BitmapExists(...)
TImageList.BitmapItemByName(...)
-
dnekrasov получил реакцию от OnePeople в TImageList в TImage
Хм... Я смотрю Help совсем популярностью у Вас не пользуется...
TImageList.Bitmap(...)
TImageList.BitmapExists(...)
TImageList.BitmapItemByName(...)
-
dnekrasov получил реакцию от mazayhin в помогие код сделать рабочим в firemonkey
Не надо никак менять этот модуль. Скомпилился сразу и без ошибок (только варнинги).
Насчет Ваших ошибок - похоже Вы просто uSMBIOS и System.TypInfo в uses забыли подключить.
-
dnekrasov получил реакцию от Barbanel в Создание ссылки из TLabel.
Просто надо привыкнуть к новому подходу к некоторым вещам. Зато возможностей побольше, чем в VCL. Да и удобнее, когда привыкнешь. ИМХО
-
dnekrasov получил реакцию от Brovin Yaroslav в рисование на Image1
Если в качестве курсора (картинки) карандаша, то ещё следует изучить как преобразовывать координаты:
procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Single); begin if D=1 then Image2.Position.Point := Image1.LocalToAbsolute(PointF(X, Y)); end; Да и HitTest у Image2 следует поставить False, а клик отслеживать на Image1. Да и когда D=1 и курсор находится внутри Image1 курсор мышки лучше сделать невидимым.
Да и вообще - рисовать удобнее на PaintBox
-
dnekrasov получил реакцию от Brovin Yaroslav в рисование на Image1
А этот код и не должен ничего рисовать.
Почитайте про TPathData и его методы (хотя бы MoveTo и LineTo) У одного Canvas должно быть одинаковое количество BeginScene и EndScene - иначе получите Exception. В Image1MouseMove вообще не понятно что Вы хотели сделать. -
dnekrasov получил реакцию от лёля в Создание ссылки из TLabel.
Label1.StyledSettings := Label1.StyledSettings - [TStyledSetting.Style];
Label1.TextSettings.Font.Style := Label1.TextSettings.Font.Style + [TFontStyle.fsUnderline]
-
dnekrasov получил реакцию от лёля в Создание ссылки из TLabel.
Просто надо привыкнуть к новому подходу к некоторым вещам. Зато возможностей побольше, чем в VCL. Да и удобнее, когда привыкнешь. ИМХО
-
dnekrasov получил реакцию от Ingalime в Создание ссылки из TLabel.
HitTest := True;
Label1.StyledSetting := Label1.StyledSetting - [TStyledSetting.Style]
-
dnekrasov получил реакцию от Ingalime в рисование на Image1
А этот код и не должен ничего рисовать.
Почитайте про TPathData и его методы (хотя бы MoveTo и LineTo) У одного Canvas должно быть одинаковое количество BeginScene и EndScene - иначе получите Exception. В Image1MouseMove вообще не понятно что Вы хотели сделать. -
dnekrasov отреагировална OnePeople в Монополия
Делал чисто для себя! И только для своего удовольствия!
Возможны ошибки!*(вернее точно есть)))
Графика не окончательная!
Скриншоты сервер:
Скриншоты клиент:
Сервер на комп, клиент Android (должны находиться в одной сети)
P/S И так как все устройства у меня Full HD, проверял только на них(
Monopoly.rar