> Приношу извинения. Из-за недостатка времени в спешке "наваял" совсем не > то, совсем заработался. > Если завтра будет актуально — исправлюсь, еще раз сорри.
Давай-давай
Актуально, тока, как я погляжу таким макаром мои 1700 строк могут
превратиться в 3400
Здравствуйте, CR-LF, Вы писали:
CL>знаю, что за следующий код нужно голову отрывать, но не знаю как написать CL>по-другому ;(
Тут, собс-но, две ошибки.
Во-первых по выбору интерфейса: почему Edit1, Edit2, а не TStringGrid,
TValueListEditor & etc.
Вторая — зависимость TTask от TQForm.
Т.е., если строка так нужна этому классу, то она должна передаваться,
в _его_ методе AddTodoTask. В конце всех добавлений проверяем
количество заданий, если оно <> 0 делаем ч.л. и finally разрушаем Tsk.
Вот, собс-но, и все.
Ну, и, наконец, возникают смутные сомнения о TActionList.
> Тут, собс-но, две ошибки. > Во-первых по выбору интерфейса: почему Edit1, Edit2, а не TStringGrid, > TValueListEditor & etc.
А что смущает ?
Мне вот хочется иметь несколько полей ввода вместо таблицы.
> Вторая — зависимость TTask от TQForm. > Т.е., если строка так нужна этому классу, то она должна передаваться, > в _его_ методе AddTodoTask. В конце всех добавлений проверяем > количество заданий, если оно <> 0 делаем ч.л. и finally разрушаем Tsk.
Строка нужна не столько TTask, сколько TQForm, которая и добавляет очередной
TTask в СВОЙ список задач
СВОИМ методом AddTodoTask, а если по каким-то причинам она его не может
добавить, то уничтожает его как ненужный или ошибочный.
А к чему приведет finally Tsk.Free, если он используется формой ?
> Ну, и, наконец, возникают смутные сомнения о TActionList.
Возникают ... И не говори ...
Здравствуйте, CR-LF, Вы писали:
CL>Мне вот хочется иметь несколько полей ввода вместо таблицы.
Дык, имей. Просто первая часть плача по красоте состояла, IMHO,
именно в Edit1, Edit2.. vs Cells[i,j].
При добавлении очередного Edit твой код пополнится еще одной макарониной.
CL>СВОИМ методом AddTodoTask, а если по каким-то причинам она его не может CL>добавить, то уничтожает его как ненужный или ошибочный.
А зачем она его уничтожает? Обычно при невозможности ч.л. генерируют внятное
исключение, а дальнейшие действия (уничтожение или еще что) оставляются
заинтересованным лицам, скажем, для обработчика исключений.
И, вообще, в таком случае, совсем непонятно создание многочисленных Tsk, ведь
то, что еще нужно для списка вполне может сделать этот самый AddToDo.
CL>А к чему приведет finally Tsk.Free, если он используется формой ?
Если он используется формой, то он и должен быть ее полем.
Впрочем, речь шла о списке. Значит, я (прохожий) не смог уяснить,
собс-но, назначение т.о. именованного метода.
> Дык, имей. Просто первая часть плача по красоте состояла, IMHO, > именно в Edit1, Edit2.. vs Cells[i,j]. > При добавлении очередного Edit твой код пополнится еще одной макарониной. > > CL>СВОИМ методом AddTodoTask, а если по каким-то причинам она его не может > CL>добавить, то уничтожает его как ненужный или ошибочный. > > А зачем она его уничтожает? Обычно при невозможности ч.л. генерируют > внятное > исключение, а дальнейшие действия (уничтожение или еще что) оставляются > заинтересованным лицам, скажем, для обработчика исключений.
Ладно, наверное я действительно не умею грамотно писать на Delphi.
Да и обработкой исключений почти не пользуюсь.
Но, блин, хочется научиться — может подскажешь что почитать про это ?
Только не общие сведения как в книгах обычно пишут, а что-нибудь поумнее.
Здравствуйте, CR-LF, Вы писали:
CL>Но, блин, хочется научиться — может подскажешь что почитать про это ? CL>Только не общие сведения как в книгах обычно пишут, а что-нибудь поумнее.
В свое время учился по: Рей Конопка "Разработка компонентов в среде Дельфи".
ну, и, пожалуй, Чарльз Калверт "Дельфи X. Энциклопедия пользователя".
Первая переиздавалась не очень(?) давно на eng, (первое рус. издание в году 96).