Консультация № 151420
22.11.2008, 13:22
0.00 руб.
0 1 1
Здравствуйте Сoupler! Отправляю этот вопрос только Вам. Очень понравился Ваш ответ на вопрос № 150853. Я как только пополню счёт мобильника - поблагодорю смс-кой. Только ещё очень нужно, чтобы Вы прокомментировали код модуля (желательно построчно), просто я новичок в Delphi. У меня есть хороший опыт работы с языком Pascal, так что просто выделите каким образом происходит создание класса, также как узнаем имя класса, имя предка класса компонентов и т.д. (как с предыдущего моего вопроса). Спасибо Вам за помощь.

Код:
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, Buttons;

type
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
Memo1: TMemo;
BitBtn1: TBitBtn;
Image1: TImage;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
var
i: integer;
s: string;
begin
for i := 0 to form1.ComponentCount - 1 do
begin
s := form1.Controls[i].ClassName;
s := s + ' Parent=' + form1.Controls[i].ClassParent.ClassName + ' Memory: ' + inttostr(form1.Controls[i].InstanceSize);
if form1.Controls[i] is TGraphicControl then
s := s + ' Данный клас порожден от TGraphicControl';
showmessage(s);
end;
end;

end.

Обсуждение

Неизвестный
22.11.2008, 18:03
общий
это ответ
Здравствуйте, Compile!
Прокомментировал как мог, просто код очень простой - используются только методы и свойства класса TObject (в этом и состояло задание).
Создания классов TForm1, TButton и т.д. нет, так как за это отвечает библиотека VCL.
По всем методам TObject есть справка в Delphi.
procedure TForm1.FormCreate(Sender: TObject);
var
i: integer;//счетчик для выбора компонентов
s: string;//строка, которую выводим
begin
for i := 0 to form1.ComponentCount - 1 do//перебираем все компоненты на форме от нулевого до последнего
begin
s := form1.Controls[i].ClassName;//имя класса (ну, собственно, ClassName и есть)
s := s + ' Parent=' + form1.Controls[i].ClassParent.ClassName + ' Memory: ' + inttostr(form1.Controls[i].InstanceSize);//имя родителя и размер памяти
if form1.Controls[i] is TGraphicControl then//is проверяет, можно ли от одного класса перейти к другому с помощью наследования
s := s + ' Данный клас порожден от TGraphicControl';
showmessage(s);//выводим полученную строку
end;
end;
Форма ответа