Как сделать окно ввода в паскале

Добавил пользователь Евгений Кузнецов
Обновлено: 18.09.2024

Procedure Window(X1, Y1, X2, Y2 : Byte);

Режим

Замечания

X1 и Y1 - координаты верхнего левого угла окна, а X2 и Y2 - координаты нижнего правого угла. Координата верхнего левого угла экрана равна (1, 1). Минимальный размер текстового окна - один столбец на одну строку. Если какая-либо координата недопустима, то обращение к процедуре Window игнорируется.

Заданное по умолчанию окно - (1, 1, 80, 25) в режиме 25-и строк и (1, 1, 80, 43) в режиме 43-х строк, что соответствует всему экрану.

Все экранные координаты, кроме координат самого окна, являются зависимыми относительно текущего окна. Например, GotoXY(1, 1) всегда будет устанавливать курсор в верхний левый угол текущего окна.

Многие процедуры и функции Crt являются относительными к текущему окну, включая ClrEol, ClrScr, DelLine, GotoXY, InsLine, WhereX, WhereY, Read, Readln, Write и Writeln.

В переменных WindMin и WindMax хранятся текущие размеры окна. При обращении к процедуре Window, курсор всегда перемещается в позицию (1, 1).

В данном уроке будут рассматриваться понятия переменной, типов данных. Ввод и вывод данных. Решены задачи по теме.

Опытный программист знает, а новичку полезно узнать, что главными элементами любой программы являются переменные, константы и операторы.

Переменными называют величины, значения которых изменятся в процессе выполнения программы.

Константами называются величины, которые не изменяют своего значения.

Операторы описывают те действия, которые должна выполнять программа.

Тип переменной является важнейшей характеристикой переменной. Определяет вид данных, содержащихся в переменной, набор операций, которые можно выполнять над этими данными. В Паскале существуют много типов переменных, для начала познакомимся с двумя:

Integer — целый тип. Описывает числа (например число 6 или 18 или -50).

Real — вещественный тип. Служит для хранения дробных чисел (например число 6,2 или 18,9 или -50,7).

Описать переменную — это значит указать после зарезервированного слова Var имя и тип переменной. Например:

Var a: integer;

Var a,b: real;

Для ввода данных используются команды (операторы) Read или Readln. Команда Readln отличается от команды Read тем, что после ввода необходимого количества данных осуществляется переход курсора на следующую строку.

Для вывода данных используются команды (операторы) Write и Writeln. Команда Writeln отличается от команды Write тем, что после вывода необходимого количества данных осуществляется переход курсора на следующую строку.

Более подробную теорию и решение задач смотрите в видеоуроке.

Нажмите PLAY, чтобы начать просмотр видеоурока.

Рассмотрим решение следующих задач:

Составьте программу, в которой осуществляется ввод целого числа с клавиатуры и вывод на экран монитора значения этого числа, увеличенного в 5 раз.

Составьте программу, в которой осуществляется ввод целого числа с клавиатуры и вывод на экран монитора значения этого числа, увеличенного на 10.

Составьте программу, в которой осуществляется ввод двух целых чисел с клавиатуры и вывод на экран монитора значения их произведения.

Узнайте больше и освойте новые языки программирования!

После установки интегрированной среды разработки Lazarus, как было описано в предыдущей теме, мы можем приступить к разработке программ на языке Free Pascal. Итак, напишем первую простую программу.

Запустите программу для разработки Лазарус. Не пугайтесь большого количества окон после загрузки приложения.

Консольное приложение

Для создания первой программы, необходимо выбрать в меню Файл –> Создать. В открывшемся окне выбираем папку Проект, а в ней Простая программа

У нас откроется редактор кода для простого консольного приложения. Пишем в редакторе следующий код на языке Паскаль:

Запустить выполнение программы можно тремя способами:

  • кликнув на панели кнопку Запустить
  • выбрать пункт меню Запуск –>Запустить
  • нажать на клавиатуре клавишу F9

После запуска программы на выполнение, мы увидим окно консоли, которое сразу же закрывается. Есть несколько вариантов решения данной проблемы.

Программа будет ждать нажатия клавиши Enter

Программа ждет нажатия любой клавиши

Проблему исчезновения окна решили. Теперь после запуска мы сможем увидеть результат.

Если в программе вы используете русские буквы, а они не правильно отображаются в консоли, добавте в самое начало программы строку .
Смена кодировки на Unicode должна решить проблему вывода кирилических символов на экран.

Оконное приложение

Многих начинающих программистов пугают консольные приложения, а Windows формы кажутся слишком сложными. Но это не так.

Откроем пункт меню Файл –> Создать, выбираем Проект, а в нем Приложение

