Получение строки и номера строки. — КиберПедия 

Папиллярные узоры пальцев рук - маркер спортивных способностей: дерматоглифические признаки формируются на 3-5 месяце беременности, не изменяются в течение жизни...

История развития хранилищ для нефти: Первые склады нефти появились в XVII веке. Они представляли собой землянные ямы-амбара глубиной 4…5 м...

Получение строки и номера строки.

2017-12-13 387
Получение строки и номера строки. 0.00 из 5.00 0 оценок
Заказать работу

При работе с компонентом ListBox/ComboBox пользователь выбирает из списка нужный элемент. Мы можем использовать его в дальнейшем. Для получения строки существует процедура

ListBox1.Items[ n ];

где n - номер строки. Номер строки, которую выбрал пользователь хранится в свойстве ItemIndex и получить его мы можем через

ListBox1.ItemIndex;

Эти две процедуры можно и нужно совместить

ListBox1.Items[ListBox1.ItemIndex];

Если же в коде выше процедуры обращаются к компонентам с разными номерами, то мы свяжем два списка между собой. Пользователь выбирает строку, а программа при этом оперирует строкой с тем же номером, но из другого компонента.

Рассмотрим теперь компонент ComboBox. Стиль изображения этого компонента определяется свойством Style, которое может принимать следующие основные значения:

csDropDown Выпадающий список со строками одинаковой высоты и с окном редактирования, позволяющим пользователю вводить или редактировать текст (правый список на рис. 3.10).
csSimple Развернутый список со строками одинаковой высоты и с окном редактирования, позволяющим пользователю вводить или редактировать текст (левый нижний список на рис. 3.10).
csDropDownList Выпадающий список со строками одинаковой высоты, не содержащий окна редактирования.

Выбор пользователя или введенный им текст можно определить по значению свойства Text. Если же надо определить индекс выбранного пользователем элемента списка, то можно воспользоваться обсуждавшимся в компоненте ListBox свойством ItemIndex. Все сказанное выше об ItemIndex и о

 

 

задании его значения по умолчанию справедливо и для компонента ComboBox. Причем для ComboBox задание начального значения ItemIndex еще актуальнее, чем для ListBox. Если начальное значение не задано, то в момент запуска приложения пользователь не увидит в окне компонента одно из возможных значений списка и, вероятнее всего, не очень поймет, что с этим окном надо делать.

Если в окне проводилось редактирование данных, то ItemIndex = -1. По этому признаку можно определить, что редактирование проводилось.

Свойство MaxLength определяет максимальное число символов, которые пользователь может ввести в окно редактирования.

Если MaxLength = 0, то число вводимых символов не ограничено.

Как и в компоненте ListBox, свойство Sorted позволяет упорядочить список по алфавиту. При Sorted = true новые строки в список добавляются не в конец, а по алфавиту.

Каждая строка компонентов ListBox и ComboBox является объектом Items[i], а Memo - Lines[i], где i - номер строки, который отсчитывается от нуля. Добавление строк в компоненты выполняется методами Add и Insert:


begin
Memo1.Lines.Add('Первая строка');
ComboBox1.Items.Add('Первая строка');
ComboBox1.Items.Add('Вторая строка');
ListBox1.Items.Add('Первая строка');
ListBox1.Items.Add('Вторая строка');
end;

Метод Add добавляет новую строку в конец. Метод Insert имеет дополнительный параметр, указывающий, после какой строки разместить новую строку. Доступ к строкам осуществляется так:

ComboBox1.Items[0] := ' Первая строка изменилась ';
ListBox1.Items[1] := ' Вторая строка изменилась ';

У компонента ComboBox дополнительно есть свойство Text, где (как и у компонента Edit) находится вводимый текст:

ComboBox1.Text:= ' Вводимый текст ';

На выделенную в данный момент строку компонента ComboBox указывает свойство ItemIndex типа Integer, то есть это номер выделенной строки. Следовательно, получить саму выделенную строку компонентаComboBox можно следующей конструкцией:

