- Ваш компьютеp не загpужается. Мы тpебуем, чтоб сменили пpоцессоp! А в синей таблице (имеется в виду NC) были какие-то с pешётками (имеются в виду защищённые системные файлы). Наш сын хоpошо в этом pазбиpается, они в техникуме все компьютеpы пpоходят. Он сказал, что это сбои на винчестеpе, но ему удалось от них избавиться...
unit Editlbl1;
interfaceuses
SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
Forms, Dialogs, stdctrls;
type
TLabelEdit = class(TWinControl)
private{ Private declarations }
FEdit: TEdit;
FLabel: TLabel;
function GetLabelCaption: string;
procedure SetLabelCaption(LabelCaption: string);
function GetEditText: string;
procedure SetEditText(EditText: string);
protected{ Protected declarations }public{ Public declarations }constructor Create(AOwner: TComponent); override;
publishedproperty LabelCaption: string read GetLabelCaption write SetLabelCaption;
property EditText: string read GetEditText write SetEditText;
property Left;
property Top;
property Width;
property Height;
property Text;
property Font;
{ Можете опубликовать другие, необходимые вам свойства. }{ Published declarations }end;
procedureRegister;
implementationconstructor TLabelEdit.Create(AOwner: TComponent);
begininherited Create(AOwner);
FEdit := TEdit.Create(self);
FLabel := TLabel.Create(self);
with FLabel dobegin
Width := FEdit.Width;
visible := true;
Parent := self;
Caption := 'LabelEdit';
end;
with FEdit dobegin
Top := FLabel.Height + 2;
Parent := self;
Visible := true;
end;
Top := 0;
Left := 0;
Width := FEdit.Width;
Height := FEdit.Height + FLabel.Height;
Visible := true;
end;
function TLabelEdit.GetLabelCaption: string;
begin
Result := FLabel.Caption;
end;
procedure TLabelEdit.SetLabelCaption(LabelCaption: string);
begin
FLabel.Caption := LabelCaption;
end;
function TLabelEdit.GetEditText: string;
begin
Result := FEdit.Text;
end;
procedure TLabelEdit.SetEditText(EditText: string);
begin
FEdit.Text := EditText;
end;
procedureRegister;
begin
RegisterComponents('Test', [TLabelEdit]);
end;
end.
Перевод:
Это проект Delphi, который объединяет TLabel (етiqueta) и TEdit (редактор текста) в один custom-компонент, называемый TLabelEdit.
Компонент имеет три свойства: LabelCaption, EditText и несколько других, таких как Left, Top, Width, Height, Text и Font. Свойство LabelCaption получает или устанавливает текст, отображаемый на этикете, в то время как свойство EditText получает или устанавливает текст, отображаемый в редакторе.
Конструктор компонента создает TLabel и TEdit, и initializes их свойства. Он также настраивает родительско-детские отношения между компонентами.
Методы GetLabelCaption, SetLabelCaption, GetEditText и SetEditText обеспечивают функциональность получателя и установщика для свойств LabelCaption и EditText.
Наконец, процедура Register регистрирует TLabelEdit-компонент в Delphi IDE, чтобы он мог быть использован в проектах.
Некоторые наблюдения:
Конструктор компонента создает TLabel и TEdit как приватные поля (FLabel и FEdit). Это хорошая практика, потому что она защищает внутреннее состояние компонента.
Свойства компонента доступны для всех, что может быть или не быть желаемым в зависимости от того, как будет использоваться компонент.
Не видно механизмов обработки ошибок, таких как проверка, созданы ли TLabel и TEdit перед попыткой доступа к их свойствам.
Альтернативное решение:
Вместо создания custom-компонента, который объединяет TLabel и TEdit, можно использовать Panel или другой контейнерный компонент для расположения двух компонентов рядом. Это будет более гибким подходом, потому что не потребует создания нового компонента с собственными свойствами и методами.
Комбинация TLabel и TEdit позволяет создавать пользовательский компонент, сочетающий в себе функции метки и текстового поля для ввода данных.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.