Форум: "Начинающим";
Текущий архив: 2007.05.13;
Скачать: [xml.tar.bz2];
Вниз3 простых вопроса Найти похожие ветки
← →
Kostafey © (2007-04-20 16:29) [0]По одному вопросы задавать уже мало буду сразу по 3.
Все примеры работают, я только хотел уточнить их корректность.
1) Если необходимо выполнить ряд действий по работе с компонентами формы
только 1 раз при создании, то корректно ли будет писать:
procedure TForm1.FormCreate(Sender: TObject);
begin
inherited;
//необходимые операции
2) Если необходимо, чтобы модальная форма возвращала строку, то можно ли писать как:
//Вызов из другой формы:
TextString:=Form2.ShowWithParams;
//Метод Form2:
function TForm2.ShowWithParams:string;
begin
ShowModal;
if ModalResult = mrOk then
Result := "Some string"
else
Result := "Other string";
end;
3) Работа с компонентами формы из другого Unit:
procedure SetSubjectFields(SenderForm: TForm; SenderDataSource: TDataSource);
begin
with DataModule1 do begin
(SenderForm.FindComponent("DBEditLookTipSubject") as TDBEdit).DataSource :=
SenderDataSource;
...
← →
Ega23 © (2007-04-20 16:33) [1]
> procedure TForm1.FormCreate(Sender: TObject);
> begin
> inherited;
> //необходимые операции
>
нахрен тебе тут inherited?????
> 2) Если необходимо, чтобы модальная форма возвращала строку,
> то можно ли писать как:
Можно, почему нет.
> 3) Работа с компонентами формы из другого Unit:
Что-то я не понял...
← →
Johnmen © (2007-04-20 16:38) [2]1) да. inherited; лишнее
2) да. только форма ничего не "возвращает"
3) да. только FindComponent может закончиться безуспешно...
← →
Kostafey © (2007-04-20 16:39) [3]> нахрен тебе тут inherited?????
А как иначе работать с компонентами формы если они еще не созданы?
Или на момент создания формы они уже созданы ?
> Можно, почему нет.
Как раз в этом я больше всего сомневался. Спасибо.
> Что-то я не понял...
Компонент DBEditLookTipSubject (тип TDBEdit) есть в одной ворме, но его ведь нет в другой.
Конечно можно подключить в Uses, но это нужно делать в interface.
← →
Ega23 © (2007-04-20 16:41) [4]
> А как иначе работать с компонентами формы если они еще не
> созданы?
Ну-ка ответь, что такое inherited
← →
ppcumax © (2007-04-20 16:41) [5]
> А как иначе работать с компонентами формы если они еще не
> созданы?Или на момент создания формы они уже созданы ?
тоже интересует
← →
Kostafey © (2007-04-20 16:44) [6]> Ну-ка ответь, что такое inherited
Вот так вот с ходу начинают по учебной программе гонять :)
В данном примере, на сколько я понимаю, вызовется TForm.Create
Хм... и правда, в TForm.Create компонентов еще нет...
← →
Игорь Шевченко © (2007-04-20 16:46) [7]inherited не лишнее, если форма унаследована от другой формы, в которой на OnCreate есть свой обработчик, который надо выполнить. Иначе лишнее.
← →
Kostafey © (2007-04-20 16:48) [8]Вот так да ! А я думал так не заработает !
procedure TForm1.FormCreate(Sender: TObject);
begin
Edit1.Text:="Hellow World";
end;
Невероятно! И это случилось в наши дни, в XX веке!(С)
← →
Ega23 © (2007-04-20 16:50) [9]
> В данном примере, на сколько я понимаю, вызовется TForm.
> Create
>
Неправильно понимаешь.
← →
Kostafey © (2007-04-20 16:55) [10]> Неправильно понимаешь.
Возможно.
Поправьте меня в чем не прав.
inherited - вызывает метод родительского класса. Для TForm1 это TForm.
Значит
procedure TForm1.FormCreate(Sender: TObject);
begin
inherited;
вызовет TForm.Create;
Или нет ?
← →
Игорь Шевченко © (2007-04-20 16:56) [11]
> Поправьте меня в чем не прав.
> inherited - вызывает метод родительского класса. Для TForm1
> это TForm.
> Значит
> procedure TForm1.FormCreate(Sender: TObject);
> begin
> inherited;
> вызовет TForm.Create;
>
> Или нет ?
Нет. найди 10 отличий между названиями методов Create и FormCreate
← →
Kostafey © (2007-04-20 16:58) [12]> Нет. найди 10 отличий между названиями методов Create и
> FormCreate
Боюсь их только 4 :)
← →
McSimm_ © (2007-04-20 16:58) [13]
> А как иначе работать с компонентами формы если они еще не
> созданы?
> Или на момент создания формы они уже созданы ?
На момент вызова обработчика.
Обработчик события OnCreate это не конструктор.
← →
{RASkov} (2007-04-20 16:59) [14]> [10] Kostafey © (20.04.07 16:55)
> Или нет ?
Немного не так.... Я ведь могу OnCreate обозвать MySozdanieFormy, а ты вызываешь inherited; Т.е. в предке будет искаться MySozdanieFormy.
← →
Kostafey © (2007-04-20 17:02) [15]> Обработчик события OnCreate это не конструктор.
> Немного не так.... Я ведь могу OnCreate обозвать MySozdanieFormy,
> а ты вызываешь inherited; Т.е. в предке будет искаться
> MySozdanieFormy.
Все. Понял. Спасибо.
← →
Ega23 © (2007-04-20 17:05) [16]
> Все. Понял. Спасибо.
Не понял. См. [11], [13].
Разницу меду методом и конструктором ощущаешь?
← →
{RASkov} (2007-04-20 17:19) [17]> Разницу меду методом и конструктором ощущаешь?
Собственно разницы, в контесте вопроса об inherited, нет, я специально уклон на имя метода сделал, ибо без параметров inherited; вызывает одноименный метод родителя с теми же параметрами... И вообще все события Control"ов - это свойства :) Вот.
← →
Kostafey © (2007-04-20 17:47) [18]> Разницу меду методом и конструктором ощущаешь?
Понял, не дурак, дурак бы не понял :)
← →
Плохиш © (2007-04-20 17:53) [19]
> {RASkov} (20.04.07 16:59) [14]
> > [10] Kostafey © (20.04.07 16:55)
> > Или нет ?
>
> Немного не так.... Я ведь могу OnCreate обозвать MySozdanieFormy,
> а ты вызываешь inherited; Т.е. в предке будет искаться
> MySozdanieFormy.
И в чём проблема, не найдёт и не вставит в проект, это вообще директива для компилятора.
← →
ЮЮ © (2007-04-21 04:24) [20]3) Работа с компонентами формы из другого Unit:
procedure SetSubjectFields(SenderForm: TForm; SenderDataSource: TDataSource);
begin
with DataModule1 do begin
(SenderForm.FindComponent("DBEditLookTipSubject") as TDBEdit).DataSource :=
SenderDataSource;
Непонятен смыл выполнения этого кода в этом unite. И что это за unit? Почему нельзя сразу в методе SenderForm написать
DBEditLookTipSubject.DataSource := <нужный DataSource>
← →
Kostafey © (2007-04-21 13:39) [21]> Непонятен смыл выполнения этого кода в этом unite. И что
> это за unit? Почему нельзя сразу в методе SenderForm написать
> DBEditLookTipSubject.DataSource := <нужный DataSource>
UnitLib.pas(37): Undeclared identifier: "DBEditLookTipSubject"
← →
Kostafey © (2007-04-21 13:42) [22]> И что это за unit?
Суть в чем. Я хотел все немного унифицировать.
DBEditLookTipSubject и ряд ему подобных компонентов имеются в несольких формах.
НАзвания компоненотов абсолютно одинаковы, различны только DataSource.
Вот я и решил в процедурку выделить их обработку.
А процедурку - в Unit-библиотеку.
← →
ЮЮ © (2007-04-23 05:10) [23]>
Суть в чем. Я хотел все немного унифицировать.
DBEditLookTipSubject и ряд ему подобных компонентов имеются
> в несольких формах.
> НАзвания компоненотов абсолютно одинаковы, различны только
> DataSource.
> Вот я и решил в процедурку выделить их обработку.
> А процедурку - в Unit-библиотеку.
А для компонента с другим названием что делать? Ещё одну библиотеку писать? Похоже не от того ты плясать пошел, имя компонента - ничто, свойства и методы - всё.
А чего там ещё обрабатывать у TDBEdit-а. В конце концов ничто не мешает использовать метод-обработчик одной формы в качестве обработчика в другой или вызвать в обработчике нужный обработчик как метод.
← →
Kostafey © (2007-04-23 14:16) [24]> А для компонента с другим названием что делать? Ещё одну
> библиотеку писать?
У меня как раз такая ситуация, что компоненты называются одинаокво.
> А чего там ещё обрабатывать у TDBEdit-а. В конце концов
> ничто не мешает использовать метод-обработчик одной формы
> в качестве обработчика в другой или вызвать в обработчике
> нужный обработчик как метод.
Да, Вы правы. Что-то я и забыл про такую возможность.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2007.05.13;
Скачать: [xml.tar.bz2];
Память: 0.51 MB
Время: 0.043 c