Таблица лидеров


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

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

  1. 10 баллов
    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.
  2. 8 баллов
  3. 2 балла
    Все ваши проблемы решаются добавлением трех строчек в код: Перед началом работы, сразу задаем количество строк Memo.Lines.Capacity:=1000000; Мемо сразу зарезервирует в своем TStringList нужный объем. Это позволит сократить накладные расходы на добавление в несколько раз. Перед добавлением строк в Memo обязательно делаем Memo.BeginUpdate; Это отключит перерисовку и другие операции. После добавления строк в Memo обязательно делаем Memo.EndUpdate; Это отрисует все изменения которые мы произвели. Вот итоговый код (в форме еще глобальный счетчик FLinesCounter : Integer;): procedure TForm1.FormCreate(Sender: TObject); Var I : Integer; begin Memo.Lines.Capacity:=1000000; Timer.Interval:=10; FLinesCounter:=1; Memo.BeginUpdate; for I := 1 to 10000 do begin Memo.Lines.Add('Это тест ' + FLinesCounter.ToString); Inc(FLinesCounter); end; Memo.EndUpdate; end; procedure TForm1.Button1Click(Sender: TObject); begin Timer.Enabled:=True; end; procedure TForm1.Log(const AMessage : String); const ConsMaxLogSize = 50000; begin Memo.BeginUpdate; // while Memo.Lines.Count > ConsMaxLogSize do // Memo.Lines.Delete(0); Memo.Lines.Add(AMessage); Memo.GoToTextEnd; Memo.EndUpdate; end; procedure TForm1.TimerTimer(Sender: TObject); begin Log('Это тест ' + FLinesCounter.ToString); Inc(FLinesCounter); end; Код добавляет в Мемо 10 тысяч строк за примерно пол секунды. И добавление по таймеру 100 строк в секунду отнимает примерно 0% процессорного времени. Все будет работать без тормозов до разумного предела, при очень больший количествах строк вы столкнетесь с тормозами выделения памяти приложению, тут нужно будет использовать иные механизмы.
  4. 2 балла
  5. 2 балла
    Brovin Yaroslav

    С днем рождения Андрей Ефимов 🎂🎂🎂

    Хочу от всей души поздравить с днем рождения нашего модератора Андрея Ефимова @Andrey Efimov. Человек, на которого можно положиться и который всегда готов прийти на помощь. Из года в год помогает нашему форуму становиться лучше. С днем рождения! Успехов тебе в работе, в личных делах. И не забывать про Делфи!
  6. 2 балла
    TMediaPlayer в android и ios вообще никогда стабильно не работал, и targetSDK тут даже не причем. Он кривой сам по себе изначально, смиритесь. Стабильное решение медиаплейера есть в библиотеке alcinoe, но там поддерживается пока только tokyo, поддержка rio будет позже.
  7. 1 балл
    Серия статей с пошаговой инструкцией, как подключить и настроить Android, OS X, iOS Simulator, iOS для работы с RAD Studio. Как настроить Android и RAD Studio XE7 (Delphi, C++ Builder) http://habrahabr.ru/company/delphi/blog/253929/ Как настроить Mac OS X, iOS-симулятор и RAD Studio XE8 (Delphi, C++ Builder) http://habrahabr.ru/company/delphi/blog/255721/ Как настроить iOS-устройство и RAD Studio XE8 (Delphi, C++ Builder) http://habrahabr.ru/company/delphi/blog/265313/
  8. 1 балл
    slav_z

    Как сделать буквы разного цвета?

    http://fire-monkey.ru/topic/5437-работа-с-атрибутами-текста/
  9. 1 балл
    slav_z

    TMemo для вывода лога тормозит

    возьмите TVertScrollBox, положите в него TLayout (align=top) храните строки в TStringList, вычисляйте высоту TLayout при добавлении строк. на событие TLayout.OnPaint рисуйте нужный диапазон строк (Canvas.FillText) опираясь на позицию Viewport скроллбокса. все будет летать.
  10. 1 балл
    создаю несколько локальных уведомлений с периодом вывода в минуту, всё ОК, выводятся. При попытке отменить их всех, отменяется только созданное первым, остальные продолжают выводиться и ничего уже с этим не поделать, отменить далее их невозможно. Поимённая отмена NotificationCenter1.CancelNotification(имя напоминания) тоже не действует. Погуглив наткнулся на пост, размещённый более года назад: https://stackoverflow.com/questions/34719635/delphi-tnotificationcenter-multiple-repeating-notifications-has-unexpected-behav С тех пор много воды утекло, не нашли ли нормального лекарства от этого глюка? Может что делаю не так? Кстати, там и решение предложено и оно работает https://github.com/dangas56/SendCancelNotification/blob/master/System.Android.Notification.pas Просто не верится что до сих пор приходится переписывать самим внутренние файлы.
  11. 1 балл
    Nick Peterson

    TMemo для вывода лога тормозит

    Благодарю! Стало чуть понятнее - если добавлять 1 строку без Memo.BeginUpdate; из-за какого-то другого бага FMX в процедуре TStyledMemo.DoViewportPositionChange ContentSizeChanged выставлялся в TRUE, даже если фактические размеры не менялись. Из-за этого запускался цикл if ContentSizeChanged then begin for I := 0 to FLineObjects.Count - 1 do begin Line := FLineObjects[I]; if Line.Layout <> nil then FLineObjects.UpdateLayoutParams(Line.Layout); Line.InvalidateSize; end; FLineObjects.RenderLayouts; end приводящий к фризам. Если делать Memo.BeginUpdate, этого не происходит; увидеть фризы, о которых я говорю, можно растягивая форму с Memo.Align = Bottom. Теперь к вопросу ЦПУ: Ваш пример в работе на 1-ядерной виртуалке На домашнем компе с GlobalUseDirect2D := false; Прикладываю архив с тестовым проектом, кому интересно поиграться :) MemoSpeedTest.zip
  12. 1 балл
    Nick Peterson

    TMemo для вывода лога тормозит

    мой скрин как бы показывает обратное два приложения, два одинаковых таймера (100мс в данном случае) на добавление строки. Одна и та же машина (2х ядерная виртуалка). 1 скрин FMX приложение, второй VCL 1 потребляет 30-50% CPU второй 6-8% Мне нужен след. функционал: текст, являющийся логом и позволяющий промотать хоть немного вверх и скопировать любую.часть себя. Сейчас я ограничил до 300 строк, и с учетом убирания вот этого кода фризы ушли. Юзеры конечно недовольны, что для просмотра остального надо жать дополнительные кнопки.. Позвольте пока считать вопрос открытым, может у кого есть на примере компонент или идеи с функционалом , описанным выше
  13. 1 балл
    Maka

    Перезапись файлов

    Самым простым решением оказалось исправление файла System.StartUpCopy. Там комментариями разработчики явно указали, где код отвечающий за перезапись
  14. 1 балл
    sinuke

    Перезапись файлов

    Разместитеи их в ресурсы проекта. В приложении в какой-нибудь файлик записывайте версию приложения при последнем запуске. При старте приложения проверяй записанную версию и текущую. Если расходятся - проверяйте файлы и обновляете их ресурсов. Имхо
  15. 1 балл
    Nick Peterson

    TMemo для вывода лога тормозит

    специально же приписал в конце, зачем:)) Вопрос конечно же не в том, "как сделать TMemo на 100 000 строк" Вопрос в том, почему TMemo на 100 000 строк так сильно лагает. TMemo на 1000 стрк тоже лагает, просто не так сильно, чтобы показать это наглядно на скрине, я не знаю как наглядно аргументировать пост на форуме "TMemo на 1000 строк лагает". В приложении это чувствуется по отзывчивости UI как микрофризы. Они частично лечатся выкидыванием кода как на скрине выше. Именно с этими микрофризами я пытаюсь бороться, при этом сохранив возможность видеть лог в виде текста (почему не в БД? потому что запись в БД ведется параллельно, она не лагает и с ней вопросов нет. Но нужно еще и дать пользователю видеть все последние события и иметь возможноть отмотать выше на N-Ное время для сравнения, и вот в этой части как раз вопросы есть). А вот мемо на 100 000 лагает так, что это прекрасно видно на графике загрузки ЦПУ, я считаю что это не нормально, поскольку такое же видновое мемо ведет себя совершенно иначе. Значит, это возможно , парням из майкрософта удалось это сделать!:)) Интересно, как...
  16. 1 балл
    POV

    TMemo для вывода лога тормозит

    А зачем мемо на 100 тысяч строк? Ты их глазами будет просматривать? А что если ПО крэшнется? Логгируй БД - событие обычно редки, не затормозит ничего, всегда можно поднять последние события. Я вот с unidac так делал - прекрасно шуршало. Да, думаю, и access не сильно тормознёт от вывода одной строки изредка.
  17. 1 балл
    Реализация VCL procedure TTimer.UpdateTimer; begin KillTimer(FWindowHandle, 1); if (FInterval <> 0) and FEnabled and Assigned(FOnTimer) then if SetTimer(FWindowHandle, 1, FInterval, nil) = 0 then raise EOutOfResources.Create(SNoTimers); end; В FMX иначе, интересно, почему так? есть какая то причина, или просто поленились дописать? procedure TTimer.UpdateTimer; begin {...} FTimerHandle := FPlatformTimer.CreateTimer(FInterval, Timer); if FTimerHandle = 0 then FEnabled := False; // Упс.. таймер просто молча сдохнет)) и будешь гадать что случилось с приложением, почему оно "зависло" end;
  18. 1 балл
    d7d1cd

    Ошибка компиляции под Андроид

    Решение найдено тут.
  19. 1 балл
    jornada

    Доступ к Yandex.Disk

    Лучше поздно, чем никогда) Например так // RESTRequest1.AddFile(FileName); AStream := TMemoryStream.Create(); AStream.LoadFromFile('D:\1.mp4'); RESTRequest1.AddBody(AStream, ctVIDEO_MP4);
  20. 1 балл
    krapotkin

    Размеры TPanel

    во время FormCreate еще не определены размеры лучше в OnShow, или OnResize
  21. 1 балл
    krapotkin

    Выполнение операции после скрытия меню

    есть более интересный и по-мне, более правильный способ по нажатию в меню не сразу выполняете что-то, а ЗАПИСЫВАЕТЕ действие, которое ВЫПОЛНИТСЯ по событию закрытия мультивью тогда реакция наступает визуально правильная и дальше крутите колеса, запускайте потоки и все такое
  22. 1 балл
    Задачу решил. Вот измененная процедура, ну и добавил вытягивание параметра sound private Builder buildNotification(String msgTitle, String msgText, String msgSound, PendingIntent contentIntent) { int icon = this.mContext.getApplicationContext().getApplicationInfo().icon; Builder mBuilder = new Builder(this.mContext); mBuilder.setSmallIcon(icon); mBuilder.setTicker(msgTitle); mBuilder.setContentTitle(msgTitle); mBuilder.setContentText(msgText); mBuilder.setContentIntent(contentIntent); // savage if (msgSound == "") { mBuilder.setSound(RingtoneManager.getDefaultUri(2)); } else { mBuilder.setSound(Uri.parse("android.resource://" + this.mContext.getPackageName() + "/raw/"+msgSound)); } // return mBuilder; } Звуковой файл надо добавить в Deployment Расположение res/raw/ При формировании push-сообщения имя файла указывается без расширения. К примеру, если звуковой файл был event1.mp3, то в пуше посылаем "sound":"event1" Во вложении патченый файл. Сборка fmx.jar и classes.dex как в этой теме NotificationPublisher.zip
  23. 1 балл
    Равиль Зарипов (ZuBy)

    StatusBar Color

    Шаблон для проектов с покраской статус бара для мобильных платформ UPDATE: StatusBarColor.7z UPDATE2: StatusBarColor_update.zip
  24. 1 балл
    Давно хотел обсудить качественно про установку... Все что вы выложили(без обид) годиться судентам..да и то у них нифига не получиться ). Опишу что действительно надо пиплам: Ведро. 1. Установка делфи БЕЗ галочек дроида (профи все так делают). СДК и НДК надо качать отдельно по уму... 2. Описать каждое поле в настройках начиная от zipalign и ВСЕ и ИМЕННО ВСЕ строчки что они значат!!! Такого нигде нет...и многие как котята слепые разрабатывают на авось. Ну ведро куда нишло...а вот ИОС ИОС. 1. Как ставить через вируалку (не фиг людям впаривать маки). У меня на виртуалке... 2. Как импортировать сертификаты через сайт, т.е. сначала там сгенерить... и т.п. вот это будет действ полезно.
  25. 1 балл
    Brovin Yaroslav

    Как сделать буквы разного цвета?

    Добрый вечер, Такую надпись можно решить несколькими способами в зависимости от дополнительных условий: Будет ли меняться текст надписи или нет? В зависимости от этого есть четыре решения: I. Текст надписи не допускает изменений В этом случае проще всего сделать картинку с этим текстом и использовать ее в вашем приложении. Где нужно отобразить, использовать TImage. II. Текст надписи может изменяться Тут два решения: 1. Используем набор TText или TLabel. Для отображения групп последовательных символов одного цвета используем отдельный контрол TLabel или TText. Каждую группу раскрашиваем требуемым образом через настройки контролов. На скриншотах ниже, я использовал контейнер TLayout и складываю туда несколько объектов TText с выравниванием по левому краю. 2. Рисовать надпись вручную с использование TTextLayout. Этот способ сложнее, но зато универсальнее и эффективнее. Используя TTextLayout по очереди отрисовываем все буквы с нужными цветами и параметрами. 3. На основе решения 2 в этой части, сделать свой компонент.
Эта таблица лидеров рассчитана в Москва/GMT+03:00