Небольшая авантюра :)
И до чего же мне остопи... осточертели разнообразные глюки виндового контрола ListView. В один прекрасный день я осознал, что на периодический отлов и исправление подобных глюков было потрачено много дней. Ну и решился я на такую авантюру: написать этот класс "ручками", так сказать, под себя. Пока получается. Позавчера сделал отображение и скроллинг, вчера - множественный выбор и перетаскивание/растягивание заголовков. Как там говорится в одной программистской поговорке: никогда не находится время, чтобы сделать что-то необходимое, но всегда находится время, чтобы переделать ;)

Это, кстати, к вопросу, как дела с bard-ом. Нормально дела, вовсю идет работа над новой версией.

Это, кстати, к вопросу, как дела с bard-ом. Нормально дела, вовсю идет работа над новой версией.
no subject
>но ведь такая функциональность нужна лишь немногим контролам, нафиг тогда
>вызывать эти функции у всех контролов?
правильно. у кого обработчика сигнала нет — тот и не откликнется. %-)
зыж что-то у нас хилый какой-то холивар получается.
no subject
ежели оно всплыло до диалога, то дальше все на этом. либо у диалога есть поинтер на что-то конкретное, дополнительное, тогда это еще плюс один вызов. а всем подряд сувать - какой смысл? в том примере прикинь, если в окне есть multi-line-edit и дерево (как в студии с редактором и деревом проекта), фокус стоит на дереве. деерву Enter не нужен, и зачем тогда совать Enter в первый попавшийся multi-line-edit? это уже излишество :)
no subject
это как это «всё»? это, то есть, диалог должен, например, знать о сущности «дефолтная кнопка» и какие события туда роутить? O_O
а enter надо всем предложить, вдруг он кому нужен? мультилайн умный, он глянет, что фокус не у него — и не станет трогать клаву. а дефолтная кнопка тупая, она увидит enter — и зажрёт, и пофигу ей на фокусы. именно чтобы такие гады не хавали чужие события, сначала его надо утопить до контрола с фокусом.
плюс подхода — диспетчер событий вообще не должен быть осведомлён ни о чём, кроме того, какое его дитё имеет фокус. и скидывает мессагу дитю. дитё в свою очередь тоже является диспетчером, смотрит на своих. и так далее. если событие никому в пень не надо — оно всплывёт на уровень выше и будет скормлено следующему контролу. и так пока контролы не закончатся, после чего ещё на уровень выше всплывёт. просто, как топором по яйцам. оверхэдом можно пренебречь, это гуя — тут даже с сотней контролов не выйдет схему затормозить (ну, у меня не выходило даже на 286-х %-).
no subject
именно. а почему бы и нет?
[ он глянет, что фокус не у него — и не станет трогать клаву ]
и каждый будет смотреть, а не у меня ли фокус, тварьли я дрожащая или право имею клавишу обрабать? :) так просто не надо совать кнопки тому, кто не в фокусе. сам подумай: что есть "фокус"? по определению это тот, кто берет события от кнопок. дело не столько в оверхеде, сколько в предсказуемости с т.з. пользователя - что никакая херня, которая не в фокусе "вдруг" не оживет :)
no subject
а зачем ему знать о том, о чём знать не надо? мало ли, какой извращённый компонент я придумаю завтра — что, и такому обучать? это как раз нарушение красоты ооп и прямой путь к кодокаше. чем меньше объект знает о других — тем крепче спит программист.
>и каждый будет смотреть, а не у меня ли фокус, тварьли я дрожащая или право имею
>клавишу обрабать?
а в чём проблема? а вот есть такой себе скроллбар, который вообще, например, фокуса никогда не имеет. зато отлично обрабатывает клаву, потому что пришпандорен к нужному элементу. точнее, не обрабатывает, а преобразует события в «страница вверх» вместо «нажат pgup». отлично «херня не в фокусе» оживает, и более того — это ожидаемое юзером поведение. что, мне теперь диалоги и скроллбарам отдельно обучать? %-) или учить каждый scrollable component обрабатывать pgup самолично? а потом ещё и смотреть, не привинчены ли рядом скроллбары и их дёргать? нененене, Дэвид Блэйн, такая магия нам не нужна.
no subject
no subject
no subject
no subject
no subject
no subject
кстате. а как у тебя тогда хоткеи на кнопки сделаны? у меня кнопки их сами в себе и проверяют — рано или поздно до них доедет.
no subject
no subject
no subject
no subject
а вообще-то либа на Delphi была. %-)
no subject