|
|
|
Grids
|
|||
|---|---|---|---|
|
#18+
Народ, кто -нибудь реализовывал самостоятельно гриды? И как вы к этому относитесь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.10.2003, 14:14 |
|
||
|
Grids
|
|||
|---|---|---|---|
|
#18+
КРАЙНЕ ПОЛОЖИТЕЛЬНО!!! имею несчастье использовать в своем проекте MFC грид с codeproject. такое кривописье еще поискать... короче начинал я грид раза 3, обламывался, там как минимум 5-7 чел/мес чистой работы, вот если бы с кем-то... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.10.2003, 14:37 |
|
||
|
Grids
|
|||
|---|---|---|---|
|
#18+
Брат, давай я те пришлю маааленький такой пректик, ты заценишь и скажешь что об этом думаешь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.10.2003, 16:49 |
|
||
|
Grids
|
|||
|---|---|---|---|
|
#18+
и мне :-) я тоже не прчь свой грид забабахать, потихоньку двигаюсь в этом направлении(ну очень потихоньку). у меня такая мысль о гриде: грид сам по себе рисует только рамку, строки, столбцы и ячейки. строки и столбцы рисуют свои линии образуя сетку и рисуют скроллбары. ячейки - это список обячеек. каждая ячейка самостоятельно себя рисует там где она должна быть. тоесть типа как в экселе. ну и плюс возможность редактирования различных типов данных в различных форматах. ну и плюс печать. что скажете? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.10.2003, 17:45 |
|
||
|
Grids
|
|||
|---|---|---|---|
|
#18+
Лично я всегда использую наследника стандартного CListCtrl с расширенными стилями типа LVS_EX_GRIDLINES в режиме виртуального списка. Пока ни разу не обламывался, чего и всем желаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.10.2003, 17:47 |
|
||
|
Grids
|
|||
|---|---|---|---|
|
#18+
2 alex_k Мыслишь очень-очень верно... Я короче выложу исходники своего творчества, а вы скажете кому что не нравится.... договорились? всё буит завтра... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.10.2003, 18:01 |
|
||
|
Grids
|
|||
|---|---|---|---|
|
#18+
давай! прикол 2 alex_k да, примерно... я сразу разрабатывал 3 класса в иерархии: 1. Берет сообщения виндоуз и преобразует их в вызов виртуальных функций, отвечает за "диспечерезацию", вызов прорисовки, "таскание" хедеров и пр. Класс большей частью виртуальный, все остальное ему подают наследники... давай код, если что - можно попробовать на какой-нить CVS забабахать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.10.2003, 02:02 |
|
||
|
Grids
|
|||
|---|---|---|---|
|
#18+
2 vdimas Я тебе бросил на мыло... свой сайт... не знаю успею ли доделать сегодня... с регистрацией DNS заморочка... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.10.2003, 10:53 |
|
||
|
Grids
|
|||
|---|---|---|---|
|
#18+
2 vdimas ну что? не посмотрел еще? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.10.2003, 12:24 |
|
||
|
Grids
|
|||
|---|---|---|---|
|
#18+
2 vdimas куда ж ты пропал? ни ответа ни привета мой ICQ: 233710174 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.10.2003, 17:26 |
|
||
|
Grids
|
|||
|---|---|---|---|
|
#18+
куда ж ты пропал? ни ответа ни привета сорри, во-первых - разница во времени, во-вторых - делал срочную демонстрашку на C#, домой доехал только в 2 ночи, посмотрю сегодня обязательно, уже кое-что меня там прикололо... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2003, 01:08 |
|
||
|
Grids
|
|||
|---|---|---|---|
|
#18+
так, все ясно,\r сходи плиз по этой ссылке\r прикол?\r \r я ту либу начал разрабатывать именно для того, чтобы грид на ней сделать \r \r делать его на MFC - себя не уважать\r \r в промежуточных результатах я продвинулся чуть дальше, ты дальше в работающем прототипе, похвально\r \r если есть столько энергии и времени, могу свою либу закинуть для затравки,\r у меня, к сожалению, времени в обрез в последнее время, максимум могу 1 час в день этим заниматься, но оно того стоит, надеюсь, что немного погодя (в начале декабря) появиться чуть больше времени\r \r смотрю все чаще народ от MFC и ATL отходит, пральна ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2003, 01:28 |
|
||
|
Grids
|
|||
|---|---|---|---|
|
#18+
2 vdimas А вообще, есть какие-то конкретные замечания? Вообще когда я это всё делал, то основывался на следующих идеях: 1) У каждого окна есть длинное целое, поторое может служить указателем на класс, который обслуживает данное окно, и доступно через SetWindowLong GWL_USERDATA 2) Всё что я получу должно быть независимо от каких либо библиотек типа MFC/WTL/Qt т.е. быть самодостаточным.Т.е. Их можно будет встроить в любой проект. 3) Какждый контрол должен быть максимально интеллектуальным, т.е. сам обрабатывать/сохранять свои данные а не передавать эти функции родительскому окну, т.е. не использовать DDX 4) Интерфейс классов должен быть максимально простым (максимум 20 виртуальных методов) Что касается грида - то он должен использовать стандартные контейнеры, которые имеются в STL- простой массив, vector,deque. грид должен реализовываться через шаблон: UIGrid<someclass,long cnt=0> theGrid; где someclass - нечто производное от UIRow , которое имеет вирт метод Draw(UIDraw& draw) что и как рисовать - передается по ссылке через структуру UIDraw по-иоему всё достаточно просто. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2003, 10:11 |
|
||
|
Grids
|
|||
|---|---|---|---|
|
#18+
дайте мне посмотреть :-) где someclass - нечто производное от UIRow , которое имеет вирт метод а может не строку а ячейку? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2003, 21:53 |
|
||
|
Grids
|
|||
|---|---|---|---|
|
#18+
действительно просто, замечания есть 1. что-то грид себя ведет не очень :) 2. ничего страшного, если виртуальных методов будет больше 3. подход, мягко говоря, "в лоб" 4. модель грида представляю себе сложнее, как минимум надо отделить: - сам грид - источник данных - продумать систему событий, причем "человеческую", а не через сообщения Windows или только лишь через виртуальные функции обычно я делю классы/компоненты по следующему признаку: - те, которые легко и быстро разработаны, но трудны и не гибки в использовании - те, которые достаточно сложны по внутренней архитектуре, но удобны для использования "клиентом" класса/компонента. ---- Что подразумевает под собой разработка своей GUI-либы, как минимум: #1 управление потоками, т.к. все события на конкретное окно приходят только в рамках того потока, в котором это окно было создано, #2 из #1 вытекает необходимость разработки (раз уж на то пошло) всей "обвески" для управления процессами, потоками, памятью, событиями, синхронизацией, task-ами, таймерами и т.д. и т.п. #3 достаточная объектная модель визуальных компонентов, надо отходить от понятия "окно" (UIWindow) и переходить к более абстрактным Control->ControlContainer->Form->MDIMainForm и т.д. Почему? Хотя бы потому, чтобы иметь одну и ту же объектную модель для обычного контрола и window-less контрола. #4 обработка сообщений Windows, у тебя все на этом построено, а я это прячу в одном из базовых классов, т.е. ты можешь свой некий класс (своя кнопка, к примеру), унаследовать как от обычного контрола, так и от Window-less контрола, что позволит тебе легко и единообразно разработывать сложные GUI элементы #5 независимость от MFC/ALT/WTL - гут! но надо продумать схему взаимодействия с другими окнами для этих ситуаций #6 нужна своя модель для графических ресурсов и систему слежения за этими ресурсами Когда я говорил о том, что достиг больше промежуточных результатов, то имел ввиду, что пп1-6 уже реализованы в разной мере, но до готового грида я пока не дошел :), вот если бы за деньги заказали, а так я "наваливаюсь" разве что периодически из интереса да и дело не только в гриде, своей целью ставлю разработать вообще всю палитру контролов, т.к. стандартные или идущие с IE ну ни как не удовлетворяют. (эхххх, голубая мечта... тьфу, не в том смысле ) Я уже делал подобную попытку, послал свой материал на рассмотрение некоторым товарищам, но, похоже ни у них ни у меня нет достаточного свободного времени заниматься этим. Если у тебя есть время и силы на эксперименты, с удовольствуем помогу, блин, просто не хватает человека, который бы этим занимался все время. К тому же, надеюсь (почти уверен), что к этому делу с удовольствием присоединятся еще несколько человек. :) --- Повторюсь, в любом случае - похвально, хотя и бажит :) Есть желание повторить на чуть более серьезном уровне? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2003, 23:56 |
|
||
|
Grids
|
|||
|---|---|---|---|
|
#18+
2 alex_k мыло то оставь) мой - fouga@progress-neva.ru ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2003, 10:45 |
|
||
|
Grids
|
|||
|---|---|---|---|
|
#18+
2 vdimas На счет свободного времени - у меня его тоже не очень.. занимаюсь "этим" разве что по выходным и по вечерам когда силы остаются. 2 alex_k >где someclass - нечто производное от UIRow , которое имеет вирт метод а может не строку а ячейку? Знаешь, я сначала тоже думал что нужно плясать от ячейки, но потом понял - это тупиковый вариант. Получается в конце концов, что каждая ячейка должна быть производной от какого-то базового класса. Типов ячеек - может быть мульён. Вот например: 1) данные в ячейке должны быть представлены определенной bmp 2) данные в ячейке не просто строка - а несколько строк например:сумма в рублях/ сумма в валюте Попробуй такую фигню реализовать на стандартных гридах? может быть и сможешь, но во что тебе это станет? 2) vdimas Когда я еэто всё писал у меня была цель не создать каку-то монолитную библиотеку, а просто некоторый набор конкретных ресурсов, любой из которых можно было бы выделить и не использовать всё остальное. Пример с MFC - попробуй допустим взять там какой-то один компанент и использовать только его, Пусть даже хотябс CComboBox. Это просто невозможно. А я сделал так, что если тебе нужен только Grid (который у меня называется UICage -клетка) то бери только его. По поводу того, что Грид плохо работает, давай по подробнее. 1) размер заголовков менять можно и в высоту и в ширину 2) Листание страниц сделано нормально, но полосу прокрутки я еще не доделал. Объясняю почему. Полоса прокрутки нужна только тогда, когда тебе известно количество записей в контейнере. А я зачастую просматриваю таблицы в которых по миллиону строк. Ну не тащить же их себе все на станцию... поэтому у меня есть собственный контейнер типа deque через который я всё это делаю. Когда это у меня заработает, я тебе покажу. А с vector и простым массивом я полосу прокрутки сделаю. Скоро))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2003, 11:09 |
|
||
|
Grids
|
|||
|---|---|---|---|
|
#18+
извините, а чем не подходят гриды от сторонных разработчиков ? от infragistics например ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2003, 15:37 |
|
||
|
Grids
|
|||
|---|---|---|---|
|
#18+
2 ujeen гриды на самом деле не такая уж сложная штука. Просто хочется чтоб при максимуме возможностей было минимум затрат ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2003, 16:52 |
|
||
|
Grids
|
|||
|---|---|---|---|
|
#18+
2gardenman то есть для вас vdimas писал:как минимум 5-7 чел/мес чистой работы немного ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2003, 17:28 |
|
||
|
Grids
|
|||
|---|---|---|---|
|
#18+
Шутка?) на самом деле реализовать грид - это примерно 2 недели работы..причем не напрягаясь... Но вот путёвый грид - эт месяца 2-3 подумать а потом - реализовывать) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2003, 17:43 |
|
||
|
Grids
|
|||
|---|---|---|---|
|
#18+
Шутка?) на самом деле реализовать грид - это примерно 2 недели работы..причем не напрягаясь Шутка? А сколько элементов управления для РЕДАКТИРОВАНИЯ ячеек в таком гриде. Для примера, в переделанном мною MFC Grid от codeproject их 10 и только их разработка заняла в общей сумме на неделю больше. А если стоит задача отобразить нечто в клеточку и прокручивающееся, дык это за 4 часа можно сделать, добавить ресайз колонок - еще 2 часа... дело-то не в этом. Знаешь, я сначала тоже думал что нужно плясать от ячейки, но потом понял - это тупиковый вариант. Получается в конце концов, что каждая ячейка должна быть производной от какого-то базового класса. Типов ячеек - может быть мульён. Вот например: 1) данные в ячейке должны быть представлены определенной bmp 2) данные в ячейке не просто строка - а несколько строк например:сумма в рублях/ сумма в валюте Попробуй такую фигню реализовать на стандартных гридах? может быть и сможешь, но во что тебе это станет? 1)это да, ПОЧТИ каждая. Используя продумманную объектную модель можно обыграть случаи, когда ячейка уникальна для каждой клеточки, или когда имеем регулярную структуру типа грида для отображения/редактирования таблицы БД, тогда ячеек надо столько, сколько колонок и не больше. 2) кто мешает сделать тип ячейки - "контейнер ячеек", которая при своей перерисовке и обработке событий просто передает их дочерним элементам? А нет стандартных гридов, ActiveX - не в счет. А Infragistics - мощщщща, но торррррмозззз.... 2) vdimas Когда я еэто всё писал у меня была цель не создать каку-то монолитную библиотеку, а просто некоторый набор конкретных ресурсов, любой из которых можно было бы выделить и не использовать всё остальное. Пример с MFC - попробуй допустим взять там какой-то один компанент и использовать только его, Пусть даже хотябс CComboBox. Это просто невозможно. А я сделал так, что если тебе нужен только Grid (который у меня называется UICage -клетка) то бери только его. ты сам ответил на свой вопрос можно написать именно библиотеку т.е. оформить в виде библиотеки, а в конечное приложение во время сборки из библиотеки попадают только те классы и только те их методы (невиртуальные! виртуальные попадают всегда, если попадает класс), которые реально используются ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2003, 18:06 |
|
||
|
Grids
|
|||
|---|---|---|---|
|
#18+
2gardenman виноват :-) вот мыло alex_k на trk7 точка ru (чтоб спамеры всякие не нашли) насчет ячеек тебе Димас написал, я с ним согласен, конечно нужно сделать один базовый класс для всех ячеек. в моем гриде(громко сказано, ничего нет еще) ячейка может быть сколько угодно столбцов в ширину и строк в высоту, это я по поводу нескольких строк в ячейке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2003, 18:25 |
|
||
|
Grids
|
|||
|---|---|---|---|
|
#18+
По поводу базового класса ячейки: Я чейка должна уметь только одно - рисовать себя в отведенном для этого участке окна. По поводу редактирования ячейки по месту: ненавижу когда так реализуют интерфейс к БД. Редактирование строки должно быть через форму. Если хотите, давайте пообсуждаем эту тему. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2003, 11:29 |
|
||
|
Grids
|
|||
|---|---|---|---|
|
#18+
а че тут обсуждать? садится девочка за набивку накладной, перед ней лист из 300 и более строчек, она открыла грид и пошла и пошла... а заставь ее дважды кликать на каждой строке - услышишь все, что она о тебе думает тоже самое от бухгалтера, когда он выписку из банка на 150 строк набивает... разумеется, полно ситуаций таких, что удобнее открывать форму для каждой строки, но ситуации разные бывают. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2003, 19:48 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=32309943&tid=2035823]: |
0ms |
get settings: |
7ms |
get forum list: |
19ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
39ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
79ms |
get tp. blocked users: |
1ms |
| others: | 218ms |
| total: | 382ms |

| 0 / 0 |
