Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Компоненты StringGrid и DrawGrid. Редактирование значений в DrawGrid.
Компонент Таблица строк (TStringGrid) Использование многими пользователями электронных таблиц типа Excel стало практически неотъемлемой частью применения компьютеров. В системе Delphi 7 имеются два компонента, которые позволяют до некоторой степени сымитировать работу электронной таблицы, оставляя при этом, конечно, основную работу по реализации конкретных функций такой таблицы программистам. Первый компонент — это таблица строк, позволяющая работать с текстовой информацией в двумерной таблице, имеющей столбцы и строки (их размеры можно менять с помощью мыши). Дополнительно, к каждой ячейке таблицы можно ''привязать'' свой объект, характеристики которого программист представит в виде строки, расположенной в этой ячейке. Основное свойство таблицы строк — это двумерный массив Cells, позволяющий обращаться к содержимому ячеек и изменять их содержимое. Первое измерение - это номер строки, второе — номер столбца. ЗАМЕЧАНИЕ Нумерация элементов в таблице строк начинается с нуля. Число столбцов задается в свойстве ColCount, число строк — в свойстве RowCount.
Следующий код программы изменяет размер таблицы, помещенной на форму в режиме проектирования (по умолчанию принят размер 5x5 элементов), на размер 10x10 ячеек и заполняет ячейки строками, содержащими их координаты (рис, 4.5, стр 231)
procedure TForml.FormCreatefSender: TObject); var с,r: integer; begin StringGridl.ColCount:= 10; StringGridl.RowCount:= 10; for с:= 0 to StringGridl.ColCount-1 do for r:= 0 to StringGridl.RowCount-1 do StringGridl.Cells[c,r]:= '(' + IntToStr(c) + ', ' + IntToStr(r) + ')'; end; Обратите внимание, что левый столбец и верхняя строка, хотя и содержат текстовую информацию, фактически являются заголовочными областями. Использовать их наравне с другими ячейками не совсем правильно. ЗАМЕЧАНИЕ Число строк и столбцов, имеющих характер заголовка, задается свойствами FixedCols и FixedRows. Если таблица не содержит заголовочной информации, эти свойство должны принимать значение 0.
Можно получить доступ ко всем элементам одного столбца или одной строки. Соответствующие свойства Col и Row имеют тип TStrings, позволяющий обращаться к нужному элементу по номеру. Чтобы привязать к ячейке объект (наследник класса TObject), надо использовать свойство Objects, представляющее собой такой же массив, как Cells, но содержащий
не строки, а объекты. Эти объекты должны создаваться, а также уничтожаться программистом вручную, иными словами, весь контроль над состоянием этого массива полностью возлагается на разработчика. Свойство Objects предоставляет только доступ к нужному объекту. Остальные свойства, предназначенные для оформле- ния таблицы строк, приведены ниже
SorderStyle Стиль отрисовки ячейки. Значение этого свойства можно комбинировать со значением свойства Ctrl3D для получения оригинального вида ячеек Ctrl3D Таблица представляется в ''трехмерном'' стиле ColWidths Массив, хранящий ширину каждого столбца в пикселах DefaultColWidt h Начальная ширина столбца по умолчанию DefaultDrawing Если значение свойства — True, производится автоматическая отрисовка содержимого каждой ячейки. В противном случае для таблицы необходимо определить обработчик события OnDrawCell чтобы запрограммировать процесс отрисовки ячейки DefaultRowHeight Начальная высота строки по умолчанию FixedColor Цвет области строк и столбцов, служащих заголовком таблицы GridHeight Высота всей таблицы (в пикселах) GridLineWidth Ширина (в пикселах) линий, разделяющих ячейки таблицы GridWidth Ширина всей таблицы (в пикселах} Options Множество значений (тип set of TGridOption }, позволяющее задавать различные режимы работы таблицы: выделение нескольких ячеек, способ использования линий прокрутки и прочие. В частности, чтобы разрешить изменение размеров строк и столбцов, надо установить значение True для свойств goRowSizing и goColSizing, вложенных в свойство Options. Чтобы разрешить редактирование содержимого ячеек, надо записать значение True в подсвойство goEditing RowHeights Массив, хранящий высоту каждой строки в пикселах ScrolLBars Наличие полос прокрутки VisibleColCount Число видимых в таблице столбцов (без области заголовка)
Чтобы установить для просмотра нужную область таблицы, надо задать номер начальной строки в свойстве TopRow, а номер начального столбца — в свойстве LeftCol. Область заголовков при этом не изменяется. Например, расположив на форме кнопку и включив указанные далее операторы в обработчик щелчка, можно быстро
прокрутить таблицу к ячейке (3,5), которая будет расположена в верхнем левом углу таблицы под заголовком (рис. 4.6, стр 233), procedure TForml.ButtonlClick(Sender: TObject),- Begin StringGridl. LeftCol:= 3; StringGridl.TopRow:= 5; End; Чтобы выделить прямоугольную область ячеек (или одну ячейку) другим цветом, надо использовать свойство Selection. Оно доступно только во время работы про- граммыи имеет тип TGridRect, напоминающий тип TRect. Например, если требуется по щелчку на кнопке Buttonl выделить область от ячейки (2,2) до ячейки (3,5), надо выполнить следующие операторы. procedure TForml.ButtonlClick(Sender: TObject); Var GRect: TGridRect; begin GRect.Left:= 2; GRect.Top:= 2; GRect.Right:= 3; GRect.Bottom:= 5; StringGridl.Selection:= GRect; end; ВНИМАНИЕ Чтобы такое выделение работало, необходимо в свойстве Options включить подсвойство goRangeSelect (установить значение True).
Если запустить описанный пример, то после выделения группы ячеек окажется, что нижняя ячейка (3,5), которая была автоматически сделана текущей, не подсве- чена. Чтобы текущая ячейка таблицы выделялась отдельным цветом, надо подсвойству goDrawFocusSelected свойства Options задать значение True. Можно также программно включить его в множество Options. .StringGridl.Options: =StringGridl.Options + [goDrawFocusSelected]; Экранные координаты конкретной ячейки (в пикселах) определяются с помощью метода (функции) CellRect, которая, получая в качестве первого параметра номер столбца, а в качестве второго — номер строки, возвращает структуру типа TRect с координатами прямоугольника, охватывающего заданную ячейку. Если эта ячейка невидима, то все поля структуры будут иметь значения 0. Обратный пересчет осуществляется вызовом процедуры MouseToCeLL
procedure MouseToCell (X, Y: Integer; var ACol, ARow: Longint);
Здесь X и Y — экранные координаты точки, а значения, возвращаемые через параметры ACoL и ARow (передаваемые по ссылке), соответствуют номерам столбца и строки для ячейки, содержащей эту точку.
|
||||||
Последнее изменение этой страницы: 2017-02-21; просмотров: 850; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.226.177.223 (0.01 с.) |