IPB
ЛогинПароль:

> Правила раздела!

1. Заголовок или название темы должно быть информативным !
2. Все тексты фрагментов программ должны помещаться в теги [code] ... [/code] или [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ" и используйте ПОИСК !
4. НЕ используйте форум для личного общения!
5. Самое главное - это раздел теоретический, т.е. никаких задач и программ (за исключением небольших фрагментов) - для этого есть отдельный раздел!

> Ввод текста в графическом режиме, возможно ли это, и если да, то как?
сообщение
Сообщение #1


Гость






Приветсвую всех Паскалеведов, обитающих тут. Собственно, возник вопрос, связанный с вводом в графическом режиме (если быть точным, то ввод чисел). Я поискал в различных учебниках по паскалю, мануалах и тп, но нигде не нашел даже упоминания про ввод в графическом режиме! Может быть, в паскале вообще такого не предусмотрено? Но если есть вывод, то почему не сделали ввод? Что нить типо функции intextXY? Если все-таки такое дело можно провернуть, то опишите плиз как это сделать... и эдак попроще... заранее признателен
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Профи
****

Группа: Пользователи
Сообщений: 618
Пол: Мужской

Репутация: -  24  +


Ну, может не самое лучшее решение, но я раньше пользовался (подкоректировал немного под твои нужды):

Procedure IntextXY(X, Y : integer; var Num : integer; symbols_num : integer);
Const
NUMS = ['0'..'9'];
Var
Str : string;
Key : char;
XX : integer;
Code : integer;
Begin
SetTextJustify(LeftText,BottomText);
SetFillStyle(SolidFill,0);
Bar(X, Y, X + 8 * (symbols_Num + 1), Y-8);
XX := X;
Line(X, Y, X+8, Y);
Str := '';
Repeat
While KeyPressed do ReadKey;
Key := ReadKey;
If (Key in NUMS) and (length(Str) < symbols_Num) then
Begin
Bar(X, Y, X + 8 * (symbols_num + 1), Y-8);
Inc(XX, 8);
Line(XX, Y, XX+8, Y);
Str := Str + Key;
OutTextXY(X,Y,Str);
End;
If (Key = #8) and (length(Str) > 0) then
Begin
Bar(X, Y, X + 8 * (Symbols_Num + 1), Y-8);
Dec(XX, 8);
Line(XX, Y, XX+8, Y);
Delete(Str, length(Str), 1);
OutTextXY(X,Y,Str);
End;
Until Key = #13;
Bar(XX, Y, XX+8, Y);
Val(Str, Num, Code);
End;



--------------------
Close the World...txeN eht nepO
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 15.05.2024 11:06
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name