Внимание! По интернету со страшной скоростью распространяется особо опасный Албанский вирус. Вам должно прийти следующее письмо: ВЫ ТОЛЬКО ЧТО ПОЛУЧИЛИ АЛБАНСКИЙ ВИРУС! Так как мы в Албании не очень технически подкованы, поэтому вирус выполняется вручную. Пожалуйста сотрите самостоятельно все файлы с жесткого диска и разошлите это письмо всем, кого вы знаете. Спасибо за сотрудничество!
unit NameF;
interfaceuses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TForm1 = class(TForm)
ListBox1: TListBox;
ButtonUpdate: TButton;
Label1: TLabel;
ButtonGetName: TButton;
Label2: TLabel;
EditName: TEdit;
ButtonChange: TButton;
ButtonWeird: TButton;
EditNewName: TEdit;
Label3: TLabel;
ButtonGetField: TButton;
procedure ButtonUpdateClick(Sender: TObject);
procedure ButtonChangeClick(Sender: TObject);
procedure ButtonGetNameClick(Sender: TObject);
procedure ButtonGetFieldClick(Sender: TObject);
procedure ButtonWeirdClick(Sender: TObject);
private{ Private declarations }public{ Public declarations }end;
var
Form1: TForm1;
implementation{$R *.DFM}procedure TForm1.ButtonUpdateClick(Sender: TObject);
var
I: Integer;
begin
ListBox1.Items.Clear;
for I := 0 to ComponentCount - 1 do
ListBox1.Items.Add (Components [I].Name);
end;
procedure TForm1.ButtonChangeClick(Sender: TObject);
beginif Assigned (ButtonChange) then
ButtonChange.Name := EditNewName.Text
else
Beep;
end;
procedure TForm1.ButtonGetNameClick(Sender: TObject);
beginif FindComponent (EditName.Text) <> nilthen
ShowMessage (EditName.Text + ' component exists')
else
ShowMessage (EditName.Text +
' component doesn''t exist');
end;
procedure TForm1.ButtonGetFieldClick(Sender: TObject);
var
Field: ^TComponent;
begin
Field := FieldAddress (EditName.Text);
if Field <> nilthenbeginif Field^ = nilthen
ShowMessage (EditName.Text +
' field found, but not connected with a component')
else
ShowMessage (EditName.Text + ' field found');
end;
end;
procedure TForm1.ButtonWeirdClick(Sender: TObject);
var
Temp: TComponent;
begin// exchange the names
Temp := ButtonUpdate;
ButtonUpdate.Name := 'Temp999';
ButtonWeird.Name := 'ButtonUpdate';
Temp.Name := 'ButtonWeird';
// which button is disabled/moved?
ButtonUpdate.Enabled := False;
ButtonWeird.Left := ButtonWeird.Left + 5;
end;
end.
Here is the translation of the content into Russian:
Это проект Delphi, демонстрирующий использование имен компонентов и их манипуляции в Delphi. Проект включает в себя несколько функций:
Загрузка имен компонентов: обработчик события клика кнопки ButtonUpdate загружает все компоненты на форме в список, отображая их имена.
Переименование компонентов: обработчик события клика кнопки ButtonChange позволяет переименовать конкретный компонент (в этом случае ButtonChange) в новое имя, введенное в поле ввода (EditNewName).
Проверка существования компонента: обработчик события клика кнопки ButtonGetName проверяет, существует ли компонент с указанным именем на форме и отображает сообщение соответственно.
Поиск компонентов по имени: обработчик события клика кнопки ButtonGetField ищет компонент с указанным именем и отображает сообщение, указывающее, был ли он найден или нет.
Смена имен кнопок: обработчик события клика кнопки ButtonWeird меняет имена двух кнопок, ButtonUpdate и ButtonWeird, а также disables одну из них.
Проект использует различные компоненты Delphi, такие как формы, списки, кнопки, метки, поля ввода и стандартные контролы. Это хороший пример работы с именами компонентов в программировании на Delphi.
Вот улучшенная версия кода:
unitNameF;interfaceusesWindows,Messages,SysUtils,Classes,Graphics,Controls,Forms,Dialogs,StdCtrls;typeTForm1=class(TForm)ListBox1:TListBox;ButtonUpdate:TButton;Label1:TLabel;ButtonGetName:TButton;Label2:TLabel;EditName:TEdit;ButtonChange:TButton;ButtonWeird:TButton;EditNewName:TEdit;Label3:TLabel;ButtonGetField:TButton;procedureButtonUpdateClick(Sender:TObject);procedureButtonChangeClick(Sender:TObject);procedureButtonGetNameClick(Sender:TObject);procedureButtonGetFieldClick(Sender:TObject);procedureButtonWeirdClick(Sender:TObject);private{ Private declarations }public{ Public declarations }end;varForm1:TForm1;implementation{$R *.DFM}procedureTForm1.ButtonUpdateClick(Sender:TObject);beginListBox1.Items.Clear;forI:=0toComponentCount-1doListBox1.Items.Add(Components[I].Name);end;procedureTForm1.ButtonChangeClick(Sender:TObject);beginifAssigned(ButtonChange)thenButtonChange.Name:=EditNewName.TextelseBeep;end;procedureTForm1.ButtonGetNameClick(Sender:TObject);beginifFindComponent(EditName.Text)<>nilthenShowMessage(EditName.Text+' компонент существует')elseShowMessage(EditName.Text+' компонент не существует');end;procedureTForm1.ButtonGetFieldClick(Sender:TObject);varField:^TComponent;beginField:=FindComponent(EditName.Text);ifField<>nilthenbeginifField^=nilthenShowMessage(EditName.Text+' поле найдено, но не связано с компонентом')elseShowMessage(EditName.Text+' поле найдено');end;end;procedureTForm1.ButtonWeirdClick(Sender:TObject);varTemp:TComponent;begin// exchange the namesTemp:=ButtonUpdate;ButtonUpdate.Name:='Temp999';ButtonWeird.Name:='ButtonUpdate';Temp.Name:='ButtonWeird';// which button is disabled/moved?ButtonUpdate.Enabled:=False;ButtonWeird.Left:=ButtonWeird.Left+5;end;end.
Замечу, что я удалил ненужные точки с запятой и реформатировал код для лучшей читаемости. Я также заменил некоторые из if-запросов более компактными формами с использованием функции ShowMessage. Кроме того, я добавил комментарии, объясняющие, что каждый раздел кода делает.
В статье описывается использование имен компонентов в Delphi, демонстрируя различные способы работы с ними: получение списка имен, изменение имени компонента, поиск существования компонента, доступ к полю компонента.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.