Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

3 простых вопроса


Страницы:   1 2

Kostafey ©   (2007-04-20 16:29:00) 

По одному вопросы задавать уже мало буду сразу по 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;
...


Kostafey   (2007-04-23 14:16:00) [1]

> А для компонента с другим названием что делать? Ещё одну
> библиотеку писать?

У меня как раз такая ситуация, что компоненты называются одинаокво.


> А чего там ещё обрабатывать у TDBEdit-а. В конце концов
> ничто не мешает использовать метод-обработчик одной формы
> в качестве обработчика в другой или вызвать в обработчике
> нужный обработчик как метод.

Да, Вы правы. Что-то я и забыл про такую возможность.


ЮЮ   (2007-04-23 05:10:00) [2]

>
Суть в чем. Я хотел все немного унифицировать.
DBEditLookTipSubject и ряд ему подобных компонентов имеются
> в несольких формах.
> НАзвания компоненотов абсолютно одинаковы, различны только
> DataSource.
> Вот я и решил в процедурку выделить их обработку.
> А процедурку - в Unit-библиотеку.


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


Kostafey   (2007-04-21 13:42:00) [3]

> И что это за unit?

Суть в чем. Я хотел все немного унифицировать.
DBEditLookTipSubject и ряд ему подобных компонентов имеются в несольких формах.
НАзвания компоненотов абсолютно одинаковы, различны только DataSource.
Вот я и решил в процедурку выделить их обработку.
А процедурку - в Unit-библиотеку.


Kostafey   (2007-04-21 13:39:00) [4]

> Непонятен смыл выполнения этого кода в этом unite. И что
> это за unit? Почему нельзя сразу в методе SenderForm написать
> DBEditLookTipSubject.DataSource := <нужный DataSource>


UnitLib.pas(37): Undeclared identifier: 'DBEditLookTipSubject'


ЮЮ   (2007-04-21 04:24:00) [5]

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>


Плохиш   (2007-04-20 17:53:00) [6]


> {RASkov}   (20.04.07 16:59) [14]
> > [10] Kostafey ©   (20.04.07 16:55)
> > Или нет ?
>
> Немного не так.... Я ведь могу OnCreate обозвать MySozdanieFormy,
>  а ты вызываешь inherited; Т.е. в предке будет искаться
> MySozdanieFormy.

И в чём проблема, не найдёт и не вставит в проект, это вообще директива для компилятора.


Kostafey   (2007-04-20 17:47:00) [7]

> Разницу меду методом и конструктором ощущаешь?

Понял, не дурак, дурак бы не понял :)


{RASkov}   (2007-04-20 17:19:00) [8]

> Разницу меду методом и конструктором ощущаешь?

Собственно разницы, в контесте вопроса об inherited, нет, я специально уклон на имя метода сделал, ибо без параметров inherited; вызывает одноименный метод родителя с теми же параметрами... И вообще все события Control'ов - это свойства :) Вот.


Ega23   (2007-04-20 17:05:00) [9]


> Все. Понял. Спасибо.


Не понял. См. [11], [13].
Разницу меду методом и конструктором ощущаешь?


Kostafey   (2007-04-20 17:02:00) [10]

> Обработчик события OnCreate это не конструктор.


> Немного не так.... Я ведь могу OnCreate обозвать MySozdanieFormy,
> а ты вызываешь inherited; Т.е. в предке будет искаться
> MySozdanieFormy.

Все. Понял. Спасибо.


{RASkov}   (2007-04-20 16:59:00) [11]

> [10] Kostafey ©   (20.04.07 16:55)
> Или нет ?

Немного не так.... Я ведь могу OnCreate обозвать MySozdanieFormy, а ты вызываешь inherited; Т.е. в предке будет искаться MySozdanieFormy.


McSimm_   (2007-04-20 16:58:00) [12]


> А как иначе работать с компонентами формы если они еще не
> созданы?
> Или на момент создания формы они уже созданы ?

На момент вызова обработчика.

Обработчик события OnCreate это не конструктор.


Kostafey   (2007-04-20 16:58:00) [13]

> Нет. найди 10 отличий между названиями методовCreate и
> FormCreate

Боюсь их только 4 :)


Игорь Шевченко   (2007-04-20 16:56:00) [14]


> Поправьте меня в чем не прав.
> inherited - вызывает метод родительского класса. Для TForm1
> это TForm.
> Значит
> procedure TForm1.FormCreate(Sender: TObject);
> begin
> inherited;
> вызовет TForm.Create;
>
> Или нет ?


Нет. найди 10 отличий между названиями методов Create и FormCreate


Kostafey   (2007-04-20 16:55:00) [15]

> Неправильно понимаешь.

Возможно.
Поправьте меня в чем не прав.
inherited - вызывает метод родительского класса. Для TForm1 это TForm.
Значит
procedure TForm1.FormCreate(Sender: TObject);
begin
inherited;
вызовет TForm.Create;

Или нет ?


Ega23   (2007-04-20 16:50:00) [16]


> В данном примере, на сколько я понимаю, вызовется TForm.
> Create
>


Неправильно понимаешь.


Kostafey   (2007-04-20 16:48:00) [17]

Вот так да ! А я думал так не заработает !

procedure TForm1.FormCreate(Sender: TObject);
begin
 Edit1.Text:='Hellow World';
end;


Невероятно! И это случилось в наши дни, в XX веке!(С)


Игорь Шевченко   (2007-04-20 16:46:00) [18]

inherited не лишнее, если форма унаследована от другой формы, в которой на OnCreate есть свой обработчик, который надо выполнить. Иначе лишнее.


Kostafey   (2007-04-20 16:44:00) [19]

> Ну-ка ответь, что такое inherited

Вот так вот с ходу начинают по учебной программе гонять :)

В данном примере, на сколько я понимаю, вызовется TForm.Create

Хм... и правда, в TForm.Create компонентов еще нет...


ppcumax   (2007-04-20 16:41:00) [20]


> А как иначе работать с компонентами формы если они еще не
> созданы?Или на момент создания формы они уже созданы ?


тоже интересует


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо