|
#1
|
|||
|
|||
Dialogs
Какая разница между этими кодами ?
1. Код:
opendialog1.execute; memo1.lines.loadfromfile(opendialog1.filename); Код:
if opendialog1.execute then memo1.lines.LoadFromFile(opendialog1.filename); Код:
with opendialog1 do if execute then lines.loadfromfile(filename); Последний раз редактировалось intade, 27.12.2016 в 11:54. |
#2
|
||||
|
||||
Разница есть, в первом варианте независимо от выбора кнопок диалога, после его показа призойдёт загрузка в мемо файла, чьё имя лежит в filename диалога. Может быть и пустым, поэтому ошибки неизбежны, самый правильный и чаще всего используемый - второй вариант, где выполняется проверка на нажатие, загрузка файла в мемо будет только в случае выбора пользователем кнопки Ок, в случае выбора отмены, ничего и не произойёдет.
Конструкция with..do нужна для сокращения кода, в данном случае нет нужды каждый раз обращаться к методам и свойствам opendialog1, указывая его явно, подразумевается что метод execute и строка filename принудительно они его, это для удобства, меньше кнопок давить, полезно для мембраны клавиатуры :-) Я не понял Вашего вопроса, но всё же Вам на него отвечу! Последний раз редактировалось Alegun, 27.12.2016 в 11:58. |
Эти 2 пользователя(ей) сказали Спасибо Alegun за это полезное сообщение: | ||
Aristarh Dark (28.12.2016),
intade (27.12.2016)
|
#3
|
|||
|
|||
Во втором коде ,как я понимаю, if then проверяет запущен ли opendialog ,но до этого нет никакой команды чтобы opendialog запускался,а при нажатии кнопки оно запускается.Как это работает ?
|
#4
|
||||
|
||||
Происходит вызов самого диалога (показ execute) и проверка на ответный результат
Я не понял Вашего вопроса, но всё же Вам на него отвечу! |
Эти 2 пользователя(ей) сказали Спасибо Alegun за это полезное сообщение: | ||
Aristarh Dark (28.12.2016),
intade (27.12.2016)
|