Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Окна и клавиши

Автор: Димас 21.05.2007 20:18

Как например можно сделать такое окно на Турбо Паскале:

Изображение

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


Автор: nikita182 21.05.2007 20:45

тебе именно f-ки?
у них 2х байтовый код..

Автор: Артемий 21.05.2007 20:51

D:=detect;
InitGraph(D,M,'');
setcolor(white);
rectangle(getmaxx div 4,getmaxy-(getmaxy div 4),getmaxx-(getmaxx div 4),getmaxy div 4);
readln
end.

рисовать прямоугольник...

Автор: volvo 21.05.2007 20:55

Окно создается так (текстовый режим):

Window(X1, Y1, X2, Y2);
TextBackGround(Cyan); { <-- насколько я виду у тебя - именно Cyan }
ClrScr;

Если надо очертить его линией - ищи на форуме, выкладывалась процедура отрисовки бордера вокруг окна.
А потом просто цикл обработки нажатий на кнопки... Все коды были только недавно приведены в "Теоретических вопросах"

Как только нажата определенная клавиша - очистка экрана (тот же ClrScr) и отчерчиваешь новое окно...

Короче, смотри о способах организации меню...

Автор: Димас 21.05.2007 21:09

Цитата(nikita182 @ 21.05.2007 16:45) *

тебе именно f-ки?
у них 2х байтовый код..


о не тада не фки не нада... лучи тогда уже цыферки ну там 1 2 3 и т.к

Автор: nikita182 21.05.2007 21:36


с : char;


c := readkey;
case с of
'1': {процедуры} ;
'2': {или} ;
'3': {условия} ;
end;





можно так..

Автор: Димас 21.05.2007 21:46

так-с, кажись что то проясняется smile.gif

--
и всё таки с окнами хотелось бы поподробней? а то как то плохо асилил dry.gif

Автор: nikita182 21.05.2007 22:10

 

uses crt;

var
c : char;

procedure asd;
begin
clrscr;
writeln;
writeln (' ********************************');
writeln (' * *');
writeln (' * *');
writeln (' * гыгы, окошко *');
writeln (' * *');
writeln (' ********************************');
readkey;
end;

begin
repeat
clrscr;
writeln ('1 - окно, 2 - выход');
c := readkey;
case c of
'1': asd;
'2': halt;
end;
until c = '2';
end.



вот такое окошко) пойдет?

Автор: Димас 21.05.2007 22:48

Цитата(nikita182 @ 21.05.2007 18:10) *

вот такое окошко) пойдет?


неее, такое не красиво... хочется такое как на картинках)))))

Автор: volvo 21.05.2007 22:51

Тебе в графике, или в текстовом режиме, ты так и не ответил?

Автор: Димас 21.05.2007 22:58

Цитата(volvo @ 21.05.2007 18:51) *

Тебе в графике, или в текстовом режиме, ты так и не ответил?


Графическом будет самое то good.gif

?

Автор: Артемий 22.05.2007 1:43

uses crt,graph;
var
D,M,x,y:integer;
begin
D:=detect;
Initgraph(D,M,'');
for x:=getmaxx div 4 to getmaxx-(getmaxx div 4) do begin
for y:=getmaxy-(getmaxy div 4) downto (getmaxy div 4) do begin
PutPixel(X,Y,Cyan);
end;
end;
rectangle(getmaxx div 4,getmaxy-(getmaxy div 4),getmaxx-(getmaxx div 4),getmaxy div 4);
OutTextXY(getmaxx div 4,(getmaxy div 4)+2,'This is string');
OutTextXY(getmaxx div 4,(getmaxy div 4)+15,'This is second string');
readln
end.

Вот так пойдет?

Автор: Димас 22.05.2007 2:36

? blink.gif

Автор: volvo 22.05.2007 2:41

wacko.gif
Зачем делать 2 вложенных цикла, если можно обойтись

...
Initgraph(D,M,'');
setfillstyle(solidfill, cyan);
bar(getmaxx div 4, getmaxy div 4, 3*(getmaxx div 4), 3*(getmaxy div 4));
setcolor(white);
rectangle(getmaxx div 4, getmaxy div 4, 3*(getmaxx div 4), 3*(getmaxy div 4));
...

Непонятно...

Автор: Димас 22.05.2007 2:49

Цитата(Артемий @ 21.05.2007 21:43) *

Вот так пойдет?

не работает чета mad.gif

Автор: Ozzя 22.05.2007 18:18

Димас
В какой строке ошибка и ее код?