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

Копирование Grid на другую форму


POV

Вопрос

Опубликовано (изменено)

Вот есть грид.. мееееленько он так отображён. Если пользователю хочется увидеть его поширше, я грид показываю на другой форме. 

Копирование объектов - тема сама по себе довольно занимательная в каждом языке, но как скопировать хотя бы ячейки? Настройки уж бог бы с ними, заранее грид настроил.

Руками поячеечно, конечно, сделал, но может какой Assign поможет? Я не нашел как автоматически перенести текст во второй грид. Он ж и  по-быстрее будет, оптимизированнее.

Изменено пользователем POV

Рекомендуемые сообщения

  • 0
Опубликовано (изменено)

по-хорошему, это вообще неправильно от слова совсем

нужно иметь модель данных и процедуру отрисовки этой модели в грид

это не так уж и сложно, а проблем с выводом чего угодно куда попало нет и не может быть

Изменено пользователем krapotkin
  • 0
Опубликовано

 

21 минуту назад, krapotkin сказал:

нужно иметь модель данных и процедуру отрисовки этой модели в грид

"В общем и целом" это верно. Но тут всё крайне просто - лишь отображалка лога. Нет смысла тратить силы на "правильное"

  • 0
Опубликовано
38 минут назад, POV сказал:

лишь отображалка лога.

Так сделайте метод, который будет принимать в качестве параметра грид и "запихивать" туда содержимое лога. И после этого хоть 10 гридов заводите.

  • 0
Опубликовано
В 30.07.2016 в 13:52, kami сказал:

Так сделайте метод, который будет принимать в качестве параметра грид и "запихивать" туда содержимое лога. И после этого хоть 10 гридов заводите.

Так и сделал сразу. Но захотел чтобы за меня было что-то сделано )))

  • 0
Опубликовано (изменено)

Можно попробовать через TMemoryStream. В FMX я не пробовал грид копировать (да и в VCL с большими данными тоже). Но вообще с компонентами попроще такой трюк работает. Например я частенько использую его для сохранения настроек в базе данных (в BLOB).

Алгоритм примерно такой:

в первой форме делаем

var MS: TMemoryStream;

MS.WriteComponent(Grid);

Потом передаем этот stream во вторую форму, а там делаем

MS.Position := 0;

MS.ReadComponent(Grid).

При этом гриды в обоих формах должны существовать. Просто все свойства и данные из первой, скопируются во вторую. 

Но вообще, как уже заметили, 1000 строк это уже как то много. Тут либо надо кеширование придумать, что бы одновременно в таблице было не больше строк чем помещается на экран, а остальные подгружались по мере прокрутки. Либо, что намного проще, использовать базу данных. 

 

Изменено пользователем DirtyBorov
  • 0
Опубликовано (изменено)

Это уже много строчек и нет оптимизации на уровне реализации компонента.

Дав и интересно же какого рожна копирование хотя бы части данных по Assign не работает от слова совсем.

 

Собссно вопрос был не как реализовать, это я и сам умею, а как  сделать так чтобы совсем ничего не делать, а оно работало.

Изменено пользователем POV
  • 0
Опубликовано
12 часов назад, POV сказал:

Собссно вопрос был не как реализовать, это я и сам умею, а как  сделать так чтобы совсем ничего не делать, а оно работало.

Думаю так не получится. Как правило "что бы оно само работало" это типовые, универсальные решения, которые в целом работают, но в силу универсальности работают не очень хорошо. Именно потому чаще всего для конкретной задачи приходится брать "напильник" и затачивать под свои нужды.

  • 0
Опубликовано

Жаль если так.. современные фраемворки приучили к мысли "все придумано за нас". Как только возникает у меня вопрос типа заданного, я бью себя по рукам чтобы самом тривиальщину не писать и лезу в инет.. Почти всегда оказывается что многое уже встроено и можно сосредоточиться на оригинальном наполнении проекта... заодно исключаются косяки при смене версии и т.п.

  • 0
Опубликовано

FMX еще довольно молодой фремворк. Тут порой не хватает самых элементарных вещей. Как вариант вы можете создать на Github нужную вам либу, наверняка это может еще кому то пригодится. Совместными усилиями можно создать отличную вещь. Ну а что бы не быть зависимым от версии - пишите абстрактный код. Не надо привязываться к конкретному компоненту. 

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...