После этого откроется редактор Форм.

Как в Pascal указать имя окна проги, его размер и цвет фона?

Вы не указали реализацию Паскаля.
program в начале не во всех "паскалях" обязательно писать. В некоторых имя после program должно совпадать с именем pas-файла (и в результате совпадает с именем экзешника) , в некоторых может быть совершенно произвольным.
Также не понятно о каком "окне" идёт речь. Если это окно консоли в Windows, то так:

program N77679134;
uses Windows, crt;
const
XSize = 40;
YSize = 10;
var
hStdOut: THandle;
Rect: TSmallRect;
Frame: TCoord;
begin
SetConsoleTitle('Имя программы');
hStdOut := GetStdHandle(STD_OUTPUT_HANDLE);
with Rect do
begin
Left := 0;
Top := 0;
Right := XSize - 1;
Bottom := YSize - 1;
end;
SetConsoleWindowInfo(hStdOut, True, Rect);
Frame.X := XSize;
Frame.Y := YSize;
SetConsoleScreenBufferSize(hStdOut, Frame);
TextBackGround(Blue);
clrscr;
writeln('Текст в консоли');
readln;
end.



Если речь об окнах Windows, то так:

program N77679134;
uses Windows, Messages;
const
WndClass = 'Prog';
WndCaption = 'Имя программы';

XSize = 200;
YSize = 100;
var
Wc: TWndClassEx;
Wnd, Lbl: HWND;
Msg: TMsg;

function WindowProc(Wnd: HWND; Msg: UINT; wParam: WPARAM; lParam: LPARAM): LRESULT; stdcall;
begin
case Msg of
WM_DESTROY: begin
PostQuitMessage(0);
Result := 0;
end;
WM_CTLCOLORSTATIC: begin
SetTextColor(wParam, $C0C0C0);
SetBkColor(wParam, $800000);
Result := CreateSolidBrush($800000);
end
else
Result := DefWindowProc(Wnd, Msg, wParam, lParam);
end;
end;

begin
fillchar(Wc, SizeOf(Wc), 0);
with Wc do
begin
cbSize := SizeOf(Wc);
lpfnWndProc := @WindowProc;
hInstance := hInstance;
hbrBackground := CreateSolidBrush($800000);
lpszClassName := WndClass;
end;
RegisterClassEx(Wc);
Wnd := CreateWindowEx(0, WndClass, WndCaption, WS_OVERLAPPED or
WS_CAPTIОN or WS_SYSMENU or WS_MINIMIZEBOX,
CW_USEDEFAULT, CW_USEDEFAULT, XSize, YSize, 0, 0, hInstance, nil);
Lbl := CreateWindowEx(0, 'STATIC', 'Текст в окне', WS_CHILD or WS_VISIBLE,
10, 10, 100, 25, Wnd, 0, hInstance, nil);
SendMessage(Lbl, WM_SETFONT, GetStockObject(ANSI_VAR_FONT), 0);
ShowWindow(Wnd, SW_SHOWNORMAL);

while GetMessage(Msg, 0, 0, 0) do
begin
TranslateMessage(Msg);
DispatchMessage(Msg);
end;
Halt(0);
end.



P.S. Ничего не получится если
- у вас Turbo Pascal, т. к. программы MS DOS даже не подозревают о существовании Windows;
- у вас PascalABC, который даже компилировать не может.

P.P.S. В консольной программе используется модуль CRT. Если в вашем "паскале" его нет (например в Delphi), то придётся искать аналогичный или использовать соответствующие функции WinAPI.
В оконной программе удобнее использовать VCL (в Delphi), её аналог LCL (в Lazarus), KOL или виджеты. Но для этого сначала придётся познакомиться с ООП.

P.P.P.S. Всё, что сможет сделать программа al.ex, это сменить цвет фона в консоли.

begin
Window(10,10,10,10);
TextBackground(Red);
ClrScr;
end.

Как создавать окна

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Лучшие ответы ( 2 ) 94731 / 64177 / 26122 Ответы с готовыми решениями:

