metaclass: (Default)
[personal profile] metaclass
Понял, что если не напишу что-нибудь на мейнстримных языках, то убреду в тяжкие дебри Template Haskell и прочей жути, и решил занятся очередным этапом очередной "срочно-нах-нужно-вчера-конкуренты-сука-жопа-сатана-поджимают" задачей.

Нужно сделать для DataGridView ячейку, которая позволяла бы вводить папку, в общем случае - содержащую едит-бокс, кнопку и обработчик для этой кнопки. 10 минут поиска в гугле, нашел вариант решения, итд, итп, сижу подгоняю под себя.

Все таки архитектура DataGridView и вообще чего-либо хоть как-то сложного в Windows.Forms это такой адский ад, что выглядит это следующим образом: всех вменяемых программистов в микрософте, занимающихся дотнетом, кинули на реализацию базовых вещей - виртуальной машины, компилятора, итд, итп, а Windows.Forms отдали на реализацию каким-то индусским равшаноджамшутам, которые еще вчера, блин, в ганге купались и коровьей мочой мозги себе смазывали.

Вот, спрашивается, как тут удержаться от дебрей хаскеля, если альтернатива - копаться в индусском кале или писать вручную на дельфи маппинги база данных->объекты->(гуи|модуль расчета опердени) -> объекты -> база данных.

From: udpn.livejournal.com

Date: 2009-12-15 08:10 pm (UTC)
From: (Anonymous)
Да так оно и есть. Вон, UIшники первые появились только с Вистой. Да и те работают жопой.

Date: 2009-12-15 08:45 pm (UTC)
From: [identity profile] re-pin.livejournal.com
а что не так в winforms?

Date: 2009-12-15 08:51 pm (UTC)
From: [identity profile] metaclass.livejournal.com
Архитектура и особенности реализации садят на коня.
Все заточено под ручное выкладывание контролов на формы, а я предпочитаю сделать одну обобщенную форму под каждый класс задач, а потом ее параметризовать метаданными.

Date: 2009-12-15 08:54 pm (UTC)
From: [identity profile] madeveloper.livejournal.com
Разьве в Дельфи как-то по другому?

Date: 2009-12-15 09:08 pm (UTC)
From: [identity profile] metaclass.livejournal.com
Как-то более гуманно для мозга там.

Date: 2009-12-15 09:18 pm (UTC)
From: [identity profile] madeveloper.livejournal.com
Хейлсберг сказал НАДО, значит НАДО :)

Date: 2009-12-15 09:07 pm (UTC)
From: [identity profile] re-pin.livejournal.com
) видимо я ничего лучше не видел, посему не замечаю "граблей"
а "одну обобщенную форму под каждый класс задач, а потом ее параметризовать" тоже можно реализовать, да и динамическое создание компонентов никто не отменял.

Date: 2009-12-15 09:38 pm (UTC)
From: [identity profile] http://users.livejournal.com/_windwalker_/
псевдообъектная надстройка на с-шным WinAPI, вот что это такое :)

Date: 2009-12-15 08:49 pm (UTC)
From: [identity profile] madeveloper.livejournal.com
А какие сложности с ячейкой? Абсолютно любой контрол + IDataGridViewEditingControl.

Date: 2009-12-15 08:54 pm (UTC)
From: [identity profile] metaclass.livejournal.com
Вот IDataGridViewEditingControl как раз и выглядит, как будто его проектировали на берегах ганга. Вернее, вообще весь DataGridView так выглядит.

Date: 2009-12-15 08:57 pm (UTC)
From: [identity profile] madeveloper.livejournal.com
И что в нем не так? Огрехи есть, но чисто идеалистические, в работе не замечаемые.

Date: 2009-12-15 09:11 pm (UTC)
From: [identity profile] metaclass.livejournal.com
Вот для начала - как получить ячейку, которую редактирует контрол?

