Лидеры
Популярный контент
Показан контент с высокой репутацией 17.03.2016 во всех областях
-
Давненько еще нашел этот пак компонентов, но не было времени ознакомиться с ним ближе. Сегодня посмотрел демки - думаю нашему сообществу понравится эта библиотека. Описание оригинальное с гитхаба. Как скачать: GetIT(нет лицензии на студию? смотрим ниже) Прямая ссылка на последнюю версию С помощью GIT-клиента: https://github.com/gmurt/KernowSoftwareFMX.git .Можете либо встроенным в делфи, либо своим любимым. Могу посоветовать SourceTreeApp. Рекомендую именно этот способ - вам не придется постоянно перекачивать компонент для обновления. Достаточно в приложении нажать одну кнопку - и компонент обновился. Kernow Software FMX Components for XE7, XE8 & XE10 Seattle. (May work with earlier versions but untested) Firemonkey Slide menu, ListView and Segment buttons for Delphi. Inherits from a non-visual component to keep things simple. Includes demo with source. Demo App also available on app store: https://itunes.apple.com/gb/app/kscomponents-reference/id1031179701?mt=8 Feel free to support the components with a donation ;-) If you'd like to support the ksComponents project, you can do so at the following link ;-) http://www.kernow-software.co.uk/?page_id=397 TksTableView Cached table view provides native performance regardless of the number of text/items/graphics added support for embedded switches support for embedded buttons support for embedded segment buttons Canvas style methods for adding text/shapes/images Built-in support for Image, Title, SubTitle, Detail and Accessory elements Check list option support - single check or multi check Custom check mark colours Image cropping (square, round rect or circle) "Indicator" colours - add colour indicators to each row "Sticky" headers TksSlideMenu set menu background colour set selected item colour set font colours add images to items fade background left or right aligned menus inherites from non-visual Tcomponent for quick integration into existing projects uses bitmap caching for optimised performance TksSegmentButtons segment button component support for iOS style badges TksFormTransition component for animating transitions between forms TksTabControl Tab control component with support for different colours/themes Large number of built-in icons Support for iOS style badges TksNetHttpClient enhanced http client with ASync Get method TksTileMenu simple but effective main menu component TksChatView component for building iOS style chat applications TksSpeedButton TSpeedButton descendant with support for iOS style badges Any suggestions for updates are welcome :-)6 баллов
-
Обновление форума
Равиль Зарипов (ZuBy) и 2 других отреагировал Brovin Yaroslav за тема
Над этим я пока работаю. Так как по дефолту такой настройки нету. Буду думать, как сделать сортировку по умолчанию по дате.3 балла -
Kernow Software FMX Components for XE7, XE8 & XE10 Seattle
Brovin Yaroslav и ещё один отреагировал rareMax за тема
2 балла -
[TTabControl] Как задать иконку у вкладки компонента TTabControl?
Vitaldj и ещё один отреагировал Brovin Yaroslav за вопрос
Картинку можно указать двумя способами: Способ 1 У каждой вкладки TTabControl есть свойство TTabItem.CustomIcon позволяющее загрузить картинку на вкладку. Способ 2. С использование TImageList Если картинки располагаются в TImageList компоненте, то нужно вначале привязать TImageList к TTabControl.Images. А затем выбрать индекс картинки у вкладки TTabItem.ImageIndex.2 балла -
[TListView] Как загрузить картинку в итем TListView из TImageList?
Rusland и ещё один отреагировал RoschinSpb за вопрос
Если у вас не самоцель загружать именно исходные картинки, то можно присваивать просто номер изображения. // настройка ListView если хотите в Run-Time ListView2.Images := ImageList1; // Указываем коллекцию изображений // которая будет использоваться. ListView2.ItemAppearanceName := TAppearanceNames.ImageListItem; ListView2.ItemAppearanceObjects.ItemObjects.Image.Visible := True; ... Item := ListView2.Items.Add; // Добавляем новый пункт если надо if (Item.Objects.ImageObject <> nil) then begin Item.Objects.ImageObject.ImageIndex := Item.Index; // Присваиваем номер изображения // из коллекции изображений Item.Text := Format('Item with ImageIndex = %d', [Item.Objects.ImageObject.ImageIndex]); end; А вот тут пример загрузки из файла в ImageList2 балла -
Проблемы с отрисовкой
#WAMACO и ещё один отреагировал Brovin Yaroslav за вопрос
Так, я поясню. Нельзя работать с UI компонентами в не главном UI потоке. Отсюда у вас и ошибки через раз. Банально по причине того, что когда вы изменяете состояние UI компонента, это может привести к перерисовке. А в свою очередь процесс отрисовки может наложиться с очередной работой с этим компонентом из другого потока. Отсюда всякие AV в главной процедуре отрисовки.2 балла -
Клонирование TListView
#WAMACO и ещё один отреагировал Равиль Зарипов (ZuBy) за вопрос
я пользуюсь первым вариантом, создаю такого плана record и использую его для разных вариантов отрисовок TmyListViewDrawer = record procedure PaintBitmaps(Sender: TObject; Canvas: TCanvas; const ARect: TRectF); // динамическая отрисовка картинок procedure PaintHorzBitmaps(Sender: TObject; Canvas: TCanvas; const ARect: TRectF); // динамическая отрисовка картинок (горизонтально LV) procedure RestoranDrawer(const Sender: TObject; const AItem: TListViewItem); // отрисовка плиточки // настройка LV class procedure RestoranConfig(aLV: TListView); static; class procedure BludoConfig(aLV: TListView); static; class procedure MenuConfig(aLV: TListView); static; // ... class procedure RestoranAdd(aLV: TListView; const aTitle, aLocation, aURL: string; const aDistance, aRating: Real; const aMinPrice, aDeliveryPrice, aDeliveryTime: integer; const aSale: Boolean); static; // добавление Itema end; плюс в том что можно потом копировать в другие проекты, просто дополняя. а не сидеть и настраивать руками2 балла -
Обновление форума
Равиль Зарипов (ZuBy) и ещё один отреагировал Brovin Yaroslav за тема
Кнопку добавил. Теперь при прокручивании вниз, слева появляется кнопка по всей высоте сайта для прокрутки контента вверх2 балла -
[TidTCPClient] В IdTCPClient возникает Max line length exceeded при чтении
Евгений Корепов и ещё один отреагировал rareMax за вопрос
Для начала - я бы попробовал обновить инди. Та версия, что поставляется с Делфи - немного отстает. Постоянно выходят багфиксы. Скачать последнюю версию можно с помошью SVN клиента(ваш любимый либо встроенный в ИДЕ): https://svn.atozed.com:444/svn/Indy10 Имя: Indy-Public-RO пароль пустой оставь2 балла -
DeviceInfo - модуль для получения информации о девайсе
Brovin Yaroslav отреагировал Равиль Зарипов (ZuBy) за вопрос
DeviceInfo - модуль для получения информации о девайсе Android || Windows || IOS || MAC OS Intel планшет для Андроида нужно включить разрешения (permission) Ссылка на GitHub1 балл -
Да никто вас не отфутболивает. Но, с учетом того, что TMS-ом среди участников форума (вроде как) пользуется не так уж много народа - вряд ли стоит ожидать глобального понимания проблемы. Тем более - если она не воспроизводится у других. Кроме того - если не получается создать минимальный воспроизводимый пример, вряд ли смогут помочь и сами TMS-овцы, и тем более - Embarcadero-вцы. Судя по исходникам TMS - начиная с XE7 они используют свою реализацию для Edit-а, основанную на TStyledControl. И эта реализация по беглому взгляду не должна отличаться на Seattle и Seattle Upd1. Поэтому в решении проблемы поможет только MVCE - Minimal, Complete, and Verifiable example1 балл
-
RE: Andrey Efimov Под Android. Да, именно запись.1 балл
-
Обновление форума
zairkz отреагировал Brovin Yaroslav за тема
Специально запретил вставлять картинки по ссылке. Поскольку при удалении картинки с другого хостинга, в сообщение будет битая ссылка. Добавлять картинки как обычные вложения, а потом вставлять в тему сообщения. Так есть 100% гарантия, что изображение останется на нашем хостинге.1 балл -
Проблемы с отрисовкой
zairkz отреагировал Равиль Зарипов (ZuBy) за вопрос
что за код находится в обработчиках OnClick этих кнопок? есть подозрение что программист делает не то)1 балл -
Более гибкий вариант, работающий как под х86, так и под х64: unit Forms.Persistent; interface uses System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants, {$IF Defined(WIN32) OR Defined(WIN64)} System.Generics.Collections, Winapi.Windows, FMX.Platform.Win, Winapi.Messages, {$ENDIF} FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs; type TfrmPersistent = class(TForm) {$IF Defined(WIN32) OR Defined(WIN64)} private class var Callbacks: TDictionary<HWND, Pointer>; class constructor ClassCreate; class destructor ClassDestroy; protected procedure CreateHandle; override; procedure DestroyHandle; override; {$ENDIF} end; implementation {$R *.fmx} {$IF Defined(WIN32) OR Defined(WIN64)} { TfrmPersistent } function WindowProc(hwnd: HWND; uMsg: UINT; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall; var frm: TCommonCustomForm; oldProc: Pointer; begin frm := FindWindow(hwnd); if Assigned(frm) and (uMsg = WM_GETMINMAXINFO) then begin with PMinMaxInfo(LParam)^.ptMinTrackSize, frm do begin X := 950 + Width - ClientWidth; Y := 500 + Height - ClientHeight; end; Result := 0; end else if TfrmPersistent.Callbacks.TryGetValue(hwnd, oldProc) and Assigned(oldProc) then Result := CallWindowProc(oldProc, hwnd, uMsg, wParam, lParam) else Result := DefWindowProc(hwnd, uMsg, wParam, lParam); end; procedure TfrmPersistent.CreateHandle; var wnd: HWND; begin inherited CreateHandle; wnd := FormToHWND(Self); if wnd <> 0 then begin Callbacks.Add(wnd, Ptr(GetWindowLongPtr(wnd, GWLP_WNDPROC))); SetWindowLongPtr(wnd, GWLP_WNDPROC, NativeInt(@WindowProc)); end; end; procedure TfrmPersistent.DestroyHandle; var wnd: HWND; oldProc: Pointer; begin wnd := FormToHWND(Self); if (wnd <> 0) and Callbacks.TryGetValue(wnd, oldProc) then SetWindowLongPtr(wnd, GWLP_WNDPROC, NativeInt(oldProc)); inherited DestroyHandle; end; class constructor TfrmPersistent.ClassCreate; begin Callbacks := TDictionary<HWND, Pointer>.Create; end; class destructor TfrmPersistent.ClassDestroy; begin Callbacks.Free; end; {$ENDIF} end. Похоже, что при компиляции в х64, вложенные процедуры как-то хитро компилируются, в итоге либо кривой стек возникает, либо еще что, поэтому пришлось колбек вынести в глобальный метод.1 балл
-
Я как то предлагал поставить плавающую кнопку "вверх". Прошу и в этот раз. Сейчас это более актуально, в связи с тем что сайт "пожирнее" стал. Приходится еще больше колесом крутить..1 балл
-
1 балл
-
Не отображает иконки приложения
zairkz отреагировал ra.eremeev за вопрос
Какой-то глюк - проблема самоустранилась через некоторое время. Когда уже надежду всю потерял. Ничего не менял и не перепрописывал. Просто иконки стали появляться и все. Всем спасибо!1 балл -
Благодарю за ответ, пытался исходник поредактировать — винда на права доступа ругалась. Сделал так: unit Forms.Persistent; interface uses System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants, {$IF Defined(WIN32) OR Defined(WIN64)} Winapi.Windows, FMX.Platform.Win, Winapi.Messages, {$ENDIF} FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs; type TfrmPersistent = class(TForm) {$IF Defined(WIN32) OR Defined(WIN64)} private FHwnd: HWND; FOldWndProc: LONG_PTR; protected procedure CreateHandle; override; procedure DestroyHandle; override; {$ENDIF} end; implementation {$R *.fmx} {$IF Defined(WIN32) OR Defined(WIN64)} { TfrmPersistent } procedure TfrmPersistent.CreateHandle; function WindowProc(hwnd: HWND; uMsg: UINT; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall; var frm: TCommonCustomForm; begin frm := FindWindow(hwnd); Assert(frm.InheritsFrom(TfrmPersistent)); if Assigned(frm) then begin if uMsg = WM_GETMINMAXINFO then begin with PMinMaxInfo(LParam)^.ptMinTrackSize, frm do begin X := 950 + Width - ClientWidth; Y := 500 + Height - ClientHeight; end; Result := 0; end else Result := CallWindowProc(Ptr(TfrmPersistent(frm).FOldWndProc), hwnd, uMsg, WParam, lParam); end else Result := DefWindowProc(hwnd, uMsg, wParam, lParam); end; begin inherited CreateHandle; FHwnd := WindowHandleToPlatform(Handle).Wnd; FOldWndProc := GetWindowLongPtr(FHwnd, GWL_WNDPROC); SetWindowLongPtr(FHwnd, GWL_WNDPROC, NativeInt(@WindowProc)); end; procedure TfrmPersistent.DestroyHandle; begin Assert(FHwnd <> 0); SetWindowLongPtr(FHwnd, GWL_WNDPROC, FOldWndProc); inherited DestroyHandle; end; {$ENDIF} end. Может кому пригодится.1 балл
-
Можно помучаться с TListView, но я остановился на TPresentedScrollBox и стилизованных Label'ах (облачки сообщений, под разные scale на png 9patch), скорость скролла хорошая, плюс есть боунсы и тд. Приложил исходники проекта, также в архиве отдельно chat.style procedure TForm2.ChatUp(UsID: integer; LastId: integer; CText: string); var Labb: TLabel; Marg: Single; LT: TLayout; begin LT := TLayout.Create(PR); LT.Parent := PR.Content; LT.Margins.Top := 2; LT.Align := TAlignLayout.Top; LT.Position.Y := PR.ContentBounds.Height + 50; Marg := PR.Width * 0.20; Labb := TLabel.Create(PR); Labb.Parent := PR; Labb.Align := TAlignLayout.Top; Labb.AutoSize := True; Labb.WordWrap := True; Labb.TextSettings.WordWrap := True; if UsID = 0 then begin Labb.Margins.Left := Marg; Labb.Margins.Right := 4; Labb.TextAlign := TTextAlign.Trailing; Labb.StyleLookup := 'labelchat_green'; end else begin Labb.Margins.Right := Marg; Labb.Margins.Left := 4; Labb.TextAlign := TTextAlign.Leading; Labb.StyleLookup := 'labelchat_white'; end; Labb.NeedStyleLookup; Labb.Text := ' ' + CText + ' '; LT.Height := Labb.Height + 4; Labb.Parent := LT; if UsID = 0 then Labb.Align := TAlignLayout.Right else Labb.Align := TAlignLayout.Left; end; Первые признаки шизофрении: Chat.zip1 балл
-
Обновление форума
Вячеслав отреагировал Brovin Yaroslav за тема
Я понял, постараюсь сделать такой же блок, который был в предыдущей версии форума.1 балл -
DeviceInfo - модуль для получения информации о девайсе
zairkz отреагировал Равиль Зарипов (ZuBy) за вопрос
Обновленная версия, кое что подправил теперь нет ошибки на IOS 64 bit результат (Android, IPhone 4S, IPhone 6, MacOS Yosemite на виртуалке, Windows 10) Добавлена функция isGPSActive [ANDROID], определяет включен ли сенсор на устройстве DeviceInfo.zip1 балл -
Если есть возможность в мобильной версии форума "Последние темы" поднять в начало страницы. Думаю дл многих актуально...1 балл
-
1 балл
-
Честно говоря, никогда не разбирался с AES'ом. Я раньше юзал ГОСТ 28147-89. Сам его реализовал на делфях со вставками асемблера, ибо без него скорость шифрования и расшифрования была катастрафически мала(со вставками скорость выросла на 2 или 3 порядка, точно не помню). Результат всегда получался одинаковый при шифровании одного и того же содержимого и одного и того же ключа. Что там в этом AES'е х... фиг его знает.1 балл
-
Помнится я целый день на гугл потратил в поисках этого... А насчет того что быстрей срабатывает чем установлен таймаут, что-то тут не то, я ради интереса засекал сегодня, отрабатывает четко по таймауту.1 балл