6 / 6 / 0
Регистрация: 05.10.2019
Сообщений: 300

Добавить компоненты за компонентами; удалить первые компоненты, вторые встанут на его место и т.д

07.02.2020, 20:40. Показов 2408. Ответов 16
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем Hi
Есть ScrollBox, на нём расположены компоненты, скажем в ряд. Есть две кнопки, Добавить и Удалить.
При нажатии на кнопку Добавить, добавляются компоненты в ряд, в ScrollBox. Если ещё раз нажать на кнопку добавить, то добавится второй ряд компонент, расположение которых точно под первым рядом. Я хотела бы добавлять и третий ряд, и четвёртый и т.д. хотя бы 10 рядов, но тяжело каждый раз писать расположение компонент (top, left). Кроме того, когда галочкой выбираю первый ряд компонент и нажимаю на кнопку удалить, второй ряд должен принять расположение первого, ну и другие ряды, если есть, должны упорядочиться.
Ситуацию осложняет то, что один из компонент в ряду, это Memo. Если в Memo появляется вторая строка, третья и т.д., то высота компонент в ряду увеличивается, соответственно всё другие ряды должны учитывать это, и опять есть удаление и т.д.

Если меня кто нибудь понял, помогите это сделать. Проект в приложении.
Не ругайтесь пожалуйста
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
07.02.2020, 20:40
Ответы с готовыми решениями:

Создать файл с компонентами целыми числами, заменить значение последней компоненты файла на значение первой его компоненты
Создать файл, компоненты (количество <=7) которого являются целыми числами. После создания файла заменить значение последней компоненты...

Заменить значение первой компоненты типизированного файла на значение последней его компоненты
Создать файл, компоненты (количество <=7) которого являются целыми числами. После создания файла заменить значение первой компоненты файла...

Заменить значение последней компоненты файла на значение первой его компоненты
Создать файл, компоненты (количество <=7) которого являются целыми числами. После создания файла заменить значение последней компоненты...

16
Модератор
4138 / 2351 / 809
Регистрация: 15.11.2015
Сообщений: 9,396
07.02.2020, 20:48
LSvetlana, приложения нет почему-то.

Зачем каждый раз писать координаты вручную? У компонентов есть замечательные свойства Left, Top, Width, Height, и ещё есть циклы, и есть списки объектов. Соединить всё это вместе и будет хорошо.
0
6 / 6 / 0
Регистрация: 05.10.2019
Сообщений: 300
07.02.2020, 20:50  [ТС]
Цитата Сообщение от AzAtom Посмотреть сообщение
приложения нет почему-то.
Забыла выложить проект
Вложения
Тип файла: rar Добавление всяких штучек.rar (58.9 Кб, 2 просмотров)
0
Модератор
4138 / 2351 / 809
Регистрация: 15.11.2015
Сообщений: 9,396
07.02.2020, 20:57
Да тут просто показ и скрытие компонентов, а я думал, создание новых элементов.
Чтобы не мучиться долго, можно каждый набор компонентов посадить на отдельную панель, получится 3 панели, и потом прятать и показывать нужные панели, а компоненты на панели уже будут автоматом показываться и прятаться.
0
6 / 6 / 0
Регистрация: 05.10.2019
Сообщений: 300
07.02.2020, 21:13  [ТС]
Цитата Сообщение от AzAtom Посмотреть сообщение
приложения нет почему-то.
Цитата Сообщение от AzAtom Посмотреть сообщение
Да тут просто показ и скрытие компонентов, а я думал, создание новых элементов.
Чтобы не мучиться долго, можно каждый набор компонентов посадить на отдельную панель, получится 3 панели, и потом прятать и показывать нужные панели, а компоненты на панели уже будут автоматом показываться и прятаться.
Получается мне надо всё равно описывать позицию для каждой панели? Ещё же из за Memo высота компонент будет меняться.

Добавили 3 ряда компонент

---------------
1111111111111
2222222222222
3333333333333

Удаляем 1,

---------------
2222222222222
3333333333333

Добавляем 1

---------------
2222222222222
3333333333333
1111111111111

Увеличиваем высоту компонент 2, из за того что в memo уже две строки

---------------
2222222222222
2222222222222
3333333333333
1111111111111

