Студопедия — CheckBox
Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

CheckBox






Edit

Компонент Delphi Edit представляет собой однострочное текстовое поле, служащее для ввода данных пользователем. Основным свойством компонента Delphi Edit, передающим введённую информацию, является свойство Edit1.Text типа String. При изучении работы с Delphi Edit советую посетить страничку работа со строками Delphi, так как там описываются функции Delphi для работы с данными, представленными в текстовой форме. Например,чаще всего, судя по поисковым запросам, посетители хотят знать, как работать с числами, введёнными в компонент Edit:
с целыми X:=StrToInt(Edit1.Text);
с дробными X:=StrToFloat(Edit1.Text);

    Можно вводить информацию с клавиатуры, присваивать в программе и считывать в переменную типа String: var S: String; begin Edit1.Text:='Присваиваем текст'; S:=Edit1.Text; end; Также при конструировании элементов Формы текст, вводимый в Инспектор объектов, сразу же появляется в компоненте Delphi Edit.

В отличие от компонента Delphi Label, который автоматически подстраивает свою длину под размер текста в свойстве Caption, вводимый в компонентDelphi Edit текст никак не влияет на длину (свойство Width) этого компонента. Не помещающаяся в установленную длину часть текста сдвигается вправо или влево за границы компонента:

begin Edit1.Text:='Текст, не помещающийся в установленные границы'; end; И хотя весь текст остаётся доступен для просмотра и редактирования путём перемещения курсора в ту или иную сторону, программист должен предусмотреть достаточную длину компонента Delphi Edit заранее, на этапе конструирования.    

Это не касается размера компонента по вертикали. Если изменить размер шрифта (свойство Font), то высота компонента Delphi Edit подстроится под высоту выбранного размера шрифта. Впрочем, это будет так, если не менять свойство AutoSize, имеющего тип Boolean. По умолчанию оно равно True. Если же установить его в False, то придётся подстраивать и высоту компонента Edit вручную.
Теперь рассмотрим события компонента Delphi Edit. В момент изменения свойства Text происходит событие OnChange. Причём не имеет значения, каким способом было произведено это изменение, вручную с клавиатуры или присвоением в программе. Новое значение Edit1.Text можно сразу присвоить переменной и использовать. Нужно только учитывать такой нюанс. По событию OnChange нельзя менять значение самого свойства Textэтого компонента. Это естественно, ведь при этом изменении опять произойдёт событие OnChange, которое вызовет следующее, и так далее. То есть, программа зациклится и зависнет. А если без этого не обойтись, в обработчике события OnChange необходимо предусмотреть условие, при выполнении которого изменения свойства Text уже не будет.
Далее, рассмотрим события, происходящие при вводе с клавиатуры. При нажатии кнопки последовательно происходят события:

OnKeyDown

OnKeyPress

OnChange

OnKeyUp

События OnKeyDown и OnKeyPress происходят практически перед нажатием, когда клавиша ещё находится в верхнем положении. Этим можно воспользоваться, чтобы переопределить символ, который появится в строке компонента. Вот как выглядят заголовки обработчиков этих событий:
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
Специально подчёркнуто отличие: в обработчике KeyDown переменная Key имеет тип Word, то есть это число, а в обработчике KeyPress эта переменная имеет тип Char, то есть это символ. Отсюда следует, что обработчик KeyPress обрабатывает нажатия только клавиш клавиатуры с символами букв и цифр, а обработчик KeyDown также и остальных клавиш.
То есть, зная коды клавиш клавиатуры, можно в обработчике KeyDown присвоить переменной Key код нужной клавиши, а в обработчике KeyPressприсвоить нужный символ, и это будет имитация нажатия соответствующей клавиши клавиатуры.
Возникает вопрос, как же узнать код клавиши клавиатуры, если под рукой нет справочника. Это очень просто. Нужно в обработчике событияOnKeyDown значение переменной Key вывести на Форму, например, в заголовок:
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
Caption:=IntToStr(Key);
end;
Ну вот, и не нужно в справочники лезть, чтобы узнать код клавиши клавиатуры! Например, код клавиши Enter равен 13, а код клавиши Esc равен 27.
В обработчике KeyPress можно написать процедуру ввода пароля. Обычно при вводе пароля вместо нажатого символа выводится символ ' * '. Для достижения такого эффекта сначала переменную Key сохраняем в глобальной переменной Pass, а затем переопределяем её, заменяя на звёздочку. Для наглядности пароль, равный слову "пароль":), я выведу в заголовок Формы:

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); begin Pass:=Pass+Key; Key:='*'; Caption:=Pass; end;    

