Помогите ПЛИЗЗЗЗЗ

Hook
Дата: 14.03.2003 06:54:18
Всем...
Доброе Утро

Помогите ПЛИЗЗЗЗЗ :(
Есть несколько Форм.
Одну из форм под названием (InformationF ) я вызвыаю
постоянно среди других Форм.
В Форме (InformationF ) есть control (TEdit) в которую я чо нить
пишу.
Так же в формах которые вызывают (InformationF) есть
control-ы (TEdit) в которые я должен поместить значение из
(InformationF ) control (TEdit)
.
Я попробовал зделать процедурку типа такой :


procedure TInformationF.GetText(F: TForm; C: Tclass);
Var
I:Integer;
begin
With F do
begin
For I:=0 to ComponentCount-1 do
if Components[i].ClassType=C then
With Components[i] as C do
begin
Text:=Edit1.Text;
end;
end;
end;

которая передает Название формы,и Класс который я хочу
использовать. Процедурка раположена в InformationF.
Она работет но только вместо того
чтобы присваивать значение Сontrol-у он значение передает
в InformationF.Caption :(

Помогите уважаемые...
Может я недоглядел что-нить :((

Заранее благодарен!!!!
m_kus
Дата: 14.03.2003 08:37:09
Зачем передаёшь TClass?? Ты же написал, что у тебя именно TEdit?
Ты пользуешься свойством Text, которое есть не у любого класса... Поэтому компилятор пишет не в Components(i).Text (он думает, что там НЕТ такого свойства), а в InformationF.Text...
Но раз уж хочется передавать класс, я бы написал так:
procedure TInformationF.GetText(F: TForm; C: Tclass);

Var
I:Integer;
begin
Assert(C is TCustomEdit);
With F do
begin
For I:=0 to ComponentCount-1 do
if Components[i].ClassType=C then
With Components[i] as TCustomEdit do
begin
Text:=Edit1.Text;
end;
end;
end;
tygra
Дата: 14.03.2003 11:52:30
Я вообще не понял задачу - ты чего, хочешь писать в любую форму в любой контрол или толко в один и тот же?
Hook
Дата: 14.03.2003 12:11:40
У меня на форме несколько TEdits
и кликнув на какой нить Edit
открывается InformationF
и взять отуды значения такового же
Edit-а
tygra
Дата: 14.03.2003 12:27:09
А там оно как появляется?

И мне кажется гораздо лучше оформить функцией, типа:
function TInformationF.GetText(C: string //имя нужного edit-a): string;

Var I:Integer;
begin
For I:=0 to ComponentCount-1 do
if Components[i] is TEdit then begin
Result := Components[i].Text;
Break;
end;
end;

......

//вызывать из другой формы так:
Edit45.text := InformationForm.GetText('Edit45');


А то ты как то через заднее место сделал все, извиняюсь :)
tygra
Дата: 14.03.2003 12:29:38
Эх, забыл:

if Components[i] is TEdit then
if TEdit(Components[i]).Name = C then begin
....
Hook
Дата: 14.03.2003 12:46:31
Уважаемый tygra

Контрол (Form1.Edit) вызывает
форму а там есть InformationF.Edit1
а чо нить туды ввожу и закрываю форму.
а она должна отобразитси на (Form1.Edit)



procedure TInformationF.GetText(F: TForm; C: Tclass);
Var
I:Integer;
begin
With F do
begin
For I:=0 to ComponentCount-1 do
if Components[i].ClassNameIs('TEdit') then
With Components[i] as TEdit do
begin
If name=c1 then
Text:=Edit1.Text;
end;
end;
end;
tygra
Дата: 14.03.2003 14:24:13
Ну и что? Из-за этого зачем писать непонятно что?

function TInformationF.GetText(C: string //имя нужного edit-a): string;

Var I:Integer;
begin
if ShowModal <> mrOk then Exit;--тут показываем форму InformationF юзеру и ждем окончания ввода, если не Ок - ничего не делаем

For I:=0 to ComponentCount-1 do
if Components[i] is TEdit then
if TEdit(Components[i]).Name = C then begin
Result := Components[i].Text;
Break;
end;
end;
--вызывать из другой формы так:

var infform: TInformationF;
infform := TInformationF.Create(Self);--или не делаем это, если при закрытии на убиваем форму

Edit45.text := infform.GetText('Edit45');
Артем1
Дата: 14.03.2003 14:46:28
Может, так?

function TInformationF.GetText(text: string {текст их Form1.Edit1}): string;

begin
if ShowModal = mrOk then
Result := Edit1.Text
else
Result := text;
end;

--вызывать из другой формы так:

var infform: TInformationF;
infform := TInformationF.Create(Self);--или не делаем это, если при закрытии на убиваем форму

Edit45.text := infform.GetText(Edit45.text);