Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Свойства компонента StringGrid

Свойства и методы класса Tstrings.

 

LoadFromFile ('путь') –(загрузить из файла), где 'путь' – это путь к файлу.

Например, для загрузки файла c:\My.txt в компонент Memo1 достаточно в соответствующий обработчик события включить инструкцию:

 

Memo1.Lines.LoadFromFile('c:\My.txt');

 

Количество строк в компоненте можно узнать через свойство Count:

Memo1.Lines.Count,

 

Доступ к отдельной строке можно получить с помощью метода Strings[n] ( класс Tstrings), где n– номер строки (нумерация начинается с 0). Например:

ShowMessage(Memo1.Lines.Strings[0]); // Показывает в диалоговом окне первую строку текста.

Фактически Strings - это массив строк, начинающихся со строки номер 0 и заканчивающийся строкой номер Count-1. Об этом следует помнить при написании подобных процедур доступа, иначе можно выйти за доступный предел массива, что вызовет ошибку в программе.
Для поочередного просмотра строк из компонента Memo1 можно использовать следующий обработчик.
procedure TForm1.Button1Click(Sender: TObject);
Var i:Integer; // объявление целочисленной переменной
begin
if Memo1.Lines.Count<>0 then // проверка ненулевого количества строк
for i:=0 to Memo1.Lines.Count-1 do // задается цикл, равный кол-ву строк
ShowMessage(Memo1.Lines.Strings[i]); // вывод строк в сообщение
end;

Clear (Очистка) – удаляет содержимое компонента, например,

 

Memo1.Lines.Clear.

 

Add (добавление) - добавляет строку, например,


Memo1.Lines.Add(St); где St– строковая константа или переменная.

Insert(n,St) вставляет строку Stна место строки номер n, где St– строковая константа или переменная, например,


Memo1.Lines.Insert(0,'вставляемая строка');

 

Delete(n) Удаление строки номер n, например,


Memo1.Lines.Delete(0); // удаляет первую строку

При применении процедуры удаления строк Delete помните, что сначала нужно проверять компонент TMemo на наличие строк вообще. Проверку можно осуществлять с помощью функции Count, которая возвращает количество строк.
Работа с выделенным текстом программно аналогична работе пользователя вручную. Если пользователь выберет процедуру вырезания выделенного текста в буфер или его удаление, то он пропадет. Выделение текста производится с помощью двух процедур.

Memo1.SelStart:=0; // установить начальное положение выделения
Memo1.SelLength:=15; // установить длину выделенного текста

Если необходимо всегда видеть выделенный текст, даже при переходе управления на другой элемент управления, то задайте свойству HideSelection значение false.
Работа с выделенным фрагментом текста

Memo1.ClearSelection; // удалить выделенный текст
Memo1.CutToClipboard; // вырезать в буфер обмена
Memo1.CopyToClipboard; // скопировать в буфер обмена
Memo1.PasteFromClipboard; // вставить из буфера обмена
Memo1.SelText; // эта функция возвращает текстовую строку выделенного текста

Отмена последнего изменения - процедура Memo1.Undo.

 

Замечание. Компонент Memo можно использовать для отображения на экране массива чисел. Если заносить в Memo числа с помощью оператора

Memo1.Text:= Memo1.Text + S;

то при формировании таблицы надо точно устанавливать ширину поля (свойство Width). Если же использовать добавление строк (метод Add), например так

 

Form1.Memo1.Lines.Add(Sx + ' ' + Sy);

где Sx и Sy – символьные представления чисел,

то ширина поля не играет роли - каждая строка в данном случае будет содержать по два числа.

 

Пример: вывод массивов чисел в Memo.

Пусть необходимо рассчитать таблицу значений функции (например у=х*х). В качестве исходных данных будем задавать значения Xn, Dx и N - начальное значение аргумента, шаг и количество значений функции соответственно. Значения аргумента и функции будем заносить в массивы ХА и У соответственно. Выберем размер массивов равным 50 элементов. Вывод массивов будем делать в компонент Memo.

Таким образом форма должна содержать компонент Memo, поля Edit для ввода значений Xn, Dx, N и две кнопки: "Таблица" и "Закрыть". При щелчке на кнопке "Таблица" вычисляется массив значений функции У = Х * Х и выводится таблица (значения Х и У) в компонент Memo. При щелчке на кнопке "Закрыть" приложение закрывается. Проект формы показан на рис.5.25.1.

 

Рис.5.25.1.

 

Порядок создания.

1. Щелкнем по пиктограмме Memo и нарисуем прямоугольник в форме.

2. В инспекторе объектов откроем свойство Lines компонента Memo и удалим имеющийся там текст (его можно удалить и с помощью метода Clear).

3. Чтобы выводить таблицу из двух столбцов установим ширину компонента Memo равной 220 пикселей. Пусть таблица может содержать до 50 строк, то есть не помещается в поле компонента Memo. В этом случае надо предусмотреть полосу прокрутки по вертикали. Для этого установим для свойства ScrollBar значение ssVertical.

4. Создадим как и ранее кнопку с надписью " Таблица" (для расчета таблицы значений функции) и кнопку с надписью "Закрыть" (для эакрытия приложения).

В модуль формы добавим:

а) в раздел описания переменных

X,Xn,dX:Extended;

XА,Y: array [1..50] of Extended;

s1,s2: String;

б) в обработчик кнопки "Таблица" добавим:

procedure TForm1.Button1Click(Sender: TObject);

Var

k:Integer;

begin

X:=StrToFloat(Edit1.Text); {Ввод исходных данных}

dx:=StrToFloat(Edit2.Text);

N:=StrToInt(Edit3.Text);

For k:=1 To N Do Begin {расчет массивов}

Y[k]:=X*X;

XА[k]:=X;

X:=X+dx;

end;

For k:=1 To 50 Do Begin {переход к символьному

представлению и построчная запись в Memo1}

Str(XА[k]:14,s1);

Str(Y[k]:14,s2);

Form1.memo1.Lines.Add(s1+' '+s2);

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

unit Unimem;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

StdCtrls;

type

TForm1 = class(TForm)

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Edit1: TEdit;

Edit2: TEdit;

Edit3: TEdit;

Memo1: TMemo;

Button1: TButton;

Button2: TButton;

Label4: TLabel;

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

X,Xn,dx:Extended;

N:Integer;

XA,Y:array [1..50] of Extended;

S1, S2:String;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);

Var K:Integer;

begin

X:=StrToFloat(Edit1.Text);

dx:=StrToFloat(Edit2.Text);

N:=StrToInt(Edit3.Text);

For k:=1 To N Do Begin {расчет массивов}

Y[k]:=X*X;

XA[k]:=X;

x:=x+dx;

end;

For k:=1 To N Do Begin {переход к символьному

представлению и построчная запись в Memo1}

Str(XA[k]:14,s1);

Str(Y[k]:14,s2);

Form1.memo1.Lines.Add(s1+' '+s2);

end;

end;

procedure TForm1.Button2Click(Sender: TObject);

begin

Close;

end;

end.

5.12.7. Компонент StringGrid

Пиктограмма: .

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

Общий вид компонента приведен на рис.5.25.2.

 

Рис.5.25.2.

 

Таблица состоит из двух областей — фиксированной и подвижной. Фиксированную область (выделено на рис.5.25.2 серым цветом) обычно составляют верхняя строка и левый столбец. Ячейки этой области можно использовать, например, для вертикальных и горизонтальных заголовков. Они выделяются другим цветом и всегда видимы. Их нельзя сфокусировать и выделить. Кроме того, изменять ширину и высоту ячеек таблицы мышью во время проектирования можно только передвигая границы ячеек в фиксированной области. По умолчанию для этой области отведены один столбец и одна строка, но эти числа могут быть изменены. Все остальные ячейки перемещаются при прокрутке таблицы и составляют подвижную область.

Каждый элемент таблицы (включая и неподвижную область) определяется двумя индексами: первый индекс указывает номер столбца, а второй индекс - номер строки (это прямо противоположно общепринятой в математике нумерации элементов двумерного массива). Нумерация столбцов и строк начинается с нуля (рис.5.25.2).