Возникает вопрос, а как вообще запретить ввод символа с клавиатуры? Для того, чтобы никакой символ не появился в поле ввода компонента Delphi Edit (да и любого компонента ввода данных), нужно в процедуре-обработчике KeyPress переопределить его символ на код символа "отсутствие символа"! Код "отсутствие символа" равен #0. Таким образом можно разрешить ввод только определённых символов.
Например, напишем программу для ввода только цифр. Для этого создадим множество разрешённых для ввода символов. В программе будем проверять, входит ли вводимый символ в множество разрешённых, и если нет - запрещаем его появление:
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
const Digit: Set of Char=['0'.. '9'];
begin
if not (Key in Digit) then
Key:=#0;
end;
Что касается обработчика KeyUp, то его использование аналогично использованию обработчика KeyDown, только принимая во внимание, что событиеOnKeyUp происходит в момент отпускания клавиши.
Напоследок о возможности программного управления курсором и выделения текста в компоненте Delphi Edit. Для реализации этих задач служат свойства

SelStart

SelLength

SelText

Все эти свойства доступны и для чтения, и для записи.
- Свойство SelStart (типа Integer) определяет порядковый номер символа, перед которым находится курсор. Отсчёт идёт от нуля;
- Свойство SelLength (типа Integer) задаёт количество выделенных символов. Причём оно может быть и отрицательным. Тогда выделение идёт в обратную сторону, справа налево;
- Свойство SelText (типа String) содержит выделенный текст.
Чтобы выделенный текст был заметен, необходимо, чтобы компонент Edit обладал фокусом ввода. Для перемещения фокуса ввода к нужному компоненту служит свойство SetFocus. То есть, чтобы было видно выделение второго символа, нужно написать:
begin
Edit1.SetFocus;
Edit1.SelStart:=1;
Edit1.SelLength:=1;
end;
Если пропустить первый оператор, то свойство SelText всё равно будет содержать в себе второй символ, но на экране заметно этого не будет, если, конечно, фокус ввода не был перемещён туда ранее.

 

 

CheckBox

Компонент Delphi CheckBox это флажок - независимый переключатель. Флажок Delphi CheckBox используется в программе для визуализации состояний включено-выключено. Каждый щелчок мышкой по компоненту Delphi CheckBox меняет его состояние на противоположное. Смена состояния переключателя также доступна и в программе.
Delphi CheckBox представляет собой сочетание небольшого окошка, которое и визуализирует наличием или отсутствием "галочки" состояние компонента, и компонента Label - заголовка, поясняющего назначение переключателя.

  Основное свойство компонента CheckBox - Checked типа Boolean. То есть, на приведённом рисунке CheckBox1.Checked = False; CheckBox2.Checked = True; Свойство Checked доступно как для считывания, так и для записи, то есть, добиться такого как на рисунке вида компонентов Delphi CheckBox можно так: CheckBox1.Checked:= False; CheckBox2.Checked:= True;

Главным образом, компонент Delphi CheckBox применяется в условных операторах, и помогает сформировать условия выбора того или иного действия в программе.
Компонент Delphi CheckBox - независимый переключатель, то есть в группе из нескольких компонентов каждый из них может быть установлен в произвольное состояние, независимое от состояния остальных компонентов группы (в отличие от компонента Radiobutton).
Помимо свойства Checked, позволяющего управлять состоянием компонента, у Delphi CheckBox есть свойство State (состояние), которое может иметь уже три значения. Первые два значения cbChecked ("отмечено") и cbUnChecked ("не отмечено"), а третье - cbGrayed ("не определено" или "не знаю") становится доступным для выбора если установить в True свойство AllowGrayed компонента. Свойства Checked и State связаны между собой:

если свойство State равно cbChecked, свойство Checked = True;

если свойство State равно cbUnchecked или cbGrayed, свойство Checked = False.

При щелчке мышкой эти три состояния сменяют друг друга в следующей последовательности:

  cbGrayed - не определено (или "не знаю"); cbChecked - отмечено; cbUnChecked - не отмечено;  

Расположением текста в компоненте Delphi CheckBox также можно управлять. Для этой цели служит свойство Alignment, принимающее значения:

taRightJustify - расположение текста справа; taLeftJustify - расположение текста слева.   RadioButtonКомпонент Delphi RadioButton - это "радиокнопка", и как следует из названия, служит для "переключения каналов", как и в настоящем радиоприёмнике. Это значит, если выбран один из компонентов Delphi RadioButton, то с остальных компонентов выбор автоматически снимается. Получается, что в данный момент может быть выбран только один из группы компонентов Delphi RadioButton. Если в начальный момент ни один из компонентов не выбран, то достаточно сделать такой выбор - щёлкнуть по одному из компонентов, и в дальнейшем можно только "переключать" компоненты, снять выбор уже невозможно. Хотя нет, есть способ - программно! Компонент Delphi RadioButton состоит из круглого окошка и текстовой строки. В окошке появляется отметка выбора данного компонента, текстовая строка поясняет его смысл. За изменение текстовой строки отвечает свойство Caption. Основное же свойство компонента Delphi RadioButton - Checked(т.е. "выбрано") типа Boolean, доступное как для чтения, так и для записи. У выбранного компонента свойство Checked равно True.
  На данной Форме RadioButton1.Checked = True; RadioButton2.Checked = False; RadioButton13Checked = False; Для выбора, например, компонента RadioButton2 достаточно написать RadioButton2.Checked:= True;// отметка с RadioButton1 будет снята автоматически. Для снятия выбора нужно в программе написать RadioButton1.Checked:= False;// теперь ни один из компонентов не выбран. Вручную этого достичь невозможно.

Основным событием компонента Delphi RadioButton является, естественно, OnClick, то есть щелчок мышкой. В этот момент могут быть выполнены процедуры, соответствующие выбору этого компонента.
ПРИМЕР. Пусть у нас есть несколько компонентов RadioButton, и пользователь производит выбор одного из них. Затем, при нажатии кнопки, нужно проанализировать выбор пользователя, и выполнить соответствующую этому выбору процедуру. Будем исходить из предположения, что компоненты имеют имена RadioButton1, 2, 3 и так далее, а соответствующие процедуры proc1, 2, 3 и так далее.
Введём глобальную переменную, принимающую значение 1, 2, 3 и так далее, соответствующее выбранному компоненту RadioButton. Присваивать значение будем по событию OnClick. Соответственно, потребуется столько обработчиков этого события, сколько компонентов RadioButton у нас в программе.
Однако, это затратно и утомительно, плодить множество аналогичных обработчиков. Ведь, использовав параметр Sender, определённый в обработчике события OnClick, можно обойтись и одним обработчиком! Только нужно выбрать его как обработчик события OnClick для всех компонентов RadioButton. Получается такая программа, состоящая из двух процедур:
var
Form1: TForm1;
V: Integer;
implementation
{$R *.dfm}
procedure TForm1.RadioButton1Click(Sender: TObject);
begin
with (Sender as TRadioButton) do
V:=StrToInt(copy(Name, 12, Length(Name)-11));
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
case V of
1: proc1;
2: proc2;
3: proc3;
4: proc4;
5: proc5;
6: proc6;
end;
end;


 







Дата добавления: 2015-08-12; просмотров: 1438. Нарушение авторских прав; Мы поможем в написании вашей работы!



Практические расчеты на срез и смятие При изучении темы обратите внимание на основные расчетные предпосылки и условности расчета...

Функция спроса населения на данный товар Функция спроса населения на данный товар: Qd=7-Р. Функция предложения: Qs= -5+2Р,где...

Аальтернативная стоимость. Кривая производственных возможностей В экономике Буридании есть 100 ед. труда с производительностью 4 м ткани или 2 кг мяса...

Вычисление основной дактилоскопической формулы Вычислением основной дактоформулы обычно занимается следователь. Для этого все десять пальцев разбиваются на пять пар...

ОЧАГОВЫЕ ТЕНИ В ЛЕГКОМ Очаговыми легочными инфильтратами проявляют себя различные по этиологии заболевания, в основе которых лежит бронхо-нодулярный процесс, который при рентгенологическом исследовании дает очагового характера тень, размерами не более 1 см в диаметре...

Примеры решения типовых задач. Пример 1.Степень диссоциации уксусной кислоты в 0,1 М растворе равна 1,32∙10-2   Пример 1.Степень диссоциации уксусной кислоты в 0,1 М растворе равна 1,32∙10-2. Найдите константу диссоциации кислоты и значение рК. Решение. Подставим данные задачи в уравнение закона разбавления К = a2См/(1 –a) =...

Экспертная оценка как метод психологического исследования Экспертная оценка – диагностический метод измерения, с помощью которого качественные особенности психических явлений получают свое числовое выражение в форме количественных оценок...

Кишечный шов (Ламбера, Альберта, Шмидена, Матешука) Кишечный шов– это способ соединения кишечной стенки. В основе кишечного шва лежит принцип футлярного строения кишечной стенки...

Принципы резекции желудка по типу Бильрот 1, Бильрот 2; операция Гофмейстера-Финстерера. Гастрэктомия Резекция желудка – удаление части желудка: а) дистальная – удаляют 2/3 желудка б) проксимальная – удаляют 95% желудка. Показания...

Ваготомия. Дренирующие операции Ваготомия – денервация зон желудка, секретирующих соляную кислоту, путем пересечения блуждающих нервов или их ветвей...

Studopedia.info - Студопедия - 2014-2024 год . (0.009 сек.) русская версия | украинская версия