Вот что то такое хочу получить
У меня в голове то, что надо менять Left, Top, Width, Height... А если у меня будет 10 рядов это же сколько комбинаций надо
0
Почетный модератор
 Аватар для Puporev
64314 / 47610 / 32743
Регистрация: 18.05.2008
Сообщений: 115,167
08.02.2020, 07:43
Цитата Сообщение от LSvetlana Посмотреть сообщение
Увеличиваем высоту компонент 2, из за того что в memo уже две строки
Установите постоянную высоту мемо и вертикальный скроллбар
Delphi
1
ScrollBars:=ssVertical;
0
Модератор
4138 / 2351 / 809
Регистрация: 15.11.2015
Сообщений: 9,396
08.02.2020, 09:51
LSvetlana, не могу посмотреть сам проект - нормально не открывается в XE3 из-за отсутствия компонента TDBComboBoxEh. Приложи скриншот, как это должно выглядеть без Memo и с добавленным Memo.
0
1076 / 989 / 340
Регистрация: 07.08.2012
Сообщений: 2,790
08.02.2020, 10:22
LSvetlana, а если так (в прицепе ехе, который показывает как), без окаянного количества компонентов, без проблем, связанных с этим количеством и их размещением?
Миниатюры
Добавить компоненты за компонентами; удалить первые компоненты, вторые встанут на его место и т.д  
Вложения
Тип файла: zip LSvetlana_exe.zip (3.79 Мб, 5 просмотров)
1
Модератор
4138 / 2351 / 809
Регистрация: 15.11.2015
Сообщений: 9,396
08.02.2020, 10:26
Цитата Сообщение от LSvetlana Посмотреть сообщение
Получается мне надо всё равно описывать позицию для каждой панели? Ещё же из за Memo высота компонент будет меняться.
Ну при разработке один раз устанавливается высота панелей с учётом высоты входящих в неё компонентов, а потом при изменении видимости просто передвигаются автоматически.

Если нужно просто по очереди добавлять и убирать панели, то можно вот так очень просто: во вложени.
Вложения
Тип файла: rar PanelsHideShow.rar (87.5 Кб, 5 просмотров)
1
6 / 6 / 0
Регистрация: 05.10.2019
Сообщений: 300
09.02.2020, 22:47  [ТС]
Цитата Сообщение от Puporev Посмотреть сообщение
Установите постоянную высоту мемо и вертикальный скроллбар
Hi, я думала сначала сделать именно так, потом мне показалось что так будет вообще не очень красиво

Добавлено через 7 минут
Цитата Сообщение от AzAtom Посмотреть сообщение
LSvetlana, не могу посмотреть сам проект - нормально не открывается в XE3 из-за отсутствия компонента TDBComboBoxEh. Приложи скриншот, как это должно выглядеть без Memo и с добавленным Memo.
Hi , завтра приложу, но вообще это должно быть так как на Screen'e в сообщении № 9 от Скандербег, у него ещё там приложение прикреплено. Но там должно быть Memo, самое крайнее поле (справа).

Добавлено через 2 минуты
Цитата Сообщение от Скандербег Посмотреть сообщение
LSvetlana, а если так (в прицепе ехе, который показывает как), без окаянного количества компонентов, без проблем, связанных с этим количеством и их размещением?
Hi , да, очень похоже, только там вот нужно чтобы было поле Memo, самое крайнее поле (справа).
0
1076 / 989 / 340
Регистрация: 07.08.2012
Сообщений: 2,790
09.02.2020, 22:58
Цитата Сообщение от LSvetlana Посмотреть сообщение
только там вот нужно чтобы было поле Memo, самое крайнее поле (справа)
А на приведенной картинке поле справа не похоже на memo?
И тогда чем отличается поле в приведенном примере, где текст размещен в несколько строк и компонент memo, где текст так же может размещаться в несколько строк?
0
6 / 6 / 0
Регистрация: 05.10.2019
Сообщений: 300
09.02.2020, 23:07  [ТС]
Цитата Сообщение от AzAtom Посмотреть сообщение
Ну при разработке один раз устанавливается высота панелей с учётом высоты входящих в неё компонентов, а потом при изменении видимости просто передвигаются автоматически.
Если нужно просто по очереди добавлять и убирать панели, то можно вот так очень просто: во вложени.
, ну как я уже подчеркнула, нужно что то, так как на Screen'e в сообщении № 9 от Скандербег.
Вообще если это делать так, как делала я, в самом начале (первое сообщение), то просто нужно учесть все положения рядов компонент, которые они могут принять (в моём случае это свойство Top). Ну при учёте всех положений, нужно не забывать, что, если меняется высота строк (из за Memo, а это нужно), то координаты рядов компонент должны тоже меняться Я подумала что для двух рядов это можно сделать, посидеть пару дней, подумать все варианты, а вот если мне нужно больше рядов, 3, или 8, то вот тут уже начинаются трудности, потому что можно запутаться
Я вот пробую сейчас это сделать с панелями, посмотрим как себя будут вести компоненты

