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

krapotkin

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

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

  • Посещение

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

    210

Весь контент krapotkin

  1. Ну, во-первых этот форум к разработчикам имеет ровно никакое отношение Во-вторых, вы вообще о чем? Что это за компонент?
  2. записывает ссылку на себя в эту переменную. в целом, более удачным видится создание не панелей а фреймов, хотя, возможно, в вашем примере это лишь заглушка. еще: как-то так сложилась практика, что владельцем создаваемых компонентов является форма или фрейм, а не Application. это логично, потому что компоненты уничтожаются вместе с формой, на которой размещены. Именно за это отвечает параметр Owner.
  3. думаю, что более правильно один из двух вариантов 1) вообще не создавать переменную. в onClose просто делать Free 2) созданной форме вешать на OnClose обработчик и там делать проверку ModalResult , так же как реализовано в TDialogService.MessageDialog
  4. Это называется UX - сценарий использования пользователем вашей программы. Собственно, сначала придумывается из головы UX, а только потом пишется программа. Так что это к вам вопрос - что делать с уже введенными данными С точки зрения программирования нужно всего лишь SelectedList.Clear(); UpdateLabels();
  5. Я не использую liveBindings в проектах, потому что не люблю, когда нет никакого контроля, только какая-то магия. Но никто не мешает вам как и раньше брать текст из ListViewItem Label1.text := ListView ListItems[SelectedList[1]].Text
  6. я не знаю, откуда вы берете текст, который размещается в ListView но он же должен где-то храниться вот оттуда его берём в методе UpdateLabels TForm3 = class(TForm) ... SelectedList : TList<integer>; ... end; ........ procedure TForm3.FormCreate(Sender : TObject); begin SelectedList := TList<integer>.Create; end; procedure TForm3.FormDestroy(Sender : TObject); begin FreeAndNil(SelectedList); end; procedure TForm3.ListView1ItemClick(const Sender: TObject; const AItem: TListViewItem); begin if SelectedList.Count = 2 then exit; case Selected Count of 0 : begin SelectedList.Add(AItem.Index); UpdateLabels(); end; 1 : begin if SelectedList[0] <> AItem.Index then SelectedList.Add(AItem.Index); UpdateLabels(); end; end; end; procedure TForm3.UpdateLabels(); begin if SelectedList.Count > 0 then label1.text := varIDontKnowWhereYourTextStored[ SelectedList[0] ] else label1.text := ''; if SelectedList.Count > 1 then label2.text := varIDontKnowWhereYourTextStored[ SelectedList[1] ] else label2.text := ''; end;
  7. Вот! Теперь я понял. Чуть позже отвечу ) И действительно, ListView тут ни при чем.
  8. я все равно не понимаю, что должно происходить. Какой сценарий работы по шагам?
  9. нет. никто понятия не имеет, что и как и правильно ли у вас отображается. может у вас ошибки в совсем других местах "Я хотел бы отобразить значение или (текст) содержимое TListViewItem внутри тегов TLabels образом, чтобы содержимое первой метки не могло быть одинаковым." Одинаковым с чем?? перечитаем задачу. Даже если посмотреть на картинки и ваш код, ничего не понятно. Кликнуть вы можете по одной строке ListView. Допустим, текст, который в этой строке, вы хотите разместить в Label1. А откуда берется текст в Label2 ??? Если текст1 = 'XYZ' то добавьте к нему A и в Label2 запишите 'XYZA'. Вполне совпадает с заданным вами условием. Попробуйте еще раз, на общечеловеческом языке объяснить, чего вы хотели-то ?
  10. опустили палец - запомнили координату Y двигаем палец - сравниваем с исходной, рисуем там, где палец подняли палец - выставляем панель либо в верхнее положение, либо в нижнее. лучше с анимацией
  11. а представьте, что нет никаких Label или ListView а есть три переменных. в одной значение, в двух других - что-то там чтоб не повторялось это можете написать?
  12. в связи с полным несовпадением концепции и большей части компонентов это возможно только для программ уровня пара кнопок на форме а их и так несложно перевести практика говорит о том, что проще и лучше банально начинать с нуля по прототипу. как говорила моя начальница - когда делаешь работу во второй раз, это происходит в два раза быстрее.
  13. т.е. выходит, что если будет два приложения, написанных на FMX, то непонятно, какое из них запустится??
  14. тоже мучился с Edge. в частности, выяснил, что на фрейме с прозрачным фоном WebBrowser тоже прозрачный проверьте, может подойдет
  15. ну вообще говоря, вы не только текст выводите, но и знаете, по каким координатам он должен быть кроме того, я предположил, что все эти региончики выводятся отдельно а не просто нарисованы на одной картинке в частности, я исходил из, того, что просто статическая картинка обычно никому не нужна, иначе что мешает вам нарисовать циферки прямо на нее изначально? вот и выходит, что есть какие-то данные о регионе, его контуре и месте на карте, что является моделью данных для этого приложения следовательно, следующий вопрос тут будет - а как определить, что курсор находится над заданным регионом. и вот тут вариант с TImage сразу начнет обрастать условиями. Если сделать там Stretch, то масштаб он подберет самостоятельно, и узнать координатки после масштабирования затруднительно поэтому для этой (гипотетической) задачи придется опять же все делать самому и выводить на битмап с масштабом. а уж битмап хоть на Image в режиме original, хоть на paintbox - не суть важно. Главное то, что вы на каждое движение мыши будете бегать по модели данных и проверять, не попал ли курсор в один из регионов.
  16. не надо сравнивать VCL и FMX. VCL и прозрачную картинку-то вывести не может, о чем речь вообще в FMX все рисуется на одном Canvas. В VCL - бОльшая часть компонентов имеет свое окно в ОС. поэтому подходы к рисованию абсолютно разные. если у вас есть компоненты - вы можете рисовать ими, но компонентов для сложных деталек у вас нет (можно порисовать SVG в Graphics.TPath, но это на любителя) поэтому берете модель данных, отрисовываете ее на битмап. в том числе текст. битмап выводите на PaintBox или TImage, пофиг. получившийся код будет даже короче чем разбрасывание компонентов. да еще сможет поддерживать масштабирование, чего от компонентов добиться сложновато
  17. не нужно на форме рисовать либо сначала взять скриншот формы, нарисовать на нем, и отрисовать обратно
  18. с одной стороны, все можно, с другой - здесь форум по FMX вопросы по VCL тут не очень уместны. на cyberforum например напишите, там есть по delphi раздел
  19. Раньше трава как известно была зеленее. Сейчас же для скролла нужно неожиданно использовать скроллбокс.
  20. Не знаю, как там vkbdhelper, но это точно работает: https://docwiki.embarcadero.com/CodeExamples/Sydney/en/FMX.ScrollableForm_Sample
  21. когда появился этот синтаксис, андроида не было даже в самых радужных мечтах нельзя использовать средства работы с файлами из этого тысячелетия ? System.IOUtils.TFile например и не забыть кодировку указать UTF8
  22. Потому что текст итема тоже задан компонентом и его нужно найти и сделать ему Margin либо сделать то же самое - полностью забить на то что там уже есть, оставить их пустыми и сделать все компоненты свои, в коде и по мне так это самое быстрое и самое управляемое решение ))
  23. у старших Canon доступен SDK. там все это можно сделать лет 6-7 назад я делал такое. но исходники там для #, поэтому придется немного попереводить. про остальные не слышал.
  24. без конкретики вряд ли кто поможет чудес не бывает же, нужно смотреть код
  25. я для себя решил вопрос очень просто - вставил свои компоненты в итем и весь функционал доступен
×
×
  • Создать...