:: Архив конференции по VFP до 2005 года
Re: Как объявить свойство для грида в VCX
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
Hi, Aijik!

Ну плохо я выразился, а ты уж к словам цепляешься Я именно про ограниченность создания иерархии в рамках одного класса и говорил - не про "использование" уже унаследованной иерархии...
Насчёт member-объектов ты частично прав - в том смысле что МОЖНО наверное было когда-то сделать их "полноценными" объектами, но MS решило что т.к. они без своего контейнера нежизнеспособны (т.е. грубо говоря являются НЕОТЪЕМЛЕМОЙ частью контейнера) то и отдельных записей им не нужно. Исходя их этого конечно много чего вытекает... Однако это позволяет упростить ряд проверок, и например уже проблематично засунуть в грид что-то помимо колонки В общем тут палка о 2-х концах - с одной стороны колонка полноценный класс, а с другой - это неотъемлемая часть грида. Вот что касается хедера, то тут ситуация решена наоборот - но я так подозреваю, что это лишь СЛЕДСТВИЕ того что уже собственно колонка не является "нормальным" объектом - если бы ещё и хедер прописывался в записи о гриде - это было-бы жуткой мешаниной
Я не считаю что "дефолтный" текстбокс и хедер есть неотъемлемые части колонки, и потому 100% уверен в правильности наличия отдельных записей для них в vcx/scx - тут подход другой - колонка в какой-то момент ПОСЛЕ или ВО ВРЕМЯ своей инициализации начинает вдруг заниматься "созданием дефолтных member-ов" - но только если к тому моменту их ещё нет - от того и несколько разное поведение в случаях когда member-объект описан ЯВНО и когда его нет - кстати это касается больше prg классов, т.к. для vcx/scx дизайнер сам создаёт дефолтные объекты - да так, что они становятся уже не дефолтными, а явно описанными! Хотя их всё-же можно явно удалить.
Кстати свойства типа MemberClass двоякие - с одной стороны они в рантайме определяют какой класс взять для добавляемых через "инкремент счётчика" объектов, но с другой - они ведь и в Design-Time действуют! Причём MS весьма капитально перестраховалась от разного рода мусора и "неожиданностей" - уничтожая всё содержимое Memeber-объекта, при смене им класса - скажем аналогичное действие над собственно классами в ClassBrowser не имеет таких разрушительных последствий, хотя потенциально порождает "мусор" в vcx/scx...

В общем надо признать, что нету совершенства в этой жизни




------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: Как объявить свойство для грида в VCX
Aijik

Сообщений: 2145
Откуда: Ростов-на-Дону
Дата регистрации: 08.01.2002
Цитата:
Ну плохо я выразился, а ты уж к словам цепляешься Я именно про ограниченность создания иерархии в рамках одного класса и говорил - не про "использование" уже унаследованной иерархии...
Цепляться не имел в мыслях Что вижу, то и читаю:

Цитата:
А вот присвоить какие-то значения свойствам (уже имеющимся конечно!)
member-объектов (или переопределить их методы/обработчики событий) - можно
на уровне класса-контейнера. Причём для prg уровень вложения ограничивается
1-цей (т.е. скажем из связки Форма-грид-колонка-текстбокс можно лишь для
первых двух уровней задать свойства/методы, для колонки уже нельзя -
максимум - это в Init класса присваивать значения свойствам, но это конечно
сильно ограниченно)
Вот и решил на это и написать свой спич. Только и всего. Ну да ладно, недопоняли друг друга и фиг с ним

Цитата:
но MS решило что т.к. они без своего контейнера нежизнеспособны (т.е. грубо говоря являются НЕОТЪЕМЛЕМОЙ частью контейнера) то и отдельных записей им не нужно
Я могу только еще раз повторить свое мнение - считаю, что это была ошибка, и имею подозрение, что все последующие проблемы member-классов, а особенно проблема сосуществования нескольких Column (CommandButton/Optionbutton/Page) разных классов в одном Grid'е (CommandGroup/OptionGroup/PageFrame), и убогая попытка "залатывания" этой проблемы посредством добавления новых свойств "MemberClass/MemberClasslib", вызвана именно этим.

Цитата:
Вот что касается хедера, то тут ситуация решена наоборот - но я так подозреваю, что это лишь СЛЕДСТВИЕ того что уже собственно колонка не является "нормальным" объектом - если бы ещё и хедер прописывался в записи о гриде - это было-бы жуткой мешаниной
....
Я не считаю что "дефолтный" текстбокс и хедер есть неотъемлемые части колонки, и потому 100% уверен в правильности наличия отдельных записей для них в vcx/scx - тут
Про хедер и текстбокс я уже подправил себя ранее. Мне кажется, что это оправдано - колонка, она-то реально "пустой" класс, а текстбокс и хедер суть добавленные объекты, потому тут согласен, касательно этих объектов отдельная запись - это логично

Цитата:
Причём MS весьма капитально перестраховалась от разного рода мусора и "неожиданностей" - уничтожая всё содержимое Memeber-объекта, при смене им класса - скажем аналогичное действие над собственно классами в ClassBrowser не имеет таких разрушительных последствий, хотя потенциально порождает "мусор" в vcx/scx...
Да, я помню ту твою тему в разделе форума по VFP9. Полностью согласен - у MS получилось как из пушки по воробьям. Можно было и поизящнее это все разрулить. А теперь приходится для подмены класса буквой зю хакерить на низком уровне, ибо штатный способ проходит как Мамай и сносит к чертям все нажитое непосильным трудом



ЗЫ Тут видимо, из-за проблем с сервером в пятницу с конфы исчез мой позапрошлый пост, бум надеяться, что не навсегда
Ratings: 0 negative/0 positive
Re: Как объявить свойство для грида в VCX
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
Hi, Aijik!

Цитата:
убогая попытка "залатывания" этой проблемы посредством добавления
новых свойств "MemberClass/MemberClasslib"
Мне кажется что они и не думали этим "залатывать дыру" - IMHO совсем иные
цели преследовались. Причём я полагаю что 80% "пожеланий общественности"
этим простейшим способом всё-же удовлетворили - ибо редко когда требуются в
пределах одного грида разные колонки (вот текстбоксы/прочие контролы -
реально разные, а класс колонки IMHO вообще одного-двух на проект
достаточно...)
В общем это просто особый стиль - сложно сказать насколько он правильный




------------------
WBR, Igor
Ratings: 0 negative/0 positive


Извините, но у вас нет прав для того, чтобы оставлять сообщения в этом форуме.

On-line: 10 (Гостей: 10)

© 2000-2024 Fox Club 
Яндекс.Метрика