Как создавать дочерние окна?
Вот у меня окно например форм1, нажимаю на буттон и в форм1 появляется форм2 (появление должно быть.



Как создавать изображения с окна в windows
Здравствуйте, может кто знает, как можно с помощью OpenCV или каких-то других библиотек можно.

Как правильно создавать дочерние окна?
Всем доброе время суток. Может кто подсказать как правильно создавать дочерние окна. Например есть.

Как создавать дочерние окна (окно в окне)
Здравствуйте! Подскажите пожалуйста, как можно в WPF создавать дочерние окна? т.е. Есть одно окно.

7651 / 3815 / 1483 Записей в блоге: 2

В созданной программе открываются только три окна, помогите найти ошибку

(Фотографии текста удалены)

7651 / 3815 / 1483 Записей в блоге: 2 Попробуйте найти файл AMAZO.pas в папке Мои документы и выложить его. AMAZO.PAS:
Некорректный файл, ошибка загрузки, не получается, файл 2 КБ

(Архив удалён, содержимое перенесено на форум)

7651 / 3815 / 1483 Записей в блоге: 2 Программа по-очереди на одной позиции рисует 3 или 4 окна.
А что нужно получить в итоге? Спасибо большое за поддержку. 7651 / 3815 / 1483 Записей в блоге: 2

Нет мы не победили, ждем Вашей помощи!

7651 / 3815 / 1483 Записей в блоге: 2

Решение

Решение

Помощь в написании контрольных, курсовых и дипломных работ здесь.

[Win32 API] Как создавать скины для своего окна?
Привет. Все видим и пользуемся программками, окна которых имеют свой, не дефолтныйWindows стиль.

Как создавать окна со своими заголовками (другого цвета, меньшего размера, . ) ?
Всем привет, Кто знает, как создавать свои собственные окна в Windows? Я нашел в Интернете.

Возможно ли на с++ создавать формы (окна)?
Если да, то оправдан ли труд? Возможно, легче создать на VB,или на с++ тоже не очень сложно?

Запретить программе создавать новые окна
Программа обрабатывает изображение, после чего, кроме сохранения результата, вызывает два новых.



QFileDialog::DontUseNativeDialog не позволяет создавать папки внутри окна
Доброго времени суток! Если вызывать диалоговое окно вида QFileDialog dlg; // Окно выбора файла.

Вывод окна и заполнения его текстом

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Лучшие ответы ( 1 ) 94731 / 64177 / 26122 Ответы с готовыми решениями:

Как расширить TMemo по мере его заполнения текстом?
Можно ли в TMemo сделать так, чтобы поле ввода расширялось по мере заполнения его текстом(допустим.

Алгоритм заполнения массива текстом
Слепил вот такой алгоритм. Проблема в том, что введённый текст не выводится полностью, а только.

Невозможно ввести строку после заполнения всего экрана текстом
Я обнаружил баг - если заполнить весь экран текстом, то при попытке ввести новую строку ничего.

Добавить таблицу для заполнения её пользователем текстом и добавлением в неё картинки
Как добавить таблицу на panel с возможностью добавлять в последнюю колонку фото, и текст в первые.

63952 / 47410 / 32681 Это не модуль graph, а на crt задача. то есть не используя модуль граф вообще. но как, используя какие-то другие команды? 63952 / 47410 / 32681

Решение

uses crt;
.
window(x,y);
readkey;

87844 / 49110 / 22898

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Вывод текста в центре окна даже при изменении его размера
Подскажите пожалуйста. Есть вот такой шаблон программы подсчитывающей нажатие ЛКМ. Нужно чтобы.

Создание окна с текстом
всем доброе время суток, помогите разобрать как создать панель с текстом так что бы он при.

Окна с текстом и результатом
Нужно для диплома реализовать интерфейс для работы с жквери. суть в том чтобы если написать код js.

Создания окна с текстом и навигацией
Нужно сделать код такого окна, вроде все просто, но со swing трудно. Есть код пустого окна с.



Создание окна с кнопкой и текстом
import java.awt.Color; import java.util.EventObject; import java.awt.Dimension; import.



Заполнение текстом модального окна
Доброго времени суток. У меня есть кнопка по нажатию которой происходит вызов модального окна. .

Модуль CRT - создание и вывод окна - Pascal ABC

Составить программу вывода на экран окна. Заполнить его текстом с помощью ReadKey. Окно разбить на вертикальные столбцы шириной в один символ. Столбцы закрасить периодически повторяющимися цветами фона с номерами от единицы до восьми. При нажатии клавиши "Ввод" цвет фона i-го столбца меняется на цвет фона i+1-го столбца по замкнутому кольцу.

13 голосов , оценка 3.769 из 5

Как сделать окно в паскале

Как ни странно, но для того только, чтоб вывести пустое окно нам потребуется совершить довольно много действий. А именно:

1.1 Оконная функция

Минимальная оконная функция будет иметь следующий вид:

Следует обратить внимание на тип вызова функции - stdcall . На данный момент Free Pascal использует такое соглашение о вызове по умолчанию, однако для надежности и во избежание возможных проблем в дальнейшем, я бы рекомендовал указывать его явно - как в данном примере. Напомню, что соглашение о вызове stdcall предполагает, что параметры передаются в стек справа налево, а очищает стек вызываемая подпрограмма.

Замечательно - минимальную оконную функцию, которая нам когда-нибудь послужит каркасом для более сложных, мы написали. Что теперь с ней делать?

1.2 Класс окна

Следующий код реализует создание нового класса окна:

Итак, по порядку:

Переменная WndClass используется для того, чтобы создать в динамической памяти структуру, описывающую класс. Мы используем структуру типа TWndClassEx , хотя можно было бы и удовлетвориться TWndClass . Однако, варианты без Ex - это наследие Win16, и лучше отучаться (или не приучаться) их использовать. Хотя в данном случае - разница между TWndClassEx и TWndClass всего в одном поле - hIconSm , которое к тому же в настоящем примере мы просто зануляем.

Рассмотрим поля структуры:

Заполнив все поля мы передаем структуру функции RegisterClassEx() . Если бы мы использовали старую версию структуры - TWndClass , то и функцию бы взяли RegisterClass() . RegisterClassEx() возвращает специальное значение - атом, соответствующий нашему классу, если регистрация прошла успешно. В противном случае возвращаемое значение - 0, что мы и проверяем.

Мы намеренно поместили регистрацию класса в секцию initialization , таким образом она происходит гарантированно один раз при начале работы программы. В случае, если регистрация неудачна, дальнейшее выполнение программы не имеет никакого смысла, посему вызываем процедуру Halt() . Замечу, что память, выделенная средствами Free Pascal, в таком случае освобождается автоматически операционной системой, поскольку находится в локальной куче приложения.

1.3 Создание окна

Итак, мы зарегистрировали класс и теперь можно создать наше окно.

Что мы делаем? Для того, чтобы создать окно, мы вызываем функцию WinAPI CreateWindowEx() . Как и во многих других случаях, мы могли бы использовать вариант без Ex - функцию CreateWindow() и были бы лишены первого параметра - расширенных стилей окна.

Разберем аргументы функции:

  • dwExStyle - расширенные стили. Представляет из себя комбинацию флагов стилей. В нашем случае были использованы следующие флаги:
    • WS_EX_APPWINDOW - употребляется для главного окна приложения - явное указание того, что окно должно иметь кнопку на панели задач.
    • WS_EX_CONTROLPARENT - флаг используется для того, чтобы между дочерними окнами данного можно было переключаться по клавише Tab. В нашем минимальном примере, конечно, эта возможность не используется, флаг я указал в "шаблонных" целях.
    • WS_EX_WINDOWEDGE - флаг "объемной" кромки окна. Именно такой вид границы окна, как правило, используется программами Win32.
    • WS_CAPTION - указание выводить заголовок окна.
    • WS_CLIPCHILDREN - связан с механизмом прорисовки содержимого окна - указывает на то, что из области перерисовки исключаются области, занятые дочерними окнами, что логично - все равно те перерисовывают себя сами. В нашем случае - добавлен на вырост.
    • WS_MAXIMIZEBOX - окно имеет кнопку максимизации.
    • WS_MINIMIZEBOX - окно имеет кнопку минимизации (сворачивания).
    • WS_OVERLAPPED - нормальное перекрывающееся окно. В отличие от окон со стилями WS_CHILD и WS_POPUP окна с данным стилем перекрывают друг друга в зависимости только от того, какое активно (точнее от позиции Z-Order), не обращая внимание на отношения "родительское-дочернее".
    • WS_SIZEBOX , несмотря на BOX , кнопок не добавляет. Обозначает то, что размеры окна могут быть изменены пользователем.
    • WS_SYSMENU - окно имеет системное меню - то, которое открывается по щелчку на иконке слева от заголовка. Без стиля WS_CAPTION смысла не имеет.
    • WS_VISIBLE - флаг видимости - окно отображается сразу после создания.

    Функция CreateWindowEx() возвращает дескриптор свежесозданного окна, при помощи которого мы сможем в дальнейшем к окну обращаться.

    Вот и наш цикл. Вообще говоря, в цикле могут производиться и дополнительные действия, например - для того, чтобы преобразовывать нажатия клавиш в команды в соответствии с таблицей акселераторов.

    1.5 Резюме

    Собственно, все необходимое для создания приложения "Hello, World!" мы разобрали по косточкам. Осталось свести воедино.

    Настройка графического окна в pascal abc. Часть первая.

    Всем привет! Сегодня мы поговорим о модуле GraphACB, а точнее о настройках графического окна. Опытным Pascal программистам будет скучно, так как информация уже усвоена, а вот новичкам, недавно начавшим использовать модуль GraphAbc может быть полезно. Ну что же, приступим?

    Для начала создадим файл с форматом .pas, и запишем следующий код.

    Читайте также: