Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Свойства и методы класса 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.
Порядок создания.
Щелкнем по пиктограмме Memo и нарисуем прямоугольник в форме.
В инспекторе объектов откроем свойство Lines компонента Memo и удалим имеющийся там текст (его можно удалить и с помощью метода Clear).
Чтобы выводить таблицу из двух столбцов установим ширину компонента Memo равной 220 пикселей. Пусть таблица может содержать до 50 строк, то есть не помещается в поле компонента Memo. В этом случае надо предусмотреть полосу прокрутки по вертикали. Для этого установим для свойства ScrollBar значение ssVertical.
Создадим как и ранее кнопку с надписью " Таблица" (для расчета таблицы значений функции) и кнопку с надписью "Закрыть" (для эакрытия приложения).
В модуль формы добавим:
а) в раздел описания переменных
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]:= 'аргумент Х';.
Так как ячейки таблицы имеют строковый тип, то числа предварительно надо преобразовывать в символьную форму.
Дата публикования: 2014-12-08; Прочитано: 185 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!