Date: 2009-12-15 09:25 pm (UTC)
From: [identity profile] madeveloper.livejournal.com
Что-то типа EditingControlDataGridView.CurrentCell
Только непонятно зачем. Если нужно контрол как-то инициализировать под конкретную ячейку, так на то InitializeEditingControl у CellTemplate есть...

Date: 2009-12-15 09:38 pm (UTC)
From: [identity profile] metaclass.livejournal.com
Ну вот я делаю ячейку с кнопкой, но обобщенную - мне нужно по щелчку на кнопку вызвать событие, которое я назначаю при генерации ячеек. Для этого нужно достучаться до ячейки, где событие объявлено.

А вызов через CurrentCell - это место для потенциальных багов, т.е. мы должны быть уверены, что эта проперть равна именно той ячейке, которая создала контрол. То, что это так - ничем не гарантируется.
Вот если бы контрол получал ячейку и datagridview при инициализации - было бы нагляднее.

Date: 2009-12-15 09:51 pm (UTC)
From: [identity profile] madeveloper.livejournal.com
Если мы говорим о каком-то универсальном контроле, то в его обязательства не должен попадать анализ того, кто и зачем его вызвал. Для этого и придуман InitializeEditingControl, где можно затарить контрол всей необходимой амуницией заведомо _до_ его появления в тылу UI. Хоть CurrentCell и не лучший вариант решения задачи, но я не вижу причин, почему он может указывать на какую-то другую ячейку...

Date: 2009-12-15 10:03 pm (UTC)
From: [identity profile] madeveloper.livejournal.com
Да, еще момент, кнопка нужна в момент редактирования или всегда и у всех ячеек? Второй случай лечиться по другому, можно рядом с DataGridViewTextBoxCell банально положить DataGridViewButtonCell...

Date: 2009-12-15 10:17 pm (UTC)
From: [identity profile] metaclass.livejournal.com
Только в момент редактирования.

Date: 2009-12-15 10:19 pm (UTC)
From: [identity profile] madeveloper.livejournal.com
Тогда предыдущий пост в силе ;)

Date: 2009-12-15 08:56 pm (UTC)

Date: 2009-12-15 11:18 pm (UTC)
wizzard: (Default)
From: [personal profile] wizzard
я все ж таки намекаю что надо move to wpf. ну и еще посмотреть на 3rd party датагриды, правда для впф они в основном бесплатные, а для винформ платные (хз почему)

Date: 2009-12-16 04:30 am (UTC)
From: [identity profile] freiksenet.livejournal.com
Я вообще не понимаю стремление принести декстопный УИ, который всегда был через жопу, в веб, где всё не так плохо, если как раз не ебатся с уи. Ну нахрена эти супер сложные виджеты, они ИМХО в итоге приводят к геморрою.

Date: 2009-12-16 04:32 am (UTC)
From: [identity profile] freiksenet.livejournal.com
Оу, это оффлайн приложение, ступил. В любом случае, в ASP.NET такой же пиздец был, когда я последний раз на нём писал.

Date: 2009-12-16 07:16 am (UTC)
From: [identity profile] metaclass.livejournal.com
Это как раз десктопный UI и есть, а что через жопу - так это веб, где вместо статических документов активно шевелящееся содержимое.

Date: 2009-12-16 07:08 am (UTC)
From: [identity profile] nivanych.livejournal.com
> а Windows.Forms отдали на реализацию каким-то [...]

В теме не разбираюсь, но к несчастью,
был неплохо знаком с MFC, ATL, WTL.
Что, неужели 2-й MFC сделали? ;-)

Date: 2009-12-17 09:02 am (UTC)
From: [identity profile] tonal.myopenid.com (from livejournal.com)
Qt как всегда рулит: MVC + делегаты. :)

Profile

metaclass: (Default)
metaclass

April 2017

S M T W T F S
      1
2345678
9101112 131415
16171819202122
23242526272829
30      

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Sep. 7th, 2025 03:59 am
Powered by Dreamwidth Studios