Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
3-1171630884
Stanislav
2007-02-16 16:01
2007.05.13
Подключение к dbf с помощю Jet


15-1176712162
homm
2007-04-16 12:29
2007.05.13
7600GT vs X1650PRO


11-1158934714
Vilko
2006-09-22 18:18
2007.05.13
Окно по форме рисунка?


15-1176752457
Raderd
2007-04-16 23:40
2007.05.13
Как на форме перемещать объекты?


15-1175077282
isasa
2007-03-28 14:21
2007.05.13
Весеннее обострение с Upgrade-om





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский