30.11.2005, 16:36
общий
это ответ
<i>Здравствуйте, <b>Teapot</b>!</i>
Edit1 - это подкласс формы (Form1, например).
Ошибка происходит именно по этой проблеме. Т.к. Вы пытаетесь обратиться к Edit1 напрямую, а не через форму (Form1.Edit1).
Решения:
1. Обратиться к компоненту через форму: Form1.Edit1.Text
2. Создать процедуру someproc внутри класса формы:
<table border=1><tr><td>
<b>type</b> TForm1 = <b>class</b>(TForm)
...
<b>protected</b>
<b>procedure</b> Someproc;
...
<b>end;</b>
........
<b>procedure</b> Form1.Someproc;
<b>begin</b>
Edit1.Text:= ‘Something‘;
<b>end;</b>
</td></tr></table>
3. Не совсем, конечно, ответ по теме, но несколько рекомендаций (все эти рекомендации Вы можете прочитать в статье Марко Канту "20 правил ООП в Delphi):
1) Называйте компоненты "говорящими" именами (не Edit1, Button1, а, например, edName, btnOK и т.д.);
2) Не обращайтесь к компонентам напрямую - обращайтесь к ним через свойства формы:
<table border=1><tr><td>
<b>type</b>
TmyForm = <b>class</b>(TForm);
edName: TEdit;
<b>protected
procedure</b> SetName(AValue: <b>string</b>);
<b>function</b> GetName: <b>string</b>;
<b>public
property</b> Name: <b>string read</b> GetName <b>write</b> SetName;
<b>end;</b>
........
procedure</b> MyForm.SetName(AValue: <b>string</b>);
<b>begin</b>
edName.Text:= AValue;
<b>end;</b>
<b>function</b> MyForm.GetName: <b>string</b>;
<b>begin</b>
Result:= edName.Text;
<b>end;</b>
</td></tr></table>
Это позволит Вам в дальнейшем перейти на использование любых типов компонентов (например, у которых будет не свойство Text, а свойство Caption).
Далее, в других местах Вы сможете обращаться к Edit так:
MyForm.Name:= ‘Имя‘;
strName:= MyForm.Name;