Страницы: 1
RSS
Визуальное отображение графика событий за большой период вркмени, позиционирование Label на Frame по клеточкам?
 
Добрый день!

Никак не могу выровнять по ширине динамически созданные лэйблы на форме. Уже перепробовал много вариантов, но всё равно не получается. Подробности во вложении. Прошу помочь, у кого какие идеи по этому поводу? Заранее спасибо.


Скрытый текст
 
Почему нельзя создать сразу? Да и нужно ли столько? Для чего это?
Вариант самый надежный - не создавать элементы динамически )
 
Цитата
vikttur написал:
Почему нельзя создать сразу?
Создавать это на форме сразу нереально. Есть, конечно, вариант - реализовать всё это на листе. Сейчас именно так и сделано. Даты прописаны заранее на три года и потом уже вносится нужная инфа. Но хочу усовершенствовать функционал, чтобы можно было на лету менять периоды, обновлять всё на основании подгруженной инфы из внешнего файла и применять прочие тонкие настройки. Рисовать на форме, мне кажется, более удачной идеей, чем на листе.
 
Цитата
Nik021 написал: усовершенствовать функционал
Непонятно, что усвершенствовать... Накидали надписей - дальше что?
 
понимаете, если подойти к решению философски,
то в форме имеющей конечные габариты (размеры) невозможно разместить "бесконечно много" Лэйблов (помнитемы решили подойти философски, так вот "бесконечно много" - это какое-то конечное число, но достаточно большое, чтобы они перестали умещаться на форме)

может достаточно разместить десяток?
рядом разместить Спинер и увеличивая, уменьшая значение Спинера, в названных выше 10 Леблах показывать очередные 10 значений?

продолжим логические размышления и сложим все эти значения в ОДИН Листбокс будем листать его вверх-вниз и просматривать теперь уже условные значения Лейблов
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Ігор Гончаренко, на данном этапе углублюсь в подробности своей общей задачи.

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



Цитата

в форме имеющей конечные габариты (размеры) невозможно разместить "бесконечно много" Лэйблов
Меня удивляет, что я не могу разместить даже десяток лэйблов, они всё равно криво встают.
Изменено: Nik021 - 13.03.2019 00:22:37
 
1. Лейблы встают криво не сами по себе, а потому что их кто-то так ставит
2. По задумке - пользователь ткнул мышью в какое-то собитие, всплыла форма, зачем в этой форме нужны ВСЕ ЛЕЙБЛЫ???, если пользователь ткнул в одно конкретное событие, вот его и покажите, вот с ним одним и разберитесь
удачи!
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Игорь, вопрос "наоборот" - автор сначала рисует форму, потом из формы вызов желаемых действий над событиями.

Варианты:
1. ListBox со списком дата/критерий/событие. Двойной клик по записи...
2. Почти то же, но с выбором периода дат и с десятком столбцов в  ListBox (критерий/столбцы с датами и событиями)
3. Такой же  ListBox + SpinButton, добавляющий/убирающий по 10 дней (задает начальную дату для отобажения в ListBox)
4. Ваш урезанный вариант: фильтрация по периоду, критерию и вывод информации на десяток "столбцов".
5. Ваш урезанный со SpinButton...

Для показаной выше визуализации больше подходит последний вариант. Это можно реализовать на листе без дополнтельной мороки с перерисовкой Label - диапазон ячеек, несколько формул, условное фоматирование, использование собылий листа.
 
Столько вариантов, что я уже запутался)
Короче. Для меня важно, чтобы была возможность наглядно видеть события, самый удачный вариант, считаю, когда события расположены на пересечении оси Y - Критерии(еще могут быть подкритерии) и оси X - даты. Так проще видеть картину в целом, планировать события, отслеживать, какие события пересекаются по датам, проще видеть то, что было раньше и что сейчас. ListBox тут не прокатит.

Такой график можно разместить на листе или на форме.

На листе уже пробовал. Вариант простой, но для формирования событий тоже нужно совершать определенные телодвижения, это очистка диапазонов, форматирование, объединения ячеек и тд. К этому варианту и склонюсь, если не найду решение с формой.

Ну и вариант с формой пытаюсь реализовать сейчас. Застопорился на том, что не могу ровно разместить десяток лэйблов (подробности в первом посте). Даже если уберу фоновое изображение с Frame в виде сетки, то неровное расположение лэйблов также будет бросаться в глаза.
И если лэйблы с датами я могу заранее разместить вручную в количестве штук 20-30, то мне всё равно придется каким-то образом определять значение Left для динамически сформированных лэйблов (событий).  
 
Цитата
Nik021 написал: На листе уже пробовал. Вариант простой, но для формирования событий тоже нужно совершать определенные телодвижения, это очистка диапазонов, форматирование, объединения ячеек и тд. К этому варианту и склонюсь, если не найду решение с формой.
Можно 'тыкать' в ячейки на листе и по этому событию вызывать форму с подробностями этого события
Согласие есть продукт при полном непротивлении сторон
 
Цитата
Sanja написал:
подробностями
Александр, конечно можно. Но сейчас речь про то, как сформировать этот самый график событий, с которым можно работать.
 
поищите по форуму Диаграмма Ганта
примеров много
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Ігор Гончаренко, нашел пару(1,2) обучающих статей и другие темы. Вообще не то, что мне нужно. Разве что с серьезной доработкой, но мы тогда опять вернемся откуда начали.

Изначально задавал вопрос по лэйблам. Судя по тому, как все старательно обходят эту тему, можно сделать вывод, что задача нереализуема.
 
ссылка Вы поиском пользоваться пробовали?
 
жмите F9
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Ігор Гончаренко, ранее я написал, что мне нужно, также написал, что форумные варианты Диаграммы Ганта, как и все прочие, мне не подходят и вы мне отправляете пример Диаграммы Ганта. Буду работать над собой, чтобы быть более понятным для окружающих.

Во вложении отправляю демку с ограниченным функционалом, если кому любопытно.

Скрытый текст
Изменено: Nik021 - 12.03.2019 22:53:00
 
Цитата
Anchoret написал:
ссылка  Вы поиском пользоваться пробовали?
Я не знаю как правильно сформулировать свой запрос для поисковика.
Пример по ссылке, к сожалению, мне не подходит, т.к. там демонстрируется обычное создание listBox с присвоением нужных параметров. Я делаю практически тоже самое, но получается каша (подробнее в первом посте). По задумке расстояние между ListBox должно быть 1 пиксель, но по факту этот отступ всегда разный.
 
как только станете понятным хоть кому-нибудь, возможно именно он Вам и поможет
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Заменил название.

Выполнял в декабре работу по созданию графика производства (изготовление и сборка). График на листе.
Три просчитываемых столбца - продолжительность, дата-время начала и окончания.
В правой части 248 столбцов для графика (3 месяца, день разбит на 4 периода). В отдельной ячейке задаем дату начала графика. Т.е. строить график можно с любой даты и на статичное количество дат.

Сам код показать не могу - работа заказная, да и сложнее Вашей, долго чистить.
Общая обрисовка: исходные в массив, расчет даты начала и окончания, потом поиск диапазона в графике (если даты есть - пишем в ячейку что-либо, заливка - УФ). В Вашем случае в одной строке нужно отображать множество особытий - это неважно, хоть сотня...
При изменении даты начала графика или исходных данных автоматом все пересчитать. Выделение или двойной клик по ячейке графика - и заходим в просмотр или редактирование события
картинка
 
Всем спасибо!

Сделаю задуманное - выложу, посмотрим..
Страницы: 1
Наверх