Консультация № 85203
03.05.2007, 09:19
0.00 руб.
0 1 1
Уважаемые эксперты, помогите. Разрабатываю простой эммулятор работы микросхемы "И", по нажатию кнопок ОДИН и НОЛЬ на форме рисуется временная диаграмма.
Вопрос 1: как сделать так, чтобы эти кнопки были не видимые и срабатывали по нажатию 1 или 0 на клавиатуре?
Вопрос 2: как создать массив, состоящий из 0 и 1 при по нажатию данных клавиш (2 массива) ?

Приложение:
рисование по нажатию единицы: procedure TForm1.bOneClick(Sender: TObject);vaR k:integer;s:string;beginif checkbox1.Checked=true then begin if CurY<>y-10 then begin tabcontrol1.Canvas.LineTo(CurX,CurY-10); CurY:=CurY-10; end;tabcontrol1.Canvas.LineTo(CurX+10,CurY); CurX:=CurX+10; mas1[i]:=1; end; if checkbox2.Checked=true then begin if CurY<>y-10 then begin tabcontrol2.Canvas.LineTo(CurX,CurY-10); CurY:=CurY-10; mas2[i]:=1; end; tabcontrol2.Canvas.LineTo(CurX+10,CurY); CurX:=CurX+10; end;

Обсуждение

Неизвестный
03.05.2007, 11:55
общий
это ответ
<i>Здравствуйте, <b>Садовский А.А.</b>!</i>

<b>1.</b> Кнопки делать невидимыми не надо. Если они не нужны, то их и не нужно создавать.
Чтобы сделать у формы обработчик нажатия клавишь, нужно:
<b>1.1.</b> Установить свойство формы KeyPreview = True
<b>1.2.</b> Создать обработчик (двойным кликом мыши) события (на закладке Events свойств формы) OnKeyPress, в нем прописать:
<code>
<b>procedure </b>TForm1.FormKeyPress(Sender: TObject; <b>var</b> Key: Char);
<b>var</b>
k: Integer;
s: <b>String;
begin

case</b> Key <b>of</b>
‘1‘:
<b>begin</b>
<font color=green>Сюда пишете обработчик нажатия на кнопку 1</font>
<b>end</b>;
‘0‘:
<b>begin</b>
<font color=green>Сюда пишете обработчик нажатия на кнопку 0</font>
<b>end;
end;

end;</b>
</code>
<b>2.</b> Второй Ваш вопрос мне не совсем понятен.
Массивы задаются с помощью команды <b>array</b>. Пример:
<code>
Massiv: <b>array</b>[0..100] <b>of</b> Byte;
</code>
Также массивы можно реализовывать с помощью класса TList.

<i>PS</i>
Проверку:
<code>
<b>if </b>checkbox2.Checked=true <b>then begin</b>
</code>
Нужно делать короче:
<code>
<b>if </b>checkbox2.Checked <b>then begin</b>
</code>
В Вашем случае Delphi делает следующее:
1. Проверяет содержимое checkbox2.Checked
2. Сравнивает его с True (результат в виде boolean)
3. Сравнивает результат сравнения с True

Во втором случае Delphi будет делать:
1. Проверяет содержимое checkbox2.Checked
2. Сравнивает его с True

Как видите, второй вариант применять оптимальнее
Форма ответа