Здравствуйте! Не подскажете как решить такую проблему: Необходимо вывести на экран 2 массива строк и при выделении одной строки в первом массиве и другой во втором поменять их местами. Например сделать как бы 2 менюшки и выделять строки ENTERом.
Нужно сделать это собятиями. Смотрел Turbovision, но там похожих окон не нашел. Главное как выбирать их и выделять чтобы это было событием.
Наверное выделяешь какой-нибудь клавишой=> помечаем вторую выбираешь=> помечаем и 2 помеченные меняем.
Гость
1.12.2007 22:01
Может как-нибудь по-другому сделать...? Может кто делал или в Internete видел что-то похожее, киньте ссылочку
STAN
1.12.2007 23:39
Посмотрел ещё об TURBO Vision, но нашел только описания. Например TListBox для вывода списка А реализации что-то нигде... Помогите пожалуйста.
STAN
2.12.2007 1:10
Вот накидал быстренько меню, правда идея не моя.. Куда добавить обработчик события и что в нём писать? Где писать 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;
Например, нажимаем 'с' на элементе, появляется второй массив, нажимаем 'c' там и они меняются. Или хотя бы просто пермещение из 1 во 2ой.... И ещё, дайте пожалуйста коды все клавиш.
Гость
2.12.2007 2:05
Ну хотя бы появляется массив в меню , нажимаем клавишу и этот элемент перемещается в исходный массив.
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.