W Cat - Описание языка PascalABC.NET
- Название:Описание языка PascalABC.NET
- Автор:
- Жанр:
- Издательство:неизвестно
- Год:неизвестен
- ISBN:нет данных
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
W Cat - Описание языка PascalABC.NET краткое содержание
PascalABC.NET — это язык программирования Паскаль нового поколения, включающий классический Паскаль, большинство возможностей языка Delphi, а также ряд собственных расширений. Он реализован на платформе Microsoft.NET и содержит все современные языковые средства: классы, перегрузку операций, интерфейсы, обработку исключений, обобщенные классы и подпрограммы, сборку мусора, лямбда-выражения, средства параллельного программирования.
PascalABC.NET является мультипарадигменным языком: на нем можно программировать в структурном, объектно-ориентированном и функциональном стилях.
PascalABC.NET — это также простая и мощная интегрированная среда разработки, поддерживающая технологию IntelliSense, содержащая средства автоформатирования, встроенный отладчик и встроенный дизайнер форм.
Описание языка PascalABC.NET - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
Рассмотрим следующую программу:
usesABCObjects,GraphABC;
var
c1,c2: ContainerABC;
r: CircleABC;
begin
SetWindowSize(300,300);
c1 := newContainerABC(50,30);
c1.Add( newRectangleABC(0,0,200,100,clGreen));
r := newCircleABC(15,15,70,clYellow);
end.
После ее запуска графический экран имеет вид:
Контейнер c1 содержит зеленый прямоугольник, а объект r не имеет владельца (r.Owner=nil). Нетрудно убедиться, что ObjectsCount=2 (контейнер и круг), а c1.Count=1.
Добавим круг в контейнер, дописав в конец программы строчку
c1.Add(r);
После запуска программы графический экран примет вид:
Круг r теперь принадлежит контейнеру (r.Owner=с2), ObjectsCount=1 (только контейнер), а c1.Count=2. Кроме этого, координаты круга пересчитываются относительно координат контейнера-владельца (они по-прежнему равны (15,15), но относительно левого верхнего угла контейнера c1).
Такой же эффект можно было получить от оператора
r.Owner := c1;
Создадим второй контейнер c2 и поменяем владельца у r на c2. Для этого допишем в конец строки:
c2 := newContainerABC(50,160);
c2.Add( newRectangleABC(0,0,200,100,clMoneyGreen));
r.Owner := c2;
После запуска программы графический экран примет вид:
Как мы видим, круг r поменял владельца, и теперь имеет координаты (15,15), но относительно левого верхнего угла нового владельца c2.
Если вместо строчки r.Owner:=c2; написать r.Owner:= nil; , то круг r потеряет владельца и снова будет позиционироваться относительно левого верхнего угла экрана:
Графика и анимация
Анимация без мерцания
Данная программа иллюстрирует применение процедур LockDrawing и Redraw для реализации анимации без мерцания:
usesGraphABC;
begin
LockDrawing;
for vari:=1 to 500 do
begin
Window.Clear;
Brush.Color := clGreen;
Ellipse(i,100,i+100,200);
Redraw;
Sleep(1);
end;
end.
Основная идея состоит в следующем: отключим рисование на экране, вызвав LockDrawing (рисование будет осуществляться только во внеэкранном буфере), после чего будем всякий раз формировать новый кадр изображения и выводить его целиком на экран, вызывая Redraw. При вызове Redraw перерисовывается все графическое окно, поэтому скорость анимации ограничена скоростью вывода внеэкранного буфера на экран.
Простейшие события
Рисование мышью в графическом окне
Данная программа осуществляет рисование мышью в графическом окне:
usesGraphABC;
procedur eMouseDown(x,y,mb: integer);
begin
MoveTo(x,y);
end;
procedur eMouseMove(x,y,mb: integer);
begin
ifmb=1 thenLineTo(x,y);
end;
begin
// Привязка обработчиков к событиям
OnMouseDown := MouseDown;
OnMouseMove := MouseMove
end.
Перемещение окна с помощью клавиатуры
Данная программа осуществляет перемещение графического окна с помощью клавиатуры:
usesGraphABC;
procedur eKeyDown(Key: integer);
begin
caseKey of
VK_Left: Window.Left := Window.Left - 2;
VK_Right: Window.Left := Window.Left + 2;
VK_Up: Window.Top := Window.Top - 2;
VK_Down: Window.Top := Window.Top + 2;
end;
end;
begi n
// Привязка обработчиков к событиям
OnKeyDown := KeyDown;
end.
Пример использования таймера
Данная программа выводит 1 каждые 100 миллисекунд в течение 3 секунд:
usesTimers;
procedur eTimerProc;
begin
write(1);
end;
begin
vart := newTimer(100,TimerProc);
t.Start;
Sleep(3000);
end.
Вызов Sleep здесь обязателен, иначе программа после создания таймера сразу закончится, и обработчик таймера ни разу не сработает.
Интервал:
Закладка: