Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2012.04.15;
Скачать: CL | DM;

Вниз

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

 
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;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.008 c
15-1323694886
Artem
2011-12-12 17:01
2012.04.15
Какое основное отличие Serial от Ethernet a?


1-1291676222
Gu
2010-12-07 01:57
2012.04.15
Заглавное меню


4-1256278384
Morgan128
2009-10-23 10:13
2012.04.15
Управление процессами с определенным PID


1-1291799940
Alexander_K
2010-12-08 12:19
2012.04.15
Уничтожение RDM


8-1223290961
BREND
2008-10-06 15:02
2012.04.15
Обработка видеосигнала