Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2012.04.15;
Скачать: [xml.tar.bz2];

Вниз

Сюрпризы от предыдущих разработчиков   Найти похожие ветки 

 
ReadOnly   (2011-12-09 20:23) [0]

Бросаю значиццо на форму TEdit, устанавливаю readOnly в true. Не работает. Все вводится и редактируется. Ищу в коде хоть что-то похожее на ReadOnly - нету ничего. Тупил минут 20, прежде чем догадался посмотреть, а не унаследована ли форма от чего-нибудь этакого. И таки да. А вот интересно, кому в наследство досталась самая удивительная багофича?


 
asail ©   (2011-12-09 21:14) [1]


> ReadOnly   (09.12.11 20:23)

> прежде чем догадался посмотреть, а не унаследована ли форма
> от чего-нибудь этакого

Неужели от TDBGrid форма унаследована?.. :)
А если серьезно, то в чем сюрприз-то?


 
ReadOnly   (2011-12-09 21:36) [2]

>А если серьезно, то в чем сюрприз-то?

В багах компилятора? В глючности IDE? Вопросы, вопросы


 
SQLEX ©   (2011-12-09 21:43) [3]


> asail ©   (09.12.11 21:14) [1]


procedure TForm1.FormCreate(Sender: TObject);
var
 i: integer;
begin
 for i := 0 to ComponentCount - 1 do
 begin
   if Components[i] is TEdit then
    TEdit(Components[i]).ReadOnly := False;
 end;
end;

 TForm2 = class(TForm1)
как тут edit не настраивай, будет не ридонли


 
asail ©   (2011-12-09 22:14) [4]


> SQLEX ©   (09.12.11 21:43) [3]

Это я понимаю... Я не понимаю, в чем баг? Если в форме-предке есть определенная логика установки того или иного свойства у контролов, то, наследуясь от нее, будь добр ей следовать...

И эта... Никто не мешает сделать так:
procedure TForm2.FormCreate(Sender: TObject);
var
i: integer;
begin
 inherited;
 for i := 0 to ComponentCount - 1 do
 begin
   if Components[i] is TEdit then
     TEdit(Components[i]).ReadOnly := True; //ну или че тебе тут надо
 end;
end;


 
ReadOnly   (2011-12-09 22:43) [5]

> Если в форме-предке есть определенная логика установки того или иного >свойства у контролов, то, наследуясь от нее, будь добр ей следовать.

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


 
sniknik ©   (2011-12-09 23:00) [6]

склероз и нежелание/кривое написание комментариев действительно страшный баг... но только при чем здесь компилятор или IDE?


 
ReadOnly   (2011-12-09 23:37) [7]

>склероз и нежелание/кривое написание комментариев действительно страшный >баг... но только при чем здесь компилятор или IDE?

А причем тут склероз, ежели я оное на текущей работе увидел впервые. А что касается "компилятор или IDE?", то это ответ asail © . Они в данном случае совершенно ни при чем.


 
asail ©   (2011-12-09 23:55) [8]


> ReadOnly   (09.12.11 22:43) [5]

Т.е. вся проблема в отсутствии документации и вразумительных комментариев в коде. Так и хде ж сюрприз обещанный? Что в этом такого необычного?
Я это к чему... Сама по себе ситуация, описанная в [0] ничем таким страшным, необычным или неправильным не является. В отличии от отсутствия документации.


 
Dennis I. Komarov ©   (2011-12-10 00:03) [9]

Indy...


 
MastaK ©   (2011-12-10 00:04) [10]

Приииз,в студию!!!


 
Юрий_   (2011-12-10 00:31) [11]

С некоторых пор пришел к выводу, что наследование форм в дизайне - очень плохой подход. А если ни дай бог, несколько уровней, то дело совсем дрянь. Именно поэтому - потому, что периодически приходится тратить лишнее время на поиск причин подобных странностей.
А если где-нибудь в предке еще и цикл по компонентам как в [4], ситуация усугубляется.
Корень проблем при таком подходе  кроется в невозможности снизить видимость компонентов.


 
Игорь Шевченко ©   (2011-12-10 00:34) [12]


> С некоторых пор пришел к выводу, что наследование форм в
> дизайне - очень плохой подход


Странно


 
Dennis I. Komarov ©   (2011-12-10 00:37) [13]


> С некоторых пор пришел к выводу, что наследование форм в
> дизайне - очень плохой подход. А если ни дай бог, несколько
> уровней, то дело совсем дрянь.

Весь генофонд тоже люди писали...


 
Германн ©   (2011-12-10 00:48) [14]


> Юрий_   (10.12.11 00:31) [11]
>
> С некоторых пор пришел к выводу, что наследование форм в
> дизайне - очень плохой подход.

