Спасибо за ответ!
Цитата:
Если стоит задача реализации расписания в естественном виде, под такую задачу не стыдно и собственный компонент написать. Боюсь, что доработка грида костылями по сложности приблизится к разработке своего компонента.
|
использую zColorStringGrid, мне нравится (
http://avemey.com/zcolorstringgrid/z...hp#tmergecells)
Цитата:
Предполагаю, что ты взялся (или тебя заставили) за "малую автоматизацию", -- мол, тыжпрограммист, напиши нам что-нибудь по-быстрому. Задача быстро вышла из-под контроля, поскольку на деле простой не является. Теперь придется из тыжпрограммиста становиться программистом, по-другому никак
|
Предположение в общих чертах верно, только все норм работает, из под контроля не вышло.
Но вот есть свербящее понимание, что ООП там и не пахнет и всякого рода костыли присутствуют, хоть и работает все и руководство довольно.
Соответственно, смысл темы наверное больше для понимания ООП в этой задаче, в котором я, к сожалению, тугой (это мысли вслух)
Вот, например, есть идея уйти от привязки к содержимому ячейки (сейчас вся нужная инфа содержится в строке ячейки), так как лучше использовать номер не как набор цифр и букв-идентификаторов, а просто цифры - инкремент в БД, но тогда будет невозможно "говорить" гриду, чтоб он покрасил ту или иную ячейку в зависимости от вида работ. А сама идея - это использовать двумерные массивы, в которых позиции соответствуют позициям ячейки в StringGrid, а значение равно номеру заявки. Тогда можно будет выводить хоть пустую ячейку, но любого цвета - в OnDrawCell перебирать все строки и столбцы и, если они равны элементу в массиве, заливать другим цветом. Или это бред все?
На счет ООП, заполнение грида разбито на пару функций, заполняющих его. А вот редактирование, создание, чтение заявки думаю сделать с передачей параметров в другую форму, по типу как messageDlg. Но вот только та вторая форма не будет возвращать результат в первую, т.к. влияет непосредственно на данные в БД. При ее закрытии будет просто обновляться первая. Ведь я верно мыслю? Почему-то возникают трудности при разбитии "линейки" на объекты(