Форум программистов, компьютерный форум, киберфорум
PascalABC.NET
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.79/121: Рейтинг темы: голосов - 121, средняя оценка - 4.79
0 / 0 / 1
Регистрация: 16.11.2015
Сообщений: 8
1

Ввод текста в graphABC

24.11.2015, 20:04. Показов 22733. Ответов 10
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Что нужно прописать что-бы можно было вводить текст в окнах логина и пароля ?
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
uses graphABC;
Begin
  setwindowsize(1280,680);
  FloodFill(30,30,clGoldenrod);
  rectangle(540,130,1140,180);
  rectangle(540,250,1140,300);
  rectangle(850,370,1140,470);
  rectangle(540,370,840,470);
  SetFontColor(clGold);
  SetFontSize(20);
  textout (500,50,'Авторизация');
  textout (945,400,'Выход');
  textout (650,400,'Вход');
  textout (400,135,'Логин');
  textout (400,255,'Пароль');
End.
Миниатюры
Ввод текста в graphABC  
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.11.2015, 20:04
Ответы с готовыми решениями:

Ввод текста в graphABC
uses graphABC; Type Word=Record english:string; russian:string; synonym1:string; ...

Ввод текста в обход GraphABC
Доброго дня. Подскажите, пожалуйста, каким образом можно организовать ввод текста при...

Ввод данных с клавиатуы м GraphABC
Как правильно написать этот код? //КРИВЫЕ uses GraphABC; var a, b, c: integer; var

Как установить позицию текста при использовании GraphABC ?
Здравствуйте. Есть программа рисования флагов. Используется соответственно GraphABC. Сначала...

10
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32835 / 21172 / 8148
Регистрация: 22.10.2011
Сообщений: 36,431
Записей в блоге: 8
24.11.2015, 20:35 2
Нужно забыть про GraphABC и перейти на WinForms
0
0 / 0 / 1
Регистрация: 16.11.2015
Сообщений: 8
24.11.2015, 20:37  [ТС] 3
Мне нужно именно в GraphABC
0
Эксперт Pascal/Delphi
6810 / 4567 / 4819
Регистрация: 05.06.2014
Сообщений: 22,438
24.11.2015, 21:14 4
Ввод текста в обход GraphABC
0
9 / 9 / 11
Регистрация: 22.10.2015
Сообщений: 81
24.11.2015, 22:47 5
Pascal
1
2
3
4
5
6
7
uses graphABC;
var
x : string;
begin 
readln (x);
textout (500, 50, x);
end.
Вот теория, щас Доработаю твою прогу и скину то что у меня получилось

Добавлено через 3 минуты
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
uses graphABC;
var avt, par : string;
Begin
  setwindowsize(1280,680);
  FloodFill(30,30,clGoldenrod);
  rectangle(540,130,1140,180);
  rectangle(540,250,1140,300);
  rectangle(850,370,1140,470);
  rectangle(540,370,840,470);
  SetFontColor(clGold);
  SetFontSize(20);
  textout (500,50,'Авторизация');
  textout (945,400,'Выход');
  textout (650,400,'Вход');
  textout (400,135,'Логин');
  textout (400,255,'Пароль');
  readln (avt);
  textout (700, 135, avt);
  readln (par);
  textout (700, 255, par);
End.
вот исправленная твоя прога. Используй на здоровье)))
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
32835 / 21172 / 8148
Регистрация: 22.10.2011
Сообщений: 36,431
Записей в блоге: 8
25.11.2015, 01:46 6
Цитата Сообщение от DeadMorose Посмотреть сообщение
Используй на здоровье)))
Ну да, чего ж не использовать-то.

Ввод текста в graphABC


Используй, используй. А если все-таки не хочешь, чтобы в самый ненужный момент произошло вот то, что показано на скриншоте - обрати внимание на предыдущий мой пост...
0
6 / 6 / 3
Регистрация: 14.11.2015
Сообщений: 21
25.11.2015, 14:06 7
readln в graphabc не прокатит, т.к. ввод будет происходить не в нарисованном поле ввода, а внизу экрана в отдельной строке. Или вообще в консольном окне - не пробовал, не знаю точно.

А чтобы ввод был, как будто вы используете формы, нужно использовать OnKeyDown.

То есть сначала пишете процедуту под названием, например, VvodLogin:

procegure VvodLogin (Key: integer);

begin
...
end;

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

OnKeyDown:=VvodLogin; // Каждое событие нажатия на клавишу будет вызывать процедуру VvodLogin.

А вот в коде процедуры VvodLogin уже происходит вся обработка:
Key - это цифровой код нажатой клавиши. Нужно сначала определить, какие коды каким клавишам соответствуют. Для нажатий цифровых и буквенных клавиш нужно будет формировать строку : Login := Login + Key;
Для Delete, Enter и других несимвольных клавиш - свои действия.

Ну и вывод TextOut([x], [y], Login);
Login - переменная типа String, лучше сделать её глобальной.

Для пароля - своя функция VvodPassword(Key: integer);


Она будет вызываться OnKeyDown := VvodPassword;

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

Сейчас нет времени писать код, если нужно будет - вечером могу написать. Так-то сложного ничего особо нет, но все действия (щелчок мыши по соответствующему полю ввода, ввод символьных клавиш, удаление символа, нажатие Enter и т.п.) нужно вручную прописывать.
0
9 / 9 / 11
Регистрация: 22.10.2015
Сообщений: 81
25.11.2015, 15:44 8
А почему у меня работает readln ? При этом работает и ставит текст на указанное место без выставления текста у углу экрана!
0
6 / 6 / 3
Регистрация: 14.11.2015
Сообщений: 21
25.11.2015, 18:46 9
DeadMorose, readln работает. Но только где производится ввод? Внизу окна. Я так понял, что требуется создать в graphabc что-то типа формы. То есть, чтобы в процессе ввода логина и пароля, вводимые данные отображались в том поле, куда вводится информация.

