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

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

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

 
 Ответить  Открыть новую тему 
> События в pascal, обмен в массивах
сообщение
Сообщение #1


Гость






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

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

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


Гость






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


Гость






Посмотрел ещё об TURBO Vision, но нашел только описания.
Например TListBox для вывода списка
А реализации что-то нигде...
Помогите пожалуйста.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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ой....
И ещё, дайте пожалуйста коды все клавиш.
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Гость






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

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

 





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