Содержимое каждого элемента таблицы задается свойством Cells. Обращение к отдельному элементу таблицы осуществляется так же, как и в случае массива, например

StringGrid1.Cells[1,0]:= 'аргумент Х';.

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

Кроме типичных свойств (Color, Name, Width и т.п.) имеется ряд полезных свойств, которые часто используются при создании таблиц:

RowCount - количество строк;

ColCount - количество столбцов;

DefaultColWidth - ширина колонки;

DefaultRowHeight - высота строки и др.

Для доступа к ячейкам таблицы со стороны клавиатуры надо в свойстве Option установить значение подсвойства GoEditing равным True.

Свойство Options является множеством, определяющим многие свойства таблицы: наличие разделительных вертикальных и горизонтальных линий в фиксированных (goFixedVertLine и goFixedHorzLine) и не фиксированных (goVertLine и goHorzLine) ячейках, возможность для пользователя изменять с помощью мыши размеры столбцов и строк (goColSizing и goRowSizing), перемещать столбцы и строки (goColMoving и goRowMoving) и многое другое.

Свойство ScrollBars определяет наличие в таблице полос прокрутки. Причем полосы прокрутки появляются и исчезают автоматически в зависимости от того, помещается таблица в соответствующий размер, или нет.

Пример: Вывод таблицы чисел.

Создадим проект расчета таблицы значений функции аналогичный предыдущему примеру с компонентом Memo, но для представления резульратов будем использовать компонент StringGrid. Вид формы этого проекта приведен на рис.5.25.3.

 

Рис.5.25.3.

Первый фиксированный столбец будем использовати для вывода номера строки таблицы (переменная К).

Порядок создания проекта.

1. Откроем новый проект: File / New Applicanion.

2. Перейдем на страницу Additional палитры компонентов, щелкнем по птктограмме (StringGrid) и нарисуем в форме прямоугольник. Появится таблица содержащая по умолчанию 5 строк и 5 столбцов.

3. Установим значение свойства RowCount (количество строк) равным 50, а значение свойства ColCount равным трем. Снимем выделение - на экране будет таблица из трех столбцов.

4. Выделим таблицу и установим значение свойства DefaultColWidth (ширина столбцов) равным 120.

5. Создадим кнопку "Таблица" как и в предыдущем примере.

6. Двойной щелчек по кнопке - появится модуль формы. Добавим в модуль формы необходимый текст, в результате получим:

-----------------------------------------------

unit UniGrid;

{компонент StringGrid, пример таблица значений функции }

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

StdCtrls, Grids;

 

type

TForm1 = class(TForm)

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Edit1: TEdit;

Edit2: TEdit;

Edit3: TEdit;

Button1: TButton;

Button2: TButton;

Label4: TLabel;

StringGrid1: TStringGrid;

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

 

var

Form1: TForm1;

X,Xn,dx:Extended;

N:Integer;

XA,Y:array [1..50] of Extended;

S1,S2,S3:String;

implementation

 

{$R *.DFM}

 

procedure TForm1.Button1Click(Sender: TObject);

Var K:Integer;

begin

X:=StrToFloat(Edit1.Text);

dx:=StrToFloat(Edit2.Text);

N:=StrToInt(Edit3.Text);

For k:=1 To N Do Begin {расчет массивов}

Y[k]:=X*X;

XA[k]:=X;

x:=x+dx;

end;

StringGrid1.Cells[1,0]:='X'; {заголовки столбцов}

StringGrid1.Cells[2,0]:='Y';

For k:=1 To N Do Begin

{преобразование чисел в строковое представление}

Str(XA[k]:14,s1);

Str(Y[k]:14,s2);

S3:=IntToStr(k);

StringGrid1.Cells[0,k]:= s3; {запись в таблицу}

StringGrid1.Cells[1,k]:= s1;

StringGrid1.Cells[2,k]:=s2;

end;

end;

procedure TForm1.Button2Click(Sender: TObject);

begin

Close;

end;

end.

<== предыдущая лекция | следующая лекция ==>
Ввод и вывод в Delphi | Ввод и вывод с помощью внешних файлов
Поделиться с друзьями:


Дата добавления: 2014-01-04; Просмотров: 1104; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.008 сек.