S:=ComboBox1.Items[ComboBox1.ItemIndex];

или, пользуясь оператором присоединения

With ComboBox1 do
S:=Items[ItemIndex];

Вот как по нажатию клавиши Enter можно заносить в этот компонент вводимую в строку информацию и удалять нажатием Escape:
Выделите на Форме ComboBox и перейдите в Инспектор объектов, на вкладку Events. Щёлкните дважды по обработчику OnKeyPress. Система Delphi создаст заготовку обработчика. Напишите:

begin
if Key=#13 then
ComboBox1.Items.Add(ComboBox1.Text);
if Key=#27 then
ComboBox1.Items.Delete(ComboBox1.Items.Count-1);
end;

Key - определённая в этом обработчике переменная, содержащая код нажатой клавиши, #13 и #27 - коды клавиш Enter и Escape соответственно. Items.Count - количество содержащихся в компоненте строк. Так как отсчёт строк идёт от нуля, мы отнимаем единицу. После очередного удаления количество строк меняется, таким образом, Items.Count-1 всегда указывает на последнюю строку. Последовательно нажимая Escape, мы можем удалить все строки. Командой
ComboBox1.Items.Delete(0);
можно добиться того же эффекта, только удаляться будут первые строки. Впрочем, чтобы стереть всё сразу, есть метод Clear!

Ну а теперь собственно о сохранении содержимого в файл. Для этого выполните команду

ListBox1.Items.SaveToFile(' Имя_файла.txt ');

Впрочем, расширение можно поставить любое по желанию, не обязательно. txt, как и вообще без него обойтись. Но расширение. txt позволит легко открыть файл стандартным виндовским Блокнотом, что бывает очень удобно на этапе написания программы!
Для загрузки служит метод LoadFromFile:

ListBox1.Items.LoadFromFile(' Имя_файла.txt ');

Что делать, если в своей программе мы не работаем с компонентами Combobox, ListBox или Memo, а сохранять информацию нужно? Берём один из компонентов и делаем его невидимым, для этого в Инспекторе Объектов ставим в свойство Visible значение False. Функциональность его от этого не изменится!

Последний штрих - создадим программу, сохраняющую своё положение на экране в момент закрытия и там же открывающуюся. Нам нужно сохранить два параметра - значения свойств Формы Left и Top, это расстояние от левого и верхнего краёв экрана соответственно. Значения эти выражаются в пикселах и имеют тип Integer. Необходимо перевести эти числа в строку (тип String) с помощью оператора IntToStr. Итак, разместите на Форме невидимый ListBox, щёлкните по пустому месту Формы, чтобы её свйства появились в Инспекторе объектов, и перейдите на вкладку Events. Щёлкните по обработчику OnClose и в созданной заготовке напишите:

begin
ListBox1.Items.Clear;
ListBox1.Items.Add(IntToStr(Form1.Left));
ListBox1.Items.Add(IntToStr(Form1.Top));
ListBox1.Items.SaveToFile('MyFormPos.txt');
end;

Этот обработчик сохраняет положение Формы на экране. Теперь напишем обработчик, помещающий Форму на прежнее место при старте программы. Создайте заготовку обработчика события OnCreate. Это событие происходит в момент "создания" Формы операционной системой. В этот момент и нужно присваивать ей необходимые свойства. Пишите:

begin
if FileExists('MyFormPos.txt') then
begin
ListBox1.Items.LoadFromFile('MyFormPos.txt');
Form1.Left:=StrToInt(ListBox1.Items[0]);
Form1.Top:=StrToInt(ListBox1.Items[1]);
end;
end;

В первой строке происходит проверка на существование файла, ведь если его не будет, произойдёт ошибка. Впрочем, программа после выдачи предупреждения откроется в том месте, где была на этапе проектирования, а при закрытии нужный файл будет воссоздан!
Затем в логических скобках begin / end содержится сам код, который будет выполнен только приналичии файла MyFormPos.txt в папке с программой, так как используется относительный путь. Можно указать конкретное местоположение, например, C:\Program Files\MyProg\MyFormPos.txt.

