Перейти к содержанию
Fire Monkey от А до Я

Владимир Б.

Пользователи
  • Постов

    11
  • Зарегистрирован

  • Посещение

  • Победитель дней

    5

Активность репутации

  1. Like
    Владимир Б. получил реакцию от Ingalime в TMemo для вывода лога тормозит   
    Первая тестовая версия в виде компонента: https://github.com/ange007/TLogViewer
    Изменения по сравнению с изначальной версией: 
    Параметры строки: сообщение, ссылка (для перехода при двойном клике), стиль, цвет Добавлено выделение "от и до" при помощи Shift мышкой Добавлена смена строк с клавиатуры (вверх, вниз) Добавление строк списком (правда пока без стилизации и ссылок) Ну и по мелочи в связи с переводом в компонент Чего нет но надо-бы:
    Выделение через Ctrl (по одному) Выделение "от и до" при помощи Shift с клавиатуры Расширение функциональности меню Хранение в каком-то виде "удалённых" в связи с "заполнением буфера" пунктов, с дальнейшим повторным отображением при необходимости Многострочный текст
  2. Like
    Владимир Б. получил реакцию от gonzales в TMemo для вывода лога тормозит   
    Подготовил за пол часа реализацию с цветом и стилем строки.
    Правда поменял форматирование кода под то которое мне удобней и понятней.

    FastMemo.zip
     
  3. Like
    Владимир Б. получил реакцию от Шамсуддин в 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/

  4. Like
    Владимир Б. получил реакцию от #WAMACO в 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/

  5. Like
    Владимир Б. получил реакцию от Евгений Корепов в 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/

  6. Like
    Владимир Б. получил реакцию от Ingalime в TInstructor - Step-By-Step инструкция   
    А вот этого не знаю. Делал под десктопное приложение.
    И то, сейчас столкнулся с багами которые вылезли на рабочем приложении (с расчётом положения контрола), сейчас исправляю.
     
    UPD: Обновил
  7. Like
    Владимир Б. получил реакцию от qz5 в 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/

  8. Like
    Владимир Б. получил реакцию от Ingalime в 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/

  9. Like
    Владимир Б. отреагировална dnekrasov в Символ шрифта с иконками вместо картинки на кнопке   
    Механизм, который позволяет использовать иконку символьного шрифта вместо картинки на кнопках.
    Уж очень мне не нравится стандартный механизм добавления картинки на кнопку, поэтому, пару лет назад, начал искать альтернативу и остановился на символьных шрифтах (таких как FontAwesome). Вот что из этого получилось:

    IconicFontGlyph.zip 
    Под Windows работает без проблем - на других системах не пробовал.
    Как это работает
    Добавляем в проект модуль UIExt.IconicFont.pas Добавляем в проект модули описания шрифтов, которые будут использоваться (см. ниже) Описываем символ, который будет использоваться в качестве иконки (см. ниже) В обработчике  события OnApplyStyleLookup кнопки пишем одну строчку - TIconicFont.ApplyButtonStyle(TCustomButton(Sender)); Модули описания шрифтов
    UIExt.IconicFont.FA.pas -  Font Awesome UIExt.IconicFont.IM.pas - IcoMoon UIExt.IconicFont.IML.pas - IcoMoon Lindua UIExt.IconicFont.IMLN.pas - IcoMoon Linear UIExt.IconicFont.MDI.pas - Material Design Icons UIExt.IconicFont.WHHG.pas - WebHostingHub Glyphs Описание символа
    Для описания символа используется свойство StyleName (не знаю как остальные - лично я его нигде не использую). Само описание - это строка в определённом формате:
    [Короткое имя шрифта];[код символа];[размер шрифта];[цвет]
    2 первых поля - обязательны. Короткое имя шрифта можно увидеть в его модуле описания (TIconicFont.Short)
    Примеры можно увидеть на скриншотах выше (текст над кнопками).
    Ну и напоследок - небольшая демка IconicFontDemo.zip
  10. Like
    Владимир Б. получил реакцию от #WAMACO в TMemo для вывода лога тормозит   
    Подготовил за пол часа реализацию с цветом и стилем строки.
    Правда поменял форматирование кода под то которое мне удобней и понятней.

    FastMemo.zip
     
  11. Thanks
    Владимир Б. отреагировална slav_z в TMemo для вывода лога тормозит   
    выделение только построчное (одна строка или несколько). Выделение по символам - это сложнее. тоже можно, но в 100$ не влезет. посмотрите во вложении EXE. если устроит, то выложу исходники (лично или прям сюда) и только потом 100$ если все устроит. если не устроит - тогда все отдам бесплатно (сюда).
     
    Использование:
     
    unit Unit1; interface uses System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants, FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.Controls.Presentation, FMX.StdCtrls, Frame.Log; type TForm5 = class(TForm) LogFrame1: TLogFrame; Button1: TButton; Button2: TButton; Button3: TButton; Button4: TButton; procedure Button1Click(Sender: TObject); procedure FormCreate(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Button4Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form5: TForm5; implementation {$R *.fmx} procedure TForm5.FormCreate(Sender: TObject); begin LogFrame1.ReleasedItems:=False; // не удалять "старые" строки end; procedure TForm5.Button2Click(Sender: TObject); begin LogFrame1.Add('One item'); LogFrame1.ScrollTo(MaxInt); end; procedure TForm5.Button3Click(Sender: TObject); begin LogFrame1.Clear; end; procedure TForm5.Button4Click(Sender: TObject); begin LogFrame1.CopyToClipboard; end; procedure TForm5.Button1Click(Sender: TObject); var I: Integer; begin LogFrame1.BeginUpdate; try for I:=0 to 100000 do LogFrame1.Add('Item '+I.ToString); finally LogFrame1.EndUpdate; end; LogFrame1.ScrollTo(MaxInt); end; end.  
    LogViewExe.zip
  12. Thanks
    Владимир Б. отреагировална Nick Peterson в TMemo для вывода лога тормозит   
    Спасибо @slav_z за идею, чуть допилил выделение и контекстное меню, еще бы прикрутить CTRL-C грамотно:) Впрочем уже и так отлично
    FastMemo.zip
  13. Like
    Владимир Б. получил реакцию от dnekrasov в Custom Font   
    В комплект к данному решению для Windows отлично подходит: https://github.com/TheOriginalBytePlayer/FireMonkey-Fonts , для загрузки шрифта из ресурсов.
    Так как решения для iOS и Android этого хорошо, только вот у Windows не меньше проблем с загрузкой шрифтов (их нужно принудительно ставить в систему, что не очень то и хорошо).
    Я почему-то было решил (исходя из написанного - "достаточно установить шрифт") - что RAD сам упакует использованные шрифты, но специально проверил - это не так. Начал искать решение, а оказывается у FMX есть свои нюансы по этому поводу.
    Решил поделиться найденным, может кому будет полезно.
  14. Thanks
    Владимир Б. получил реакцию от #WAMACO в Custom Font   
    В комплект к данному решению для Windows отлично подходит: https://github.com/TheOriginalBytePlayer/FireMonkey-Fonts , для загрузки шрифта из ресурсов.
    Так как решения для iOS и Android этого хорошо, только вот у Windows не меньше проблем с загрузкой шрифтов (их нужно принудительно ставить в систему, что не очень то и хорошо).
    Я почему-то было решил (исходя из написанного - "достаточно установить шрифт") - что RAD сам упакует использованные шрифты, но специально проверил - это не так. Начал искать решение, а оказывается у FMX есть свои нюансы по этому поводу.
    Решил поделиться найденным, может кому будет полезно.
×
×
  • Создать...