Добавлено через 1 час 17 минут
Pascal
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
uses
  GraphABC;
 
var
  w, w2: integer;
  boollogin, boolpass: boolean;
  login, password: string;
 
procedure Vvod(Key: integer);
begin
  case key of
    //------------------------------------
    48..57, 65..90, 97..122: // Условие нажатия на символьные клавиши
      begin
        SetBrushColor(clWhite);
        if boollogin then begin login := login + chr(key);TextOut(w2 - 80, 142, login); end;
        if boolpass then begin password := password + chr(key);TextOut(w2 - 80, 255, password); end;
      end;
    // ----------------------------------
  
    // Условия нажатия на Delete и т.п. - можно прописать
  
  end;
end;
 
 
procedure ClickPlase(x, y, m: integer);
begin
  if (x > w2 - 90) and (x < w2 + 250) and (y > 130) and (y < 180) then // Клик по полю Логин
  begin
    boollogin := true;
    boolpass := false;
    OnKeyDown := Vvod;
  end;
  
  if (x > w2 - 90) and (x < w2 + 250) and (y > 250) and (y < 300) then // Клик по полю Пароль
  begin
    boollogin := false;
    boolpass := true;
    OnKeyDown := Vvod;
  end;
  
  if (x > w2 - 90) and (x < w2 + 70) and (y > 350) and (y < 400) then // Клик по кнопке Вход
  begin
    // Вход
    ClearWindow;
    WriteLn('Логин: ', login, ' Пароль: ', password, ' Тут должна выполняться подпрограмма входа');
    x := 0;
  end;
  
  if (x > w2 + 90) and (x < w2 + 250) and (y > 350) and (y < 400) then // Клик по кнопке Выход
  begin
    // Выход
  end;
  
  if boollogin then
  begin
    SetBrushColor(clWhite);
    Rectangle(w2 - 90, 130, w2 + 250, 180);
    TextOut(w2 - 80, 142, login);
  end
  else
  begin
    SetBrushColor(RGB(213, 187, 63));
    Rectangle(w2 - 90, 130, w2 + 250, 180);
    TextOut(w2 - 80, 142, login);
  end;
  
  
  if boolpass then
  begin
    SetBrushColor(clWhite);
    Rectangle(w2 - 90, 250, w2 + 250, 300);
    TextOut(w2 - 80, 255, password);
  end
  else
  begin
    SetBrushColor(RGB(213, 187, 63));
    Rectangle(w2 - 90, 250, w2 + 250, 300);
    TextOut(w2 - 80, 255, password);
  end;
end;
 
procedure Authorizing;
  
  procedure Otrisovka;
  begin
    w := WindowWidth; // w = ширина окна
    w2 := round(w / 2);
    ClearWindow(RGB(210, 173, 0));
    SetFontSize(18); 
    SetBrushColor(RGB(210, 173, 0));
    TextOut(round(w2 - TextWidth('АВТОРИЗАЦИЯ') / 2), 50, 'АВТОРИЗАЦИЯ');
    TextOut(w2 - 100 - TextWidth('Логин:'), 142, 'Логин:');
    TextOut(w2 - 100 - TextWidth('Пароль:'), 255, 'Пароль:');
    SetPenWidth(2);
    SetBrushColor(RGB(213, 187, 63));
    Rectangle(w2 - 90, 130, w2 + 250, 180); //  Поле ввода логина
    Rectangle(w2 - 90, 250, w2 + 250, 300); //  Поле ввода пароля
    Rectangle(w2 - 90, 350, w2 + 70, 400); // Кнопка Вход
    Rectangle(w2 + 90, 350, w2 + 250, 400); // Кнопка Выход
    Textout(w2 - 10 - round(TextWidth('ВХОД') / 2), 362, 'ВХОД');
    Textout(w2 + 170 - round(TextWidth('ВЫХОД') / 2), 362, 'ВЫХОД');
  end;
 
begin
  Otrisovka;
  OnMouseDown := ClickPlase;
end;
 
begin
  SetWindowSize(800, 600);
  Authorizing;
  OnResize := Authorizing;
end.
Вот, в принципе, вводить можно. Если подзапариться, то можно вообще сделать, чтобы работало как из форм.
0
9 / 9 / 11
Регистрация: 22.10.2015
Сообщений: 81
25.11.2015, 19:32 10
А! Дошло что надо сделать!
0
0 / 0 / 1
Регистрация: 16.11.2015
Сообщений: 8
25.11.2015, 20:33  [ТС] 11
Спасибо вам всем большое)
0
25.11.2015, 20:33
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
25.11.2015, 20:33
Помогаю со студенческими работами здесь

Исправить ввод только слова на ввод целого текста
Помогите исправить. Надо чтобы не одно слово можно водить, а текст. uses crt; var...

Ввод текста в Мемо1 и вывод текста в Мемо2 по возрастанию слов
Здравствуйте! Пользователь вводит текст в Мемо1, по нажатию кнопки текст должен выйти в Мемо2...

Ввод текста, обработка и вывод текста в то же поле
Здравствуйте!Как сделать в delphi 10 seattle нечто вроде экспертных систем?Вводим текст (типа как в...

Ввод текста
Подскажите пожалуйста, как организовать ввод текста на Си (текста в которм много строк),для...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru