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

> Прочтите прежде чем задавать вопрос!

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

> События в pascal, обмен в массивах
STAN
сообщение 1.12.2007 15:11
Сообщение #1


Гость






Здравствуйте!
Не подскажете как решить такую проблему:
Необходимо вывести на экран 2 массива строк
и при выделении одной строки в первом массиве и другой во втором поменять их местами.
Например сделать как бы 2 менюшки и выделять строки ENTERом.

Нужно сделать это собятиями.
Смотрел Turbovision, но там похожих окон не нашел.
Главное как выбирать их и выделять чтобы это было событием.

Наверное выделяешь какой-нибудь клавишой=> помечаем
вторую выбираешь=> помечаем и 2 помеченные меняем.
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 4)
Гость
сообщение 1.12.2007 18:01
Сообщение #2


Гость






Может как-нибудь по-другому сделать...?
Может кто делал или в Internete видел что-то похожее, киньте ссылочку
 К началу страницы 
+ Ответить 
STAN
сообщение 1.12.2007 19:39
Сообщение #3


Гость






Посмотрел ещё об TURBO Vision, но нашел только описания.
Например TListBox для вывода списка
А реализации что-то нигде...
Помогите пожалуйста.
 К началу страницы 
+ Ответить 
STAN
сообщение 1.12.2007 21:10
Сообщение #4


Гость






Вот накидал быстренько меню, правда идея не моя..
Куда добавить обработчик события и что в нём писать?
Где писать with event(...) do ?
И нужно второй массив добавить.
uses graph,crt,drivers;
type Ta=array[1..10] of string;

Event=record
what:word;
case word of
evNothing:();
evKeyDown: (
case integer of
0: (keycode:word);
1: (charCode:char; ScanCode:byte));
end;

var
key:char;
g:string;
x,y,selected,row: integer;
A,mt,st:Ta;
pos1,pos2,pos3:byte;
u1,u:boolean;
S:string;
gm,gd:integer;

i,players: integer;label 11;

Procedure Menu(x1,y1:Word;n:byte;A:Ta;u,u1:boolean;S:string;Var pos1:byte);
Var i:byte;
x,y:Word;
Key:char;
Begin
if u=true then begin
ClearDevice;
end;
setfillstyle(1,0);

settextstyle(0,0,0);
if u1=true then begin
Outtextxy(x1,y1+3,S);
Rectangle(x1-1,y1-1,x1+121,y1+11*(n+1));
y1:=y1+11;
end;
Setbkcolor(0);
Setcolor(15);
if u1=false then begin
Rectangle(x1-1,y1-1,x1+121,y1+11*n);
end;
x:=x1;
y:=y1;
SetFillStyle(1,0);
Bar(x,y,x+120,y+10);
SetFillStyle(1,0);
y:=y+11;
for i:=2 to n do begin
Bar(x,y,x+120,y+10);
y:=y+11;
end;
x:=x1;
y:=y1;
Outtextxy(x,y+3,A[1]);
y:=y+11;
Setcolor(15);
for i:=2 to n do begin
Outtextxy(x,y+3,A[i]);
y:=y+11;
end;
pos1:=1;
x:=x1;
y:=y1;
Repeat
key:=readkey;
if Ord(key)=0 then begin
SetFillStyle(1,0);
Bar(x,y,x+120,y+10);
SetFillStyle(1,8);
Setcolor(15);
Outtextxy(x,y+3,A[pos1]);
key:=readkey;
if Ord(Key)=72 then begin
if pos1=1 then begin
pos1:=n;
y:=y+11*(n-1);
Bar(x,y,x+120,y+10);
Setcolor(14);
Outtextxy(x,y+3,A[pos1]);
end
else begin
pos1:=pos1-1;
y:=y-11;
Bar(x,y,x+120,y+10);
Setcolor(14);
Outtextxy(x,y+3,A[pos1]);
end;
end;
if Ord(Key)=80 then begin
if pos1=n then begin
pos1:=1;
y:=y-11*(n-1);
Bar(x,y,x+120,y+10);
Setcolor(14);
Outtextxy(x,y+3,A[pos1]);
end
else begin
pos1:=pos1+1;
y:=y+11;
Bar(x,y,x+120,y+10);
Setcolor(14);
Outtextxy(x,y+3,A[pos1]);
end;
end;
end;

Until Ord(Key)=13;
if u=true then begin
ClearDevice;
end;
end;
Begin
gd:=Detect;
gm:=IBM8514Lo;
Initgraph(gd,gm,'D:\bgi');
pos1:=0;

Repeat
st[1]:=' 1';
st[2]:=' 2';
st[3]:=' 3 ';
st[4]:=' 4';
st[5]:=' 5';
st[6]:=' exit ';
u:=true;
u1:=false;
S:=' ';
menu(250,150,6,st,u,u1,s,pos2);
case pos2 of
1:;
2:;
3:;
4:;
5:;
6: exit;
end;
Until ord(key)=27;
end.
Например, нажимаем 'с' на элементе, появляется второй массив, нажимаем 'c' там и они
меняются.
Или хотя бы просто пермещение из 1 во 2ой....
И ещё, дайте пожалуйста коды все клавиш.
 К началу страницы 
+ Ответить 
Гость
сообщение 1.12.2007 22:05
Сообщение #5


Гость






Ну хотя бы появляется массив в меню , нажимаем клавишу и этот элемент перемещается в исходный массив.
 К началу страницы 
+ Ответить 

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

 



- Текстовая версия 20.07.2025 14:12
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"