Консультация № 138427
29.05.2008, 08:56
0.00 руб.
0 1 1
Здравствуйте, уважаемые эксперты!
Подскажите, пожалуйста, как программно(помещая ее мышкой на форму) создать метку(TLabel) на форме, и потом обращаться к ее свойствам?

Обсуждение

Неизвестный
29.05.2008, 15:54
общий
это ответ
Здравствуйте, Chargos!
Для того чтобы создать компонент <b>Tlabel</b> программно добавьте в <b>Uses</b> модуль <b>StdCtrls</b>. Потом объявите глобальную переменную <b>MyLabel</b>, её тип - <b>TLabel</b>. Положите на форму кнопку, по её нажатию мы будем создавать подпись. В обработчик события <b>OnClick</b> поставьте этот код:

<Font color=green>//Создание подписи</font>
<b>procedure</b> TForm2.Button1Click(Sender: TObject);
begin
  <Font color=green>//Если подпись не создана, то создаем</font>
  <b>if</b> MyLabel = <b>nil</b> <b>then</b>
   begin
<Font color=green>//Создаем подпись</font>
    MyLabel:=TLabel.Create(<b>nil</b>);
    <Font color=green>//помещаем её на форму</font>
    Form2.InsertControl(MyLabel);
    <Font color=green>//Изменяем заголовок, по умолчанию он пустой</font>
    MyLabel.Caption:=‘Программно созданная подпись‘;
   end
  <b>else</b>
   <Font color=green>//Если подпись уже создана, то выводим сообщение об ошибке</font>
   Application.MessageBox(‘Подпись уже создана!‘, ‘Ошибка!!!‘, MB_OK + MB_ICONERROR);
end;

Обращаться к свойствам Label‘а нужно так же как к положенному на форму.
В приложении пример создающий подпись и позволяющий изменить её текст.
Этот способ создания компонентов называется динамическим.
Удачи!!!

Приложение:
unit Unit2;interfaceuses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;type TForm2 = class(TForm) Button1: TButton; Button2: TButton; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private declarations } public { Public declarations } end;var Form2: TForm2; //компонент TLabel MyLabel: TLabel;implementation{$R *.dfm}//Создание подписиprocedure TForm2.Button1Click(Sender: TObject);begin //Если подпись не создана, то создаем if MyLabel = nil then begin //Создаем подпись MyLabel:=TLabel.Create(nil); //помещаем её на форму Form2.InsertControl(MyLabel); //Изменяем заголовок, по умолчанию он пустой MyLabel.Caption:=‘Программно созданная подпись‘; end else //Если подпись уже создана, то выводим сообщение об ошибке Application.MessageBox(‘Подпись уже создана!‘, ‘Ошибка!!!‘, MB_OK + MB_ICONERROR);end;//Изменение подписиprocedure TForm2.Button2Click(Sender: TObject);begin //Если подпись не создана, то выводим сообщение об ошибке и выходим из процедуры if MyLabel = nil then begin Application.MessageBox(‘Сначало создайте подпись!‘, ‘Ошибка!!!‘, MB_OK + MB_ICONERROR); exit; end; //Иначе изменяем подпись MyLabel.Caption:=InPutBox(‘Заголовок‘, ‘Введите новый текст: ‘, ‘Текст‘);end;end.
Форма ответа