Чем тебя не устроил репозиторий?


 
ReadOnly   (2011-12-10 01:34) [15]

asail ©   (09.12.11 22:14) [4]

> И эта... Никто не мешает сделать так:

Да так, примерно, и сделал. Тут же не стоит вопрос: "как забороть такое". Есть форма, сделано именно так, нафига - никто не помнит/не знает.  А я так вообще ее впервые увидел.

P.S. На форме есть панелька со всякими плюшками. Подозреваю, что унаследовали из-за нее. А вот про штуку с эдитами забыли как-то


 
©   (2011-12-10 01:41) [16]


> Подозреваю, что унаследовали из-за нее. А вот про штуку
> с эдитами забыли как-то

негодяи


 
ReadOnly   (2011-12-10 02:38) [17]

>негодяи

Хуже. Подозреваю заговорЪ. Оне продались мировой закулисе, оно по dfm сразу видно


 
_Юрий   (2011-12-10 12:03) [18]


> Dennis I. Komarov ©   (10.12.11 00:37) [13]


> Весь генофонд тоже люди писали...

Я про визуальное наследование.


> Германн ©   (10.12.11 00:48) [14]


> Чем тебя не устроил репозиторий?


Не очень понял, как репозиторий может заменить наследование


 
Dennis I. Komarov ©   (2011-12-11 21:48) [19]


> _Юрий   (10.12.11 12:03) [18]
> Я про визуальное наследование.

А там мало? Или VCL отдельно? :)


 
Jeer ©   (2011-12-11 21:52) [20]


> Юрий_   (10.12.11 00:31) [11]
>
> С некоторых пор пришел к выводу, что наследование форм в
> дизайне - очень плохой подход.


Сколько лет работаю в таком стиле - не обнаружил ничего плохого.
Доходило ло 5 уровней наследования.

Может проблема в "поваре" ?


 
Юрий Зотов ©   (2011-12-11 23:07) [21]


> Юрий_   (10.12.11 00:31) [11]
> С некоторых пор пришел к выводу, что наследование форм в
> дизайне - очень плохой подход.

Это потому что:
"Не очень понял, как репозиторий может заменить наследование"


 
OW ©   (2011-12-12 10:41) [22]


> asail ©   (09.12.11 22:14) [4]
> И эта... Никто не мешает сделать так:

никто, и это не глюк, конечно.

но это надо увидеть вовремя.

наследуясь от формы, как правило, что бы общий стиль сохранить. А решаю задачу свою. А если в общей форме датасет анализируется при выходе и что-то там делается с ним, что у меня уже убито благополучно
или на onChange что повешено, что тормоза включает
- вот и засада.
Правда, не на пол-дня, но тоже неприятно.


 
vuk ©   (2011-12-12 11:15) [23]

to Jeer ©   (11.12.11 21:52) [20]:

> Сколько лет работаю в таком стиле - не обнаружил ничего
> плохого.Доходило ло 5 уровней наследования.

Ну, тут как сказать... Проблем, самих по себе, конечно, нет. Ну, то есть всё работает. Правда, они могут начаться, если нужно будет поменять что-то в предках. Дело в том, что далеко не все изменения, сделанные в предке повлияют на потомков сразу, в ряде случаев придется принудительно делать в потомках "Revert to inherited". Если где-то были назначены дополнительные обработчики или сделаны изменения свойств - скажите им "до свидания". Собственно говоря, ровно те же проблемы имеем при использовании фреймов. Тут даже наследованием заниматься не обязательно.

Главная причина всего этого - идеология работы со свойствами компонентов (наличие dfm).


 
Jeer ©   (2011-12-12 13:16) [24]


> vuk ©   (12.12.11 11:15) [23]


Ну что делать - есть особенности инструмента, их надо знать.
Да и при вводе, скажем, нового свойства в некий компонент, который уже использован в некотором проекте - тоже грабли.
Это свойство в инспекторе сразу и не увидишь.



Страницы: 1 вся ветка

Форум: "Прочее";
Текущий архив: 2012.04.15;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.51 MB
Время: 0.003 c
3-1274164397
leonidus
2010-05-18 10:33
2012.04.15
Ошибка при создании таблицы через ADO


2-1324525285
Богдан
2011-12-22 07:41
2012.04.15
2 задачки на написание программы


2-1324400538
Германн
2011-12-20 21:02
2012.04.15
Командная строка утилиты GBAK


4-1254300446
Игорь Андреевич
2009-09-30 12:47
2012.04.15
Запретить запись с экрана


1-1291613732
Gu
2010-12-06 08:35
2012.04.15
Шрифт заголовков груп в listview





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский