Rambler's Top100
"Knowledge itself is power"
F.Bacon
Поиск | Карта сайта | Помощь | О проекте | ТТХ  
 Квинтана
  
Главная

Список тестов

 
 К н и г и
 
Книжная полка
 
 
Библиотека
 
  
  
 


Поиск
 
Поиск по КС
Поиск в статьях
Яndex© + Google©
Поиск книг

 
  
Тематический каталог
Все манускрипты

 
  
Карта VCL
ОШИБКИ
Сообщения системы

 
Форумы
 
Круглый стол
Новые вопросы

 
  
Базарная площадь
Городская площадь

 
   
С Л С

 
Летопись
 
Королевские Хроники
Рыцарский Зал
Глас народа!

 
  
ТТХ
Конкурсы
Королевская клюква

 
Разделы
 
Hello, World!
Лицей

Квинтана

 
  
Сокровищница
Подземелье Магов
Подводные камни
Свитки

 
  
Школа ОБЕРОНА

 
  
Арсенальная башня
Фолианты
Полигон

 
  
Книга Песка
Дальние земли

 
  
АРХИВЫ

 
 

Сейчас на сайте присутствуют:
 
 
 13:21 Германн
 13:18 Fox
 13:18 Сергей Ремянников
 13:17 777
 13:16 Лупень сизокрылый
 13:13 Ядерный физик
 13:13 Dandi
 
 
Во Флориде и в Королевстве сейчас  13:21[Войти] | [Зарегистрироваться]
Р  Ы  Ц  А  Р  С  К  А  Я     К  В  И  Н  Т  А  Н  А
Логотип

VCL

Вопрос №1
На некоторой неглавной форме Form2 встречается такой код:

procedure TForm2.Button1Click(Sender: TObject);
begin
  Form2.Label1.Caption := 'Кнопка нажата';
end;



Всё ли правильно в этом коде (при условии что компонент Label1: TLabel действительно существует на форме)? Если нет, то что именно?
 Варианты ответов:
Всё правильно
У компонента TLabel нет свойства Caption, у него аналогичное свойство называется Text
Здесь нельзя обращаться к компоненту Label1 через переменную Form2
Обработчик не учитывает значение параметра Sender
 
Вопрос №2
Создадим новый проект на Delphi с одной формой, положим на неё кнопку Button1. Теперь создадим ещё одну форму Form2. В модуле Unit1 в список uses добавим Unit2 и напишем такой обработчик нажатия Button1

procedure TForm1.Button1Click(Sender: TObject);
begin
  Form2.ShowModal;
end;


Легко убедиться, что такой код работает правильно, т.е. при нажатии на Button1 модально открывается форма Form2. Почему мы можем работать с объектом Form2, хотя нигде не вызывали его конструктор?
 Варианты ответов:
Формы – это особые классы, которые не нуждаются в создании с помощью конструктора
Код создания формы помещается в главный модуль проекта
Форма создаётся автоматически при чтении её DFM-файла
 
Вопрос №3
На главную форму в режиме проектирования помещена метка Label1 и вручную изменён конструктор так, что код формы выглядит следующим образом.

unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Label1: TLabel;
  private
    { Private declarations }
  public
    constructor Create(AOwner: TComponent); override;
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

constructor TForm1.Create(AOwner: TComponent);
begin
  Label1.Font.Style := [fsBold];
  inherited;
end;

end.


Что произойдёт при запуске этой программы?
 Варианты ответов:
Шрифт метки станет жирным
Шрифт метки останется нормальным
Метка не будет видна
Произойдёт исключение Access violation
 
Вопрос №4
На некоторой форме вручную создаются компоненты TLabel и TStaticText на одном и том же месте

procedure TForm1.Button1Click(Sender: TComponent);
var
  L: TLabel;
  S: TStaticText;
begin
  S := TStaticText.Create(Self);
  S.Caption := 'Это TStaticText        ';
  S.Top := 10;
  S.Left := 10;
  S.Parent := Self;
  L := TLabel.Create(Self);
  L.Caption := 'Это TLabel          ';
  L.Top := 10;
  L.Left := 10;
  L.Parent := Self;
  L.BringToFront;
end;


Какую надпись и почему увидит пользователь?
 Варианты ответов:
«Это TStaticText», потому что TStaticText был создан первым
«Это TLabel», потому что TLabel был создан позже и оказался «над» TStaticText
«Это TStaticText», потому что TStaticText оконный компонент, а TLabel неоконный
«Это TLabel», потому что TLabel перенесён наверх вызовом BringToFront
 
Вопрос №5
Создан компонент с некоторым свойством Tag2

TSomeComponent = class(TComponent)
private
  FTag2: Integer;
public
  property Tag2: Integer read FTag2 write FTag2 default 5;
end;


Чему будет равно значение свойства Tag2 сразу после создания компонента TSomeComponent?
 Варианты ответов:
0
5
Некоторой случайной величине
Свойствам, объявленным с директивой default, должно быть присвоено значение в конструкторе, без этого код просто не откомпилируется
 
Вопрос №6
Что неправильно в этом коде?

procedure MyClick(Sender: TObject);
begin
  ...
end;

...

Button1.OnClick := MyClick;

 Варианты ответов:
MyClick имеет неверный набор параметров
MyClick является обычной процедурой, а не методом класса
Назначение обработчиков событий должно выполняться с помощью оператора @
Всё правильно
 
Вопрос №7
Требуется удалить компоненты, принадлежащие форме и удовлетворяющие некоторому условию. Среди компонентов могут встречаться как созданные при проектировании, так и созданные программно. Для этого в одном из методов формы используется такой код:

var
  I: Integer;

for I := 0 to ComponentCount – 1 do
  if {Проверка условия} then
    Components[I].Free;


Что неправильно в этом коде?
 Варианты ответов:
Всё правильно
Компоненты, созданные при проектировании, нельзя удалять с помощью Free
Не гарантируется, что будут удалены все требуемые компоненты
Возникнет исключение, потому что индекс выйдет за границу списка
 
Вопрос №8
Условия – те же, что и в предыдущем вопросе, но теперь для удаления компонентов используется следующий код

var
  I: Integer;

I := 0;
while I < ComponentCount do
begin
  if {Проверка условия} then
    Components[I].Free;
  Inc(I);
end;


Что неправильно в этом коде?
 Варианты ответов:
Всё правильно
Компоненты, созданные при проектировании, нельзя удалять с помощью Free
Не гарантируется, что будут удалены все требуемые компоненты
Возникнет исключение, потому что индекс выйдет за границу списка
 
Вопрос №9
Во время выполнения программы создаются два списка рисунков следующим кодом

var
  IL1, IL2: TImageList;

IL1 := TImageList.Create(Self);
{Инициализация свойств IL1}

IL2 := TImageList.Create(nil);
{Инициализация свойств IL2}


В чём будет разница между списками IL1 и IL2?
 Варианты ответов:
Список IL1 будет удалён при удалении формы автоматически, IL2 необходимо удалять вручную
Список IL1 попадёт в список Components формы, IL2 – не попадёт
Список IL1 можно найти с помощью FindComponent, IL2 – нельзя
Всё вышеперечисленное
Никакой разницы
При создании списка IL2 возникнет исключение, так как владелец компонента не может быть нулевым
 
Вопрос №10
На форме во время проектирования размещены компоненты, в том числе панель Panel1 и некоторые компоненты на ней. В одном из методов формы необходимо скрыть все компоненты, принадлежащие этой панели. Для этого написан такой код

var
  I: Integer;

for I := 0 to ControlCount – 1 do
  if Controls[I].Parent = Panel1 then
    Controls[I].Visible := False;


Каков будет результат выполнения этого кода?
 Варианты ответов:
Никакого видимого результата
Нужные компоненты будут скрыты
Код возбудит исключение из-за выхода индекса за пределы списка
Код не откомпилируется, так как Controls[I] имеет тип TControl, а свойство Visible у TControl имеет видимость protected
 
Вопрос №11
В одном из методов формы написан следующий код

var
  MyFont: TFont;
begin
  MyFont := TFont.Create;
  // Здесь идут присваивания свойств MyFont
  Canvas.Font := MyFont;
  MyFont.Free;
  Canvas.TextOut(100, 100, ‘Text’);
end;


Что неправильно в этом коде?
 Варианты ответов:
Всё правильно
Экземпляры класса TFont нельзя создавать вручную вне TCanvas
Свойство Canvas.Font нельзя присваивать целиком, только отдельные свойства
Объект MyFont удаляется до того, как будет использован методом TextOut
 
Вопрос №12
На форме в одном из её методов следующим кодом создана кнопка, не имеющая владельца

Btn := TButton.Create(nil);
// Присваиваем свойства Btn
Btn.Parent := Self;


Какой объект отвечает за удаление объекта Btn при закрытии формы?
 Варианты ответов:
Никто не отвечает, программист должен удалить её вручную
Отвечает сама форма
Отвечает объект Application
Создавать кнопки, не имеющие владельца, нельзя
 
  
Время на сайте: GMT минус 5 часов

Если вы заметили орфографическую ошибку на этой странице, просто выделите ошибку мышью и нажмите Ctrl+Enter.
Функция может не работать в некоторых версиях броузеров.

Хостинг предоставлен компанией DOTNETPARK (ASP.NET, MS SQL hosting)  

 
© При использовании любых материалов «Королевства Delphi» необходимо указывать источник информации. Перепечатка авторских статей возможна только при согласии всех авторов и администрации сайта.
Все используемые на сайте торговые марки являются собственностью их производителей.

Яндекс цитирования