Добавлено через 6 минут
Цитата Сообщение от Скандербег Посмотреть сообщение
А на приведенной картинке поле справа не похоже на memo?
И тогда чем отличается поле в приведенном примере, где текст размещен в несколько строк и компонент memo, где текст так же может размещаться в несколько строк?
На приведенной картинке всё пишешь в одну строку, только после нажатия Enter (окончания редактирования), текст становится "много-строчным", оставаясь по своей сути одно-строчным . Например в Memo можно придерживаться определённого форматирования, и в реальном времени смотреть, какой текст будет по окончанию редактирования.

P.S это всё равно что набирать текст для листа формата А4 в одно-строчном редакторе, который потом на выходе трансформируется в много-строчный текст, и в итоге не будет приличного формата текста
0
1076 / 989 / 340
Регистрация: 07.08.2012
Сообщений: 2,790
09.02.2020, 23:14
LSvetlana, а почему такая обязательная упёртость в нагромождение компонентов?
В моем предложении проблем, практически, нет - ничего не надо вычислять, гадать как они себя поведут.
А "сборник" компонентов при их размещении из-за этого мемо, скорее всего, будет мало презентабельным и сложным в управлении.
Миниатюры
Добавить компоненты за компонентами; удалить первые компоненты, вторые встанут на его место и т.д  
0
1076 / 989 / 340
Регистрация: 07.08.2012
Сообщений: 2,790
09.02.2020, 23:16
Цитата Сообщение от LSvetlana Посмотреть сообщение
Например в Memo можно придерживаться определённого форматирования, и в реальном времени смотреть, какой текст будет по окончанию редактирования.
Ну, что же, хозяин - барин. Коль так надо, то удачи.

Кстати, можно добавить, что если мемо будет иметь определенную высоту (а по-другому вначале ввода текста не получится), то мы опять же упремся в то же самое - невозможность "форматирования в реяльном времени". А потом высоту мемо придется подгонять под количество строк текста, или как сказано выше, использовать вертикальный скорллбар.
0
 Аватар для Пытливый
3763 / 2267 / 705
Регистрация: 29.05.2013
Сообщений: 9,622
10.02.2020, 01:01
Лучший ответ Сообщение было отмечено LSvetlana как решение

Решение

Судя по изначальному описанию задачи, можно было воспользоваться TFlowPanel, но вот есть ли он в той версии Delphi которую использует автор темы?
1
6 / 6 / 0
Регистрация: 05.10.2019
Сообщений: 300
10.02.2020, 15:50  [ТС]
Цитата Сообщение от Пытливый Посмотреть сообщение
Судя по изначальному описанию задачи, можно было воспользоваться TFlowPanel, но вот есть ли он в той версии Delphi которую использует автор темы?
Hi , спасибо, сейчас попробую плавающую панель
0
6 / 6 / 0
Регистрация: 05.10.2019
Сообщений: 300
11.02.2020, 22:06  [ТС]
Всем Hi
Всем спасибо, Пытливый, Ваш совет мне помог, спасибо за помощь.
AzAtom, Puporev, Скандербег спасибо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
11.02.2020, 22:06
Помогаю со студенческими работами здесь

Как поставить QuickReport для Builder 2007 и добавить его в компоненты на панель
Ребят, подскажите пожалуйста как поставить QuickReport для 2007 Билдере, ну и добавить его в компоненты на панель, очень надо( в...

Нетипизированные файлы: После создания файла заменить значение последней компоненты файла на значение первой его компоненты
Создать файл, компоненты (количество <=7) которого являются целыми числами. После создания файла заменить значение последней компоненты...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Опции темы

Новые блоги и статьи
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru