|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Реализация повтора клавиш
Как реализовать повтор клавиш которые нажимал пользователь?
Вот код программы но что бы он изменял значения приходиться нажимать на кнопку повторно в ручную. http://yadi.sk/d/qCLJgTgD4MXv0 [spoiler="code"] Код:
var Form1: TForm1; a: string; c,x: integer; v11,v12,v13,v14,v21,v22,v23,v24,v31,v32,v33,v34,v35,v36,v37,v38,v61,v62,v63,v64,v71,v72,v73,v74,v81,v82,v83,v84,v91,v92,v93,v94,v101,v102,v103,v104,v105,v106,v107,v108,v109,v111,v112,v113,v114,v115,v116,v117,v118,v119,v121,v122,v123,v124,v125,v126,v127,v128,v131,v132,v133,v134,v141,v142,v143,v144,v151,v152,v153,v154,v155,v156,v157,v158,v159,v161,v162,v163,v164,v165,v166,v167,v168,v169: integer; start: integer; List: array of Integer; Len: Integer; Iterator: Integer; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin a:=button1.caption; c:=radiogroup1.itemindex; Len:=Length(List) + 1; SetLength(List, Len); List[Len - 1] := (Sender as TButton).Tag; end; procedure TForm1.Button2Click(Sender: TObject); begin a:=button2.caption; c:=radiogroup2.itemindex; end; procedure TForm1.Button3Click(Sender: TObject); begin a:=button3.caption; c:=radiogroup3.itemindex; end; procedure TForm1.Button4Click(Sender: TObject); begin a:=button4.caption; c:=radiogroup4.itemindex; end; procedure TForm1.Button5Click(Sender: TObject); begin a:=button5.caption; c:=radiogroup5.itemindex; end; procedure TForm1.Button6Click(Sender: TObject); begin a:=button6.caption; c:=radiogroup6.itemindex; end; procedure TForm1.Button7Click(Sender: TObject); begin a:=button7.caption; c:=radiogroup7.itemindex; end; procedure TForm1.Button8Click(Sender: TObject); begin a:=button8.caption; c:=radiogroup8.itemindex; end; procedure TForm1.Button10Click(Sender: TObject); begin button10.Caption:=a; v11:=c; end; procedure TForm1.Button11Click(Sender: TObject); begin button11.Caption:=a; v12:=c; end; procedure TForm1.Button12Click(Sender: TObject); begin button12.Caption:=a; v13:=c; end; procedure TForm1.Button13Click(Sender: TObject); begin button13.Caption:=a; v14:=c; end; procedure TForm1.Button9Click(Sender: TObject); var x,y,d: integer; begin a:=button9.Caption; x:=v11 and v12; y:=v13 and v14; d:=x or y; c:=1-d; label1.caption:=inttostr(c); end; procedure TForm1.Button14Click(Sender: TObject); begin button14.Caption:=a; v21:=c; end; procedure TForm1.Button15Click(Sender: TObject); begin button15.Caption:=a; v22:=c; end; procedure TForm1.Button16Click(Sender: TObject); begin button16.Caption:=a; v23:=c; end; procedure TForm1.Button17Click(Sender: TObject); begin button17.Caption:=a; v24:=c; end; procedure TForm1.Button18Click(Sender: TObject); var x,y: integer; begin x:=v21 and v22; y:=v23 and v24; c:=x or y; label2.caption:=inttostr(c); a:=button18.Caption; end; procedure TForm1.Button19Click(Sender: TObject); begin button19.Caption:=a; v31:=c; end; procedure TForm1.Button20Click(Sender: TObject); begin button20.Caption:=a; v32:=c; end; procedure TForm1.Button21Click(Sender: TObject); begin button21.Caption:=a; v33:=c; end; procedure TForm1.Button22Click(Sender: TObject); begin button22.Caption:=a; v34:=c; end; procedure TForm1.Button23Click(Sender: TObject); begin button23.Caption:=a; v35:=c; end; procedure TForm1.Button24Click(Sender: TObject); begin button24.Caption:=a; v36:=c; end; procedure TForm1.Button25Click(Sender: TObject); begin button25.Caption:=a; v37:=c; end; procedure TForm1.Button26Click(Sender: TObject); begin button26.Caption:=a; v38:=c; end; procedure TForm1.Button27Click(Sender: TObject); var x: integer ; begin x:=v31 and v32; c:=1-x; label3.caption:=inttostr(c); a:=button27.Caption; end; procedure TForm1.Button28Click(Sender: TObject); var x: integer ; begin x:=v33 and v34; c:=1-x; label4.caption:=inttostr(c); a:=button28.Caption; end; procedure TForm1.Button29Click(Sender: TObject); var x: integer ; begin x:=v35 and v36; c:=1-x; label5.caption:=inttostr(c); a:=button29.Caption; end; procedure TForm1.Button30Click(Sender: TObject); var x: integer ; begin x:=v37 and v38; c:=1-x; label6.caption:=inttostr(c); a:=button30.Caption; end; procedure TForm1.Button43Click(Sender: TObject); begin button43.Caption:=a; v61:=c; end; procedure TForm1.Button44Click(Sender: TObject); begin button44.Caption:=a; v62:=c; end; procedure TForm1.Button45Click(Sender: TObject); begin button45.Caption:=a; v63:=c; end; procedure TForm1.Button46Click(Sender: TObject); begin button46.Caption:=a; v64:=c; end; procedure TForm1.Button47Click(Sender: TObject); var x:integer; begin x:=v61 and v62 and v63 and v64; c:=1-x; label7.Caption:= inttostr(c); a:=button47.Caption end; procedure TForm1.Button48Click(Sender: TObject); begin button48.Caption:=a; v71:=c; end; procedure TForm1.Button69Click(Sender: TObject); begin button69.Caption:=a ; v104:=c ; end; procedure TForm1.Button70Click(Sender: TObject); begin button70.Caption:=a ; v105:=c ; end; procedure TForm1.Button71Click(Sender: TObject); begin button71.Caption:=a ; v106:=c ; end; procedure TForm1.Button64Click(Sender: TObject); var x:integer; begin x:=v104 and v105 and v106; c:=1-x; label12.caption:=inttostr(c); a:=button64.Caption ; end; procedure TForm1.Button72Click(Sender: TObject); begin button72.Caption:=a ; v107:=c ; end; procedure TForm1.Button73Click(Sender: TObject); begin button73.Caption:=a ; v108:=c ; end; procedure TForm1.Button74Click(Sender: TObject); begin button74.Caption:=a ; v109:=c ; end; procedure TForm1.Button65Click(Sender: TObject); var x:integer; begin x:=v107 and v108 and v109; c:=1-x; label13.caption:=inttostr(c); a:=button65.Caption ; end; procedure TForm1.Button80Click(Sender: TObject); begin button80.caption:=a; v111:=c; end; procedure TForm1.Button81Click(Sender: TObject); begin button81.caption:=a; v112:=c; end; procedure TForm1.Button82Click(Sender: TObject); begin button82.caption:=a; v113:=c; end; procedure TForm1.Button83Click(Sender: TObject); begin button83.caption:=a; v114:=c; end; procedure TForm1.Button84Click(Sender: TObject); begin button84.caption:=a; v115:=c; end; procedure TForm1.Button85Click(Sender: TObject); begin button85.caption:=a; v116:=c; end; procedure TForm1.Button86Click(Sender: TObject); begin button86.caption:=a; v117:=c; end; procedure TForm1.Button87Click(Sender: TObject); begin button87.caption:=a; v118:=c; end; procedure TForm1.Button88Click(Sender: TObject); begin button88.caption:=a; v119:=c; end; procedure TForm1.Button79Click(Sender: TObject); var x,y,z,h,j:integer; begin x:=v111 and v112; y:=v113 and v114; z:=v115 and v116 and v117; h:=v118 and v119; j:=x or y or z or h; c:=1-j; label14.Caption:=inttostr(c); a:=button79.Caption; end; procedure TForm1.Button89Click(Sender: TObject); begin button89.Caption:=a; v121:=c ; end; procedure TForm1.Button90Click(Sender: TObject); begin button90.Caption:=a; v122:=c; end; procedure TForm1.Button91Click(Sender: TObject); begin button91.Caption:=a; v123:=c; end; procedure TForm1.Button92Click(Sender: TObject); begin button92.Caption:=a; v124:=c; end; procedure TForm1.Button93Click(Sender: TObject); begin button93.Caption:=a; v125:=c; end; procedure TForm1.Button94Click(Sender: TObject); begin button94.Caption:=a; v126:=c; end; procedure TForm1.Button95Click(Sender: TObject); begin button95.Caption:=a; v127:=c; end; procedure TForm1.Button96Click(Sender: TObject); begin button96.Caption:=a; v128:=c; end; procedure TForm1.Button97Click(Sender: TObject); var x: integer; begin a:=button97.Caption; x:=v121 and v122; c:=1-x; label15.caption:=inttostr(c); end; procedure TForm1.Button98Click(Sender: TObject); var x: integer; begin a:=button98.Caption; x:=v123 and v124; c:=1-x; label16.caption:=inttostr(c); end; procedure TForm1.Button137Click(Sender: TObject); begin button137.Caption:=a; v163:=c; end; procedure TForm1.Button138Click(Sender: TObject); begin button138.Caption:=a; v164:=c; end; procedure TForm1.Button139Click(Sender: TObject); begin button139.Caption:=a; v165:=c; end; procedure TForm1.Button140Click(Sender: TObject); begin button140.Caption:=a; v166:=c; end; procedure TForm1.Button141Click(Sender: TObject); begin button141.Caption:=a; v167:=c; end; procedure TForm1.Button142Click(Sender: TObject); begin button142.Caption:=a; v168:=c; end; procedure TForm1.Button143Click(Sender: TObject); begin button143.Caption:=a; v169:=c; end; procedure TForm1.Button144Click(Sender: TObject); var x: integer; begin x:=v161 and v162 and v163; c:=1-x; label22.Caption:=IntToStr(c); a:=button144.Caption; end; procedure TForm1.Button145Click(Sender: TObject); var x: integer; begin x:=v164 and v165 and v166; c:=1-x; label23.Caption:=IntToStr(c); a:=button145.Caption; end; procedure TForm1.Button146Click(Sender: TObject); var x: integer; begin x:=v167 and v168 and v169; c:=1-x; label24.Caption:=IntToStr(c); a:=button146.Caption; end; procedure TForm1.Button36Click(Sender: TObject); begin start:=c; ListBox1.Clear; Iterator:=Len; Timer1.Enabled:=True; end; procedure TForm1.Timer1Timer(Sender: TObject); begin if (0 < Iterator) then begin Dec(Iterator); start:=c; ListBox1.Items.Add(IntToStr(start)); end else Iterator := Len; start:=c ; end; end. Последний раз редактировалось corpse6666, 26.04.2013 в 11:48. |
#2
|
||||
|
||||
Цитата:
— Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
#3
|
||||
|
||||
Нужно бооооольше переменных... IDA-style.
Не знаю, как надо упороться, чтобы написать такой код. Вообще задача решается в 3 строчки. Ставим всем кнопкам (ведь судя по коду, под клавишами подразумеваются кнопки?) один обработчик, который вытаскивает текущий tag и кладет его в очередь. Потом все кнопки повторяем по тегам. А если имеются в виду именно клавиши - так это еще проще: по событию onKeyDown формы добавляем клавишу в очередь. jmp $ ; Happy End! The Cake Is A Lie. |
#4
|
||||
|
||||
Переменные ладно, вы лучше оцените количество кнопочек на форме
Автор! Скрин этой формы можно в студию? Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#5
|
|||
|
|||
Цитата:
И по поводу укоротить а вы думайте я идиот не об являть переменные массивами? Если было бы без резницы какая переменная что делает сделал бы массив а к массиву бы код под 1-2 клавиши: D Только там целый лабораторный стол элементов и или нет + еще реализация генератора синхроимпульсов. + осцилографа и тд. |
#6
|
||||
|
||||
Посмотрел я вашу форму. Я бы вам рекомендовал положить на форму компонент ScrollBox, а уже в него все ваши компоненты. Форма у вас здоровая получается, не всякий монитор может ее отобразить в полном объеме. Кроме того, судя по тому что вы планируете, стандартные компоненты вам не очень подходят для реализации этой задачи. Можете нарисовать собственные, а можете взять уже готовый набор, например вот тут посмотрите.
А вообще, вот для размышления Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#7
|
|||
|
|||
Цитата:
повтор клавиш в порядке установленным пользователем. Остальное сам реализую)) дабы это дело ставиться под таймаут. Вот пример arr: array of integer; где арр будет принимать значение кнопок и заполняться с 0. procedure TForm1.Timer1Timer(Sender: TObject); begin Button[arr].onclick; end Button[arr].onclick; Только данная функция не кампелируется в делфи 7 Последний раз редактировалось corpse6666, 29.04.2013 в 13:34. |
#8
|
||||
|
||||
И не будет, integer и событие, это разные вещи, если только здесь не идёт речь о массиве кнопок, но можно вот так
Код:
var i,j: integer; arr: array of integer; begin for i := 0 to ComponentCount - 1 do if (Components[i] is TButton) then for j := Low(arr) to High(arr) do if (Components[i] as TButton).Tag = arr[j] then (Components[i] as TButton).OnClick; end; Код:
var i: integer; arr: array of integer; begin for i := Low(arr) to High(arr) do (FindComponent('Button' + IntToStr(arr[i])) as TButton).OnClick; end; Я не понял Вашего вопроса, но всё же Вам на него отвечу! |
#9
|
|||
|
|||
Выводит ошибки в таймере(находиться в конце).
Код:
var Form1: TForm1; a,b,c,d:integer; i: integer; arr: array of integer; v1,v2:integer; l: string; implementation {$R *.dfm} procedure TForm1.Button3Click(Sender: TObject); begin i:=i+1; arr[i]:=3; a:=radiogroup1.ItemIndex; l:=button3.Caption; end; procedure TForm1.Button6Click(Sender: TObject); begin i:=i+1; arr[i]:=6; a:=radiogroup2.itemindex; l:=button6.Caption; end; procedure TForm1.Button1Click(Sender: TObject); begin i:=i+1; arr[i]:=1; button1.Caption:=l; v1:=a; end; procedure TForm1.Button2Click(Sender: TObject); begin i:=i+1; arr[i]:=2; button2.Caption:=l; v2:=a; end; procedure TForm1.Button4Click(Sender: TObject); begin i:=i+1; arr[i]:=4; b:=v1 and v2; a:=1-b; label1.caption:=inttostr(a); l:=button4.Caption; end; procedure TForm1.Button5Click(Sender: TObject); begin i:=i+1; arr[i]:=5; Memo2.Text:=IntToStr(a); Timer1.Enabled:=True; end; procedure TForm1.Timer1Timer(Sender: TObject); begin for i := Low(arr) to High(arr) do \[Warning] Unit1.pas(103): For loop control variable must be simple local variable (FindComponent('Button' + IntToStr(arr[i])) as TButton).OnClick;\[Error] Unit1.pas(104): Not enough actual parameters end; end. |
#10
|
||||
|
||||
Цитата:
перенесите arr из публичного объявления в локальную секцию var обработчика таймера и ещё, при поиске компонета замените жим кнопки .OnClick на просто .Click. Я не понял Вашего вопроса, но всё же Вам на него отвечу! |
Этот пользователь сказал Спасибо Alegun за это полезное сообщение: | ||
corpse6666 (06.05.2013)
|
#11
|
|||
|
|||
Как избавиться от вечного заполнения массива?
Код:
var Form1: TForm1; a,b,c,d:integer; i: integer; arr: array [0..10000] of integer; v1,v2:integer; l: string; implementation {$R *.dfm} procedure TForm1.Button3Click(Sender: TObject); begin i:=i+1; arr[i]:=3; a:=radiogroup1.ItemIndex; l:=button3.Caption; end; procedure TForm1.Button6Click(Sender: TObject); begin i:=i+1; arr[i]:=6; a:=radiogroup2.itemindex; l:=button6.Caption; end; procedure TForm1.Button1Click(Sender: TObject); begin i:=i+1; arr[i]:=1; button1.Caption:=l; v1:=a; end; procedure TForm1.Button2Click(Sender: TObject); begin i:=i+1; arr[i]:=2; button2.Caption:=l; v2:=a; end; procedure TForm1.Button4Click(Sender: TObject); begin i:=i+1; arr[i]:=4; b:=v1 and v2; a:=1-b; label1.caption:=inttostr(a); l:=button4.Caption; end; procedure TForm1.Button5Click(Sender: TObject); begin i:=i+1; arr[i]:=5; Memo2.lines.Add(inttostr(c)); Timer1.Enabled:=True; end; procedure TForm1.Timer1Timer(Sender: TObject); var ii:integer; begin for ii := Low(arr)+1 to High(arr) do begin //Memo3.Lines.Add(inttostr(arr[ii])); (FindComponent('Button' + IntToStr(arr[ii])) as TButton).onClick(Sender); end; end; procedure TForm1.FormCreate(Sender: TObject); begin i:=0; end; end. |
#12
|
||||
|
||||
Нужно объявить Button1Click для всех баттонов
Код:
var i: integer = 0; ... procedure TForm1.Button1Click(Sender: TObject); begin inc(i); arr[i]:= (Sender as TButton).Tag; case (Sender as TButton).Tag of 3: a:= radiogroup1.ItemIndex; 6: a:=radiogroup2.itemindex; 1,2,4 : l:= (Sender as TButton).Caption; end; case (Sender as TButton).Tag of 1: v1:=a; 2: v2:=a; 4: begin b:=v1 and v2; a:=1-b; label1.caption:=inttostr(a); end; 5: begin Memo2.lines.Add(inttostr(c)); Timer1.Enabled:=True; end; end; // итд. end; Я не понял Вашего вопроса, но всё же Вам на него отвечу! |
#13
|
|||
|
|||
Код:
procedure TForm1.Timer1Timer(Sender: TObject); var ii:integer; begin for ii := Low(arr)+1 to 7 do begin //Memo3.Lines.Add(inttostr(arr[ii])); (FindComponent('Button' + IntToStr(arr[ii])) as TButton).onClick(Sender); end; |
#14
|
|||
|
|||
только Sender не тот
Код:
procedure TForm1.Timer1Timer(Sender: TObject); var ii:integer; C:TComponent; begin for ii := Low(arr)+1 to 7 do begin //Memo3.Lines.Add(inttostr(arr[ii])); C:=FindComponent('Button' + IntToStr(arr[ii])); if C is TButton then (C as TButton).onClick(C); //<<==----- end; или даже Код:
procedure TForm1.Timer1Timer(Sender: TObject); var ii:integer; C:TComponent; begin for ii := Low(arr)+1 to 7 do begin //Memo3.Lines.Add(inttostr(arr[ii])); C:=FindComponent('Button' + IntToStr(arr[ii])); if C is TButton then (C as TButton).Click; //<<==----- end; |
#15
|
||||
|
||||
Да нет, можно просто
Код:
(FindComponent('Button' + IntToStr(arr[ii])) as TButton).Click; Я не понял Вашего вопроса, но всё же Вам на него отвечу! |