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

Вниз

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

Наверх




Память: 0.53 MB
Время: 0.052 c
8-1149843230
Kirill.info
2006-06-09 12:53
2007.05.13
Mp3 Stream


15-1176278924
zorik
2007-04-11 12:08
2007.05.13
Jabber и боты


1-1173776106
Demondelphi
2007-03-13 11:55
2007.05.13
Буфер обмена, обмен данными между главной и дочерними формами


2-1177478166
VaLkA
2007-04-25 09:16
2007.05.13
поиск в WebBrowser e


2-1177420765
Kostafey
2007-04-24 17:19
2007.05.13
Игра с формами