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

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

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

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

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
Тогда предыдущий пост в силе ;)

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. 10th, 2025 12:15 am
Powered by Dreamwidth Studios