Такая задача: пишу процедуру которая что-то делает, из этой процедуры нужно обращаться к свойствам компонента, размещенного на форме. Как это реализовать? Передавать объект как параметр или еще как?
Просьба без наездов, только начинаю программировать
Здравствуйте, Sasiskin, Вы писали:
S>Такая задача: пишу процедуру которая что-то делает, из этой процедуры нужно обращаться к свойствам компонента, размещенного на форме. Как это реализовать? Передавать объект как параметр или еще как?
S>Просьба без наездов, только начинаю программировать
1. Можно процедуру описать как метод самой формы -> тогда к компоненту обращаться по имени
2. Если процедура "лежит" в том же модуле, где описана твоя форма, то обращаться ч/з <Form_Name>.<Component_Name>
3. Если процедура "лежит" в отдельном модуле, то да, лействительно, передавать сам обьект.
Здравствуйте, Ozone, Вы писали:
O>Здравствуйте, Sasiskin, Вы писали:
S>>Такая задача: пишу процедуру которая что-то делает, из этой процедуры нужно обращаться к свойствам компонента, размещенного на форме. Как это реализовать? Передавать объект как параметр или еще как?
S>>Просьба без наездов, только начинаю программировать
O>1. Можно процедуру описать как метод самой формы -> тогда к компоненту обращаться по имени
O>2. Если процедура "лежит" в том же модуле, где описана твоя форма, то обращаться ч/з <Form_Name>.<Component_Name>
O>3. Если процедура "лежит" в отдельном модуле, то да, лействительно, передавать сам обьект.
А по моему можно просто в uses указать модуль в котором описана форма с которой нужно работать и обращаться <Form_Name>.<Component_Name>. Правда это в том случае если процедура будет работать только с одной формой
Здравствуйте, nim, Вы писали:
nim>Здравствуйте, Ozone, Вы писали:
O>>Здравствуйте, Sasiskin, Вы писали:
S>>>Такая задача: пишу процедуру которая что-то делает, из этой процедуры нужно обращаться к свойствам компонента, размещенного на форме. Как это реализовать? Передавать объект как параметр или еще как?
S>>>Просьба без наездов, только начинаю программировать
O>>1. Можно процедуру описать как метод самой формы -> тогда к компоненту обращаться по имени
O>>2. Если процедура "лежит" в том же модуле, где описана твоя форма, то обращаться ч/з <Form_Name>.<Component_Name>
O>>3. Если процедура "лежит" в отдельном модуле, то да, лействительно, передавать сам обьект.
nim>А по моему можно просто в uses указать модуль в котором описана форма с которой нужно работать и обращаться <Form_Name>.<Component_Name>. Правда это в том случае если процедура будет работать только с одной формой
Можно и так.
Здравствуйте, Ozone, Вы писали:
O>Здравствуйте, Sasiskin, Вы писали:
S>>Такая задача: пишу процедуру которая что-то делает, из этой процедуры нужно обращаться к свойствам компонента, размещенного на форме. Как это реализовать? Передавать объект как параметр или еще как?
S>>Просьба без наездов, только начинаю программировать
O>1. Можно процедуру описать как метод самой формы -> тогда к компоненту обращаться по имени
O>2. Если процедура "лежит" в том же модуле, где описана твоя форма, то обращаться ч/з <Form_Name>.<Component_Name>
O>3. Если процедура "лежит" в отдельном модуле, то да, лействительно, передавать сам обьект.
Где можно подсмотреть синтаксис по первому и третьему варианту, в хелпе не нашел.
Попробовал второй вариант: в сучае создания простого приложения работает, а я замахнулся на ActiveForm там почему-то такой подход не проходит.
Здравствуйте, Sasiskin, Вы писали:
S>Где можно подсмотреть синтаксис по первому и третьему варианту, в хелпе не нашел.
S>Попробовал второй вариант: в сучае создания простого приложения работает, а я замахнулся на ActiveForm там почему-то такой подход не проходит.
type
TMainForm = class(TForm)
private
{ Private declarations }
procedure MyProc; // твоя процедура
public
{ Public declarations }
end;
var
MainForm: TMainForm;
{...}
procedure TMainForm.MyProc;
begin
{...}
end;
Здравствуйте, Ozone, Вы писали:
O>Здравствуйте, Sasiskin, Вы писали:
O>O>type
O> TMainForm = class(TForm)
O> private
O> { Private declarations }
O> procedure MyProc; // твоя процедура
O> public
O> { Public declarations }
O> end;
O>var
O> MainForm: TMainForm;
O>{...}
O>procedure TMainForm.MyProc;
O>begin
O> {...}
O>end;
O>
Спасибо за помощь
Hello, Sasiskin!
S> Попробовал второй вариант: в сучае создания простого приложения
S> работает, а я замахнулся на ActiveForm там почему-то такой подход не
Еще бы — это же форма вообще, на ней нет такого компонента.
Вариант. 1
If ActiveForm is TMySuperFormClass then
with (* var *) MySuperFormClass do begin
...
MySuperLabel.Caption := 'here, kitty, kitty, kitty';
...
end;
Вариант. 2
If ActiveForm is TMySuperFormClass then
with ActiveForm as TMySuperFormClass do begin
...
MySuperLabel.Caption := 'here, kitty, kitty, kitty';
...
end;
PS: как же я затрахался писать if x
is y then with x
as y
do...
Хочу как в Component Pascal, где IS уже приводит типы...
--
[tip] Fix for Outlook Express quoting:
http://Arioch.nm.ru/FL/Fidolook_SL.png
E-mail is faked because of spam. the_Arioch@NM.falseDomain.ru
Posted via RSDN NNTP Server 1.8 beta