Имеется еще один компонент, очень похожий на ListBox — это список с индикаторами CheckListBox. Выглядит он так же, как ListBox, но около каждой строки имеется индикатор, который пользователь может переключать. Индикаторы можно переключать и программно, если список используется для вывода данных и необходимо в нем отметить какую-то характеристику каждого объекта, например, наличие товара данного наименования на складе.

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

При каждом щелчке пользователя на индикаторе его состояние изменяется, проходя в общем случае последовательно три значения: выделение(появление черной галочки), промежуточное (серое окно индикатора и серая галочка) и не выделенное (пустое окно индикатора).Эти м трем состояниям соответствуют три значения свойства компонента State (при AllowGrayed=true):

CbChecked, CbGrayed, сbUnchecked

При AllowGrayed=false (значение по умолчанию) допускаются только два состояния: выделенное и не выделенное.

Проверять состояние индикатора можно не только по значению State, но и по значению свойства Checked. Если Checked=true, то индикатор выбран, а если false, State равно либо CbGrayed либо сbUnchecked. Обращениексвойствам:

CheckListBox1.Checked[1]:= trueCheckListBox1. State[2]:= CbGrayed

Оператор

for I:= 0 to CheckListBox1.Items.Count - 1 doif CheckListBox1.Checked[i] then...

В компоненте CheckListBox имеется также событие onClickCheck, возникающее при каждом изменении пользователем состояния индикатора. Его можно использовать для обработки результатов изменения.

На закладке "standard" есть два компонента, это ListBox и ComboBox .
Оба этих компонента позволяют создавать списки, содержащие строки Items. Компонент ListBox - список строк. Строки можно загружать из файла, сохранять в файле, программно добавлять или удалять отдельные строки. Компонент ComboBox, аналогичен компоненту ListBox, но список "вываливается" при щелчке на кнопку, а выделенная строка отображается в редакторе.
Для изучения свойств этих компонентов, разработаем специальный текстовый редактор. Известно, что профессиональные WEB дизайнеры пишут HTML код в обычном блокноте. Облегчим жизнь дизайнерам и создадим блокнот, в котором будет список тэгов, которые можно будет по мере надобности вставлять в текст HTML страницы. Для изготовления программы установим компоненты так, как показано на рисунке.

Компонент Panel1 (панель) должен иметь свойство Align = alRight.
Компонент ComboBox1 будем использовать для изменения размера шрифта в редакторе. У компонента ComboBox1 в поле свойств text следует ввести 10.

 

В поле Items следует нажать маленькую кнопку и в появившемся текстовом редакторе ввести строки:

 

 

Для создания списка тэгов HTML следует в блокноте создать файл примерно такого содержания:

Файл следует сохранить в папке с проектом, с именем, например tag.txt.
Компоненту Memo1 следует присвоить значение Align = alClient.

Создадим событие для формы onCreate и загрузим в ListBox1 файл со списком тегов:
procedure TForm1.FormCreate(Sender: TObject);
begin
Memo1.clear;
ListBox1.Items.LoadFromFile('tag.txt');
end;

Если всё сделано правильно, то при запуске проекта мы увидим такую картинку:

 

 

Для вставки тэгов в блокнот Memo1 создадим событие onDblClick для компонента ListBox1:
procedure TForm1.ListBox1DblClick(Sender: TObject);
begin
Memo1.Lines.Add(ListBox1.Items[ListBox1.ItemIndex]);
end;
Здесь, запись Memo1.Lines.Add означает - добавить строку в блокнот Memo1.
ListBox1.Items - строка из списка с номером [ListBox1.ItemIndex]. ItemIndex - номер выделенной строки в списке. Так как ListBox1.Items является массивом строк, то обращение к строке осуществляется как к элементу массива, по его номеру.
Запустим проект на исполнение и попробуем написать HTML страничку, вставляя тэги двойным щелчком в ListBox1.

 

Следующим компонентом для исследования будет ComboBox1. На закладке Events инспектора объектов следует создать (двойным щелчком) событие onChange (изменение содержимого редактора ComboBox1), и напишем следующие строки:
procedure TForm1.ComboBox1Change(Sender: TObject);
var
n: integer;
// число - размер шрифта пользователя.
begin
if ComboBox1.Text = '' thenexit;
// Если в редакторе нет данных то выход
try // Включаем режим отслеживания ошибок преобразования строки в число
n:= StrToInt(ComboBox1.Text); //Преобразуем строку в числовое значение
except // Если возникла ошибка преобразования, то выдаём сообщение
onException: EConvertErrordo

ShowMessage(Exception.Message);
end;
memo1.Font.Size:= n;
// Присваиваем шрифту Memo1 новое значение
end;
Запускаем программу и убеждаемся, что всё работает нормально.

 

Для доступа к содержимому списков существует несколько функций, которые можно использовать во время выполнения программы:
ItemIndex - возвращает номер выделенной строки в списке (счёт строк начинается с 0);
Count - возвращает число строк в списке;
Items[n] - возвращает или записывает строку с номером n;
Items.add(строка) - добавляет строку в конец списка;
Items.delete(n) - удаляет строку с номером n из списка;
Items.Insert(i, 'Новая cтрока') - вставляет новую строку перед строкой с номером i.
Для проверки перечисленных действий добавим в нашу программу текстовый редактор Edit1 и четыре кнопки, которые будут добавлять, заменять, удалять и вставлять текст в список тэгов:

 


КнопкаДобавить - button1;
КнопкаЗаменить - button2;
КнопкаУдалить - button3;
КнопкаВставить - button4;

procedure TForm1.Button1Click(Sender: TObject);
begin
if MessageDlg('Добавитьзапись?', mtInformation, [mbOk,mbCancel],0) = mrOK
then
begin
ListBox1.Items.Add(edit1.text);
ListBox1.Items.SaveToFile('tag.txt');
end;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
if MessageDlg('Заменитьзапись?', mtInformation, [mbOk,mbCancel],0) = mrOK
then
begin
ListBox1.Items[ListBox1.ItemIndex]:= edit1.Text;
ListBox1.Items.SaveToFile('tag.txt');
end;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
if MessageDlg('Удалитьзапись?', mtInformation, [mbOk,mbCancel],0) = mrOK
then
begin
ListBox1.Items.delete(ListBox1.ItemIndex);
ListBox1.Items.SaveToFile('tag.txt');
end;
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
if MessageDlg('Вставитьзапись?', mtInformation, [mbOk,mbCancel],0) = mrOK
then
begin
ListBox1.Items.Insert(ListBox1.ItemIndex, Edit1.text);
ListBox1.Items.SaveToFile('tag.txt');
end;
end;

Индивидуальные задания

 

Задание 1. Рассмотреть свойства компонентов ListBox, ComboBox и CheckListBox, создав следующую форму.

 

 

Задание 2. Список группы. Составить программу, которая по нажатию на кнопку «Добавить в список» добавляет в список ListBox фамилию и имя, указанные в соответствующих Edit. Нажатие на кнопку «Удалить из списка» должно удалять из ListBox

Ход работы:

Расположите компоненты на форме (рис.1).

В обработчик кнопки «Добавить с список» занесите следующий код:

ListBox1.Items.Add(Edit1.Text+' '+Edit2.Text);

Edit1.SetFocus;

В обработчик кнопки «Удалить из списка»:

ListBox1.Items.Delete(ListBox1.ItemIndex);

В обработчик кнопки «Очистить список»:

ListBox1.Items.Clear;

Запустите программу и создайте список из нескольких человек. Проверьте кнопки «Удаление из списка», «Очистить список».

Задание 3. Справочник цветов. Создать программу, которая позволяет из списка ListBox выбирать название цвета. В результате выбора на экране должно появляться название цвета в формате RGB. Примерный вид запущенного приложения показан на рисунке 2.

Название цвета Формат RGB
черный  
белый FFFFFF
красный FF0000
зеленый 00FF00
бирюзовый 00FFFF
синий 0000FF
фиолетовый FF00FF
желтый FFFF00
коричневый  
оранжевый FF8000
лиловый 8000FF
серый А0А0А0

 

Рисунок 2.

 

 

Задание 4. Создайте программу, подсчитывающую стоимость заказа (рис.2). Результат подсчета должен выводится на Panel.

Подсказка: в обработчике события onClick компонента CheckListBox необходимо проверять все строки. Если строка выделена (стоит галочка), то нужно к общей стоимости прибавлять соответствующую сумму из ListBox. Для пробега по строкам использовать цикл For.

 

Работа с основными устройствами ПК.

Состав и назначение программного обеспечения.

Основные устройства ПК.

Прежде всего, компьютер, согласно принципам Фон Неймана, должен иметь следующие устройства:

1) арифметически-логическое устройство, выполняющее арифметические и логические операции;

2) устройство управления, которое организует процесс выполнения программ;

3) запоминающее устройство, или память для хранения программ и данных;

4) внешние устройства для ввода-вывода информации.

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

Следует заметить, что в схеме устройства современных ПК арифметическо-логическое устройство и устройство управления, как правило, объединены в единое устройство — центральный процессор.

Рис. 1

 

 

Различные устройства ПК связаны между собой каналами передачи информации. Из внешнего мира информация поступает в компьютер через устройства ввода. Поступившая информация попадает во внутреннюю память. Если требуется длительное ее хранение, то из внутренней памяти она переписывается во внешнюю. Обработка информации осуществляется процессором при непрерывной связи с внутренней памятью: оттуда извлекаются исходные данные, туда же помещаются результаты их обработки. Из внутренней памяти информация может быть передана во внешний мир через устройства вывода.

Работа любого компьютера осуществляется благодаря взаимосвязи двух компонентов: аппаратной части (hardware) и программного обеспечения (software).

 

Рис.2

Системный блок с помощью разъемов (на задней стенке) и электрических кабелей связан со всеми устройствами ввода и вывода информации.

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

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

Замечание: в разных литературных источниках история появления данных терминов далеко не однозначна, тем не менее, эти термины окончательно утвердились во всем мире.

Процессор.

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

Процесс представления решения задачи в последовательность команд, входящих в систему команд процессора называется программированием, а сама последовательность команд называется программой решения задачи.

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

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

К числу важнейших характеристик процессора относится и разрядность обрабатываемых процессором данных. Чем больше разрядность, тем выше точность обработки данных. Первые варианты компьютеров IBM PC были 16-разрядными. За последние годы эти 16-разрядные компьютеры вытесняются более совершенными, 32-разрядными.

Сказанное поясним следующим примером. Пусть мы что-то измерили (температуру, влажность, длину отрезка и т.д.). Чем точнее мы измеряем величину, тем больше разрядов будет иметь изображение этой величины. Например, длину отрезка можно представить с точностью до метра, до сантиметра, до миллиметра, и т.д., и чем точнее будет представлена эта величина, тем больше в своем изображении она будет иметь разрядов.

Процессор для компьютеров IBM PC представляет собой одну микросхему. Такие процессоры называются однокристальными микропроцессорами. Микропроцессоры для компьютеров IBM PC разрабатываются и поставляются известной американской фирмой Intel.


Поделиться с друзьями:

Типы сооружений для обработки осадков: Септиками называются сооружения, в которых одновременно происходят осветление сточной жидкости...

Индивидуальные очистные сооружения: К классу индивидуальных очистных сооружений относят сооружения, пропускная способность которых...

Типы оградительных сооружений в морском порту: По расположению оградительных сооружений в плане различают волноломы, обе оконечности...

Состав сооружений: решетки и песколовки: Решетки – это первое устройство в схеме очистных сооружений. Они представляют...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.009 с.