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

Winexcel

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

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

  • Посещение

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

  1. Like
    Winexcel отреагировална Равиль Зарипов (ZuBy) в Несколько окон приложения в панели задач[2]   
    На форуме работает упоминание @AlexG
  2. Like
    Winexcel отреагировална Maximus в Разница в вызовах Synchronize   
    http://docwiki.embarcadero.com/Libraries/Tokyo/en/System.Classes.TThread.Synchronize
    Судя по документации, если передать первым параметром поток, то в дальнейшем в основном потоке можно будет определить какой из дополнительных потоков вызвал метод. Если это не требуется, то можно ничего не передавать.
  3. Like
    Winexcel отреагировална kami в Разница в вызовах Synchronize   
    Разница есть. И она не только в вызове Synchronize, но и Queue.
    Указание потока в качестве источника метода синхронизации позволяет вам впоследствии сделать TThread.RemoveQueuedEvents(myThread) перед его удалением.
    Вызов RemoveQueuedEvents необходим, если в синхронизируемых методах может идти обращение к полям и методам уничтожаемого потока. Потому что с удалением потока то, что подлежало синхронизации, никуда не пропадет, а раз поток уже не существует - у вас вылезет AV на ровном месте. Или же ваш код испортит чью-то память, что еще труднее отловить.
  4. Like
    Winexcel отреагировална Vitaldj в Встреча в Питере!   
    Уважаемые коллеги, 5-го октября 2017 года, в славном городе Санкт-Питербурге состоится встреча ценителей FMX и нашего любимого форума fire-monkey.ru. Встреча будет ближе к 20-00, место пока не определено. Кто точно знает, что появиться, отпишитесь, от этого зависит место (много или мало народу будет).
  5. Like
    Winexcel отреагировална Дмитрий Ш. в Разный цвет текста   
    как-то так

  6. Like
    Winexcel отреагировална enatechno в Выравнивание текста внутри динамического Label   
    LabelG.StyledSettings := []; ... LabelG.TextSettings.HorzAlign := TTextAlign.Center; with LabelG do - не нужен
  7. Like
    Winexcel отреагировална enatechno в TListBox аналог PullToRefresh   
  8. Like
    Winexcel отреагировална Brovin Yaroslav в Как определить, что ListBox прокручен в самый конец?   
    Добрый день,
     
    Определить, что TListBox (TScrollBox) прокручен до конца можно используя событие OnViewPortPositionChange. Это событие вызывается каждый раз при прокручивании контента. Этот метод возвращает текущее положение ViewPort - позиция окна, в котором отображаются текущие элементы TListBox. Об этом подробно описано в этой статье: "Платформонезависимый скроллинг в Fire Monkey"
     
    Ниже приведен код, который проверяет, что TListBox прокручен до конца.
    procedure TForm1.ListBox1ViewportPositionChange(Sender: TObject; const OldViewportPosition, NewViewportPosition: TPointF; const ContentSizeChanged: Boolean); begin if NewViewportPosition.Y > ListBox1.ContentBounds.Height - ListBox1.Height then ShowMessage('End!'); end;
  9. Like
    Winexcel отреагировална dnekrasov в Горизонтальный скроллбар в TTreeView   
    Чтобы просто избавиться от горизонтального скроллбара нужно обработать событие OnCalcContentBounds. Что-то типа этого:
    procedure TMainForm.TreeView1CalcContentBounds(Sender: TObject; var ContentBounds: TRectF); begin ContentBounds.Width := TreeView1.Content.BoundsRect.Width; // Нужно учесть еще и ширину вертикального скроллбара end;  
  10. Like
    Winexcel отреагировална krapotkin в Как определить язык системы в Win10 ?   
    https://msdn.microsoft.com/ru-ru/library/windows/desktop/dd318123(v=vs.85).aspx
    ?
     
  11. Like
    Winexcel отреагировална Камышев Александр в DealLock или что сделать чтобы его получить   
    deadlock? - легко:
    TCriticalSection *cs = new TCriticalSection(); cs->Enter(); cs->Enter();
  12. Like
    Winexcel отреагировална Maximus в DealLock или что сделать чтобы его получить   
    Во-первых ни в коем случае нельзя обращаться к визуальным компонентам напрямую без синхронизации, да и вообще к любым разделяемым ресурсам. Во-вторых deadlock в FMX ничем не отличается от deadlock на VCL или на WinAPI, почитать можно здесь http://forum.vingrad.ru/topic-60076.html
    Конкретно в приведённом примере достаточно обернуть изменение метки в Synchronize
    TThread.Synchronize(nil, procedure begin Form4.Label1.Text:=i.ToString; end); и после запуска потока вызывать MyThread.WaitFor; - получите deadlock.
  13. Like
    Winexcel отреагировална Alexander в Получить список элементов которые сейчас видны   
    Y1 :=ListBox1.AniCalculations.ViewportPosition.Y; Y2 := ListBox1.AniCalculations.ViewportPosition.Y + ListBox1.Height; for I := 0 to ListBox1.Count-1 do if ListBox1.ListItems[i].IsVisible then if (ListBox1.ListItems[i].Position.Y>=Y1) and (ListBox1.ListItems[i].Position.Y<=Y2) then Caption := Caption +'|'+ IntToStr(i); Альтернативный вариант с уточнением
  14. Like
    Winexcel отреагировална krapotkin в Получить список элементов которые сейчас видны   
    думаю, подойдет
    a:=lst1.ItemByPoint(10,0);
    b:=lst1.ItemByPoint(10,lst1.height);
     
  15. Like
    Winexcel отреагировална dnekrasov в Запретить выходить за пределы родителя   
    EqualRect(Control1.BoundsRect.Intersect(Control2.BoundsRect), Control2.BoundsRect) Если True, то Control2 не вышел за пределы Control1, иначе - вышел
  16. Like
    Winexcel отреагировална krapotkin в AniИндикатор на винде   
    вот там и посмотреть. делаем edit custom style, находим там элемени ANI. у него есть свойство AnimationBitmap. Двойной клик. Там есть кнопки Load и Save
     
  17. Like
    Winexcel отреагировална Равиль Зарипов (ZuBy) в AniИндикатор на винде   
    да, сделайте стиль по аналогии с родным.
    N'ое кол-во кадров/картинок которые будут меняться по кругу
  18. Like
    Winexcel отреагировална bigjorj в FastReport с поддержкой Tokyo и без кнопки печати   
    Знаете что действительно смешно? 
    То что мой тикет #415831 в вашей поддержке висит с 25 января 2017, 13:00
    И ни одна душа даже не попыталась на него среагировать. На кой черт я покупал спрашивается FMX версию.
    FMX версия вообще не работает со встроенными в отчет FDQuery. Не возможно указать параметры запроса, нельзя связать запросы. 
  19. Like
    Winexcel отреагировална Maximus в Запретить выходить за пределы родителя   
    Вы же знаете длину и ширину своего "потомка", учитывайте её при проверке и всё.
  20. Like
    Winexcel отреагировална enatechno в Вставка стиля   
    Я так понимаю, Вы имели ввиду FindAndCloneStyleResource? Этот метод не возвращает копию стиля. Он возвращает копию объекта(элемента) стиля.
    Например,  если Вы хотите напрямую изменить элемент стиля (например цвет фона кнопки), то делаете:
     
    AObject := Button1.FindStyleResource('background'); if (AObject is TRectangle) then TRectangle(AObject).Fill.Color := TAlphaColorRec.Aqua; И Button1 изменит цвет.
    Но, если после этого сделать Layout1.AddObject(AObject); то кнопка Button1  не будет больше иметь элемент 'background', родителем этого объекта станет Layout1. 

     Что касается
    AObject := Button1.FindStyleResource('background', True); if AObject <> nil then Layout1.AddObject(AObject); или
    if Button1.FindAndCloneStyleResource('background', AObject) then Layout1.AddObject(AObject); то вы просто создаете новый объект AObject типа TRectangle со всеми свойствами как у стилевого элемента 'background', за исключением StyleName (у вновь созданного AObject будет  StyleName = ''). В нашем примере этот новый объект (TRectangle) будет помещен на Layout1. При этом 'background' кнопки не изменится.
     
  21. Like
    Winexcel отреагировална enatechno в [TPopupMenu] Можно ли стилизовать background у TPopupMenu?   
    В папке C:\Users\Public\Documents\Embarcadero\Studio\<версия>\Styles лежат файлы стилей.
    Вам надо смотреть в этой папке файлы *.style. Загрузите любой из них в StyleBook.
    Обычно стиль контрола имеет название <имя класса без Т>+'style'. Например editstyle, buttonstyle. Но есть и исключения из правил, как например <menu...>, но их тоже не сложно найти.
    Прямо в StyleBook вы можете менять параметры объектов стиля и смотреть, как они влияют на внешний вид контролов.

    И кстати, если делаете кроссплатформенный проект, учтите что TPopupMenu используется только в десктопных приложениях.
  22. Like
    Winexcel отреагировална enatechno в [TPopupMenu] Можно ли стилизовать background у TPopupMenu?   
    Можно. Стиль называется menuviewstyle.
     
  23. Like
    Winexcel отреагировална AngryOwl в Локализация приложений   
    Друзья!
    Я тут в одной теме выложил юнит для локализации приложений и демо-пример к нему, а также приложение облегчающее создание и редактирование ресурсов для локализации (файлов с переводами на разные языки).
    Потом подумал - может стоит вынести это в отдельную тему?
    Данная проблема (локализации приложений) возникла уже давно. На заре XE2. Потом были все версии, вплоть до текущей. Но лично меня текущие решения так и не  устраивали. Мне нужно было простое и удобное редактирование сразу всех языков приложения, и чтобы быстро работало.
    Тогда и были созданы этот юнит и приложения, с которыми я решил с вами поделиться. Создано это было для себя, для упрощения локализации собственных приложений. Поэтому никакой "красоты" кода прошу не искать - ее там нет. Местами вообще кому-то покажется "кривым"... )
    Очень жаль, что у меня критически мало времени для общения на данном ресурсе, а потому я в некотором смысле извиняюсь - мог бы выложить этот код давно.
    Тем-более, что он очень простой. Все что в нем используется, и как используется, думаю, всем будет доступно и понятно.
     
    Итак.
    Приложение Test_Translator - это дело пример с, непосредственно, самим юнитом uTranslatorFM.pas
    В uTranslatorFM.pas вы увидите, что локализация осуществлена за счет использования INI-файлов, а сам "перевод" осуществляется простым перебором компонент на форме.
    Стоит отметить, что перевод осуществляется использованием свойства компонент HelpContext (integer), а у компонент, что не имеют этого свойства - используется свойство Tag.
    На первый взгляд может показаться неудобным. А если приложение большое - что-то может забыться. Однако, лично я очень быстро привык к такому использованию. И поверьте  - приложение, в котором я использую этот юнит, очень большое! )))
    Кроме того, если есть компоненты, которые не имеют этих свойств, или которые могут менять значение перевода самостоятельно, либо могут быть динамическими - можно использовать нулевой HelpContext, но при этом придавать им значения "вручную".
    Например: если требуется у компонента TLabel динамически менять значение в ходе выполнения программы, подставляя нужные "подстроки" (грубо - используя, например, Format(...)), то можно написать в программе
    Label1.Text := Format( AppTranslator.GetValue(_код_, _значение_по_умолчанию_), [_подставляемое_значение_]); где
    _код_ - это значение, которое будет считываться из INI-файла (например 100)
    _значение_по_умолчанию_ - значение строки по умолчанию, на тот случай, если данный текст отсутствует в INI-файле, или файла с таким переводом не существует (этот параметр не обязателен)
    _подставляемое_значение_ - в данном случае это просто пример, допустим - ход выполнения процесса (например 85%)
    А строка в INI-файле может быть такая:
    (файл lang.ru)
    100=Процесс выполнения %d%%
    (файл lang.en)
    100=The progress %d%%
    и также другие языки.
    Думаю тут, в примере, все элементарно и понятно.
    Все работает на любой платформе!
    Как вы будете подключать файлы к приложению - ваше дело. Можно скачивать с инета, можно встроить в качестве ресурсов, задеплоить в проект и т.д.
    Лично я встраиваю в качестве ресурсов (Win) и деплою (Mac и Android). У меня свои причины и аргументы.
    Файлы:
    Lang.ru
    Lang.en
    и другие, это INI-файлы соответствующих переводов где строки с переводами имеют одинаковые индексы
    LangList.ini - вспомогательный файл (разберетесь))
    language.rc - файл для создания ресурса (Win)
     
    С приложением SLLanguage все немного и сложнее и проще, одновременно...
    Не вижу смысла его описывать - оно просто позволяет редактировать описанные выше ресурсы (файлы языков).
    Часть его кода откуда-то позаимствовано (не помню уже).
     
    Для чего все это я отдельно решил написать, в отдельную тему?
    Предлагаю всем пользоваться данным кодом - кому как заблагорассудится! Исправлять, дополнять и делится мыслями и идеями.
    Возможно кто-то решит создать компонент.
    Ну вот вроде все, друзья!
    Если что - спрашивайте! Отвечу по мере возможности.
    P.S. К модераторам - поправьте, если что, - вдруг не в ту тему закинул.
    SLLanguage.zip
    Test_Translator.zip
    P.P.S. Забыл уточнить - дело-пример делал под XE10, а приложение для создания ресурсов под XE7. Не сложно поправить - кому под что нужно.
  24. Like
    Winexcel отреагировална AliZairov в CrossVCL Beta XE3-Berlin   
    Hi. New tools for Delphi IDE. Using CrossVcl you focus only on your VCL application and CrossVcl makes it cross-platform.
    This is beta software only for testing purpose. CrossVcl on early stage of development, what are to test in this release:

    * Installation process (CrossVcl creates copy and patches existing on your machine Vcl and Rtl sources, all original sources stay unmodified)
    * Upgrading simple or new Vcl project to macOS (Right Click on Project in Project Inspector)
    * Compilation and deploying of simple project

    Please do not create bug-report if you can't compile or launch big Vcl projects or any third-party controls at this stage.

    Bug reports and suggestions welcome at:
    https://bitbucket.org/crossvcl/crossvcl/issues

    We help you on:
    http://stackoverflow.com/questions/tagged/crossvcl

    Google+:
    https://plus.google.com/109334532832375082802

    Facebook:
    https://www.facebook.com/crossvcl

    Twitter:
    https://twitter.com/VclCross
    Home
  25. Like
    Winexcel отреагировална Равиль Зарипов (ZuBy) в Редактирование FMX.Platform.Win   
    да, иначе компилятор берет dcu, а не pas файл
×
×
  • Создать...