рефераты конспекты курсовые дипломные лекции шпоры

Реферат Курсовая Конспект

Procedure TMainForm.StartBtnClick(Sender: TObject); begin Form2.ShowModal; // Показываю вторую форму

Procedure TMainForm.StartBtnClick(Sender: TObject); begin Form2.ShowModal; // Показываю вторую форму - раздел Программирование, Дополнительные кнопки Delphi TSpeedButton и TBitBtn If Form2.modalresult=Mrok Then Application.messagebox('вы Нажали Кноп...

if Form2.ModalResult=mrOk then Application.MessageBox('Вы нажали кнопку OK', 'Вы нажали');

if Form2.ModalResult=mrCancel then Application.MessageBox('Вы нажали кнопку Cancel', 'Вы нажали');

if Form2.ModalResult=mrAbort then Application.MessageBox('Вы нажали кнопку Abort', 'Вы нажали'); end;

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

На компакт диске, в директорииПримерыГлава 11BitBtn&SpeedButtonты можешь увидеть пример этой программы.

 

11.2 Самостоятельная подготовка картинок для кнопок

тандартный размер картинки для кнопки равен 16х16. Можешь создавать изображения и большего размера, но если хочешь, чтобы кнопочки выглядели элегантно, то желательно чтобы они имели именно такой размер.

На сколько мы уже знаем, кнопка может быть в двух состояниях – активная (свойство Enabled = true) и неактивная (Enabled = false). Когда кнопка неактивна, то её изображение должно отображаться серым цветом. Если ты будешь делать кнопку неактивной, то желательно подготавливать изображение размером 32х16. Такое изображение нужно разделить пополам и слева нарисовать цветную картинку, а справа в оттенках серого, как показано на следующем рисунке:

Когда кнопка активна, Delphi автоматически будет подставлять изображение слева, а когда не активна, то правое изображение.

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

 

11.3 Маскированная строка ввода (TMaskEdit)

лово «маскированная» происходит не от слова прятаться (маскироваться), а от слова «маска». Очень часто надо, чтобы пользователь ввёл в программу какие-то данные в определённом формате. Для этого существует компонент

TMaskEdit.

Давай создадим маленький пример, который проиллюстрирует работу с компонентом TMaskEdit. Создай новое приложение. Брось на него текст (TLabel) в котором напиши «Введите дату». Рядом поставь компонент TMaskEdit. Щёлкни по нему и посмотри на свойства. Как видишь, большинство свойств идентично компоненту TEdit с палитры инструментов Standard.

Самое интересное здесь свойство – EditMask. Щёлкни по нему два раза и перед тобой откроется окно редактора ввода (на рисунке 11.3.3 ты можешь увидеть окно редактора маски).

В строке ввода Input Mask ты можешь вводить маску. Справа расположен список примеров. Слева внизу расположена строка Test Input, в которой можно протестировать маску.

Создавать маску очень просто. Если ты хочешь, чтобы пользователь ввёл четрые числа, потом тире и ещё три числа, то можно в строку Input Mask ввести 9999-999. Цифра 9 означает, что на этом месте должна быть любая цифра. Если тебе нужно, чтобы вначале ввода была ещё буква R, то укажи маску R9999-999.

На компакт диске, в директорииПримерыГлава 11MaskEditты можешь увидеть пример этой программы.

 

11.4 Сеточки (TStringGrid, TDrawGrid)

чень часто в программах нужны сетки ввода данных. Например, взгляни на электронную таблицу Excel. Её окно построено на основе сетки ввода. Ты можешь себе представить электронную таблицу без такой сетки? Я тоже не

могу.

На рисунке 11.4.1 ты можешь видеть простейшую сетку, которая ещё не умеет ничего делать. В Delphi тебе доступно сразу два вида сеток TStringGrid и TDrawGrid. Разниза в них незначительная – в TStringGrid ты можешь вводить данные и они там будут сохраняться и отображаться, а в TDrawGrid данные могут вводиться, но за отображение должен отвечать только ты. Более понятным языком можно сказать, что TStringGrid – это сетка строк, а TDrawGrid – это сетка рисунков.

-TStringGrid

-TDrawGrid

Я покажу тебе работу только с TStringGrid потому что он более распространён и надобность в нём появляется на много чаще.

Создай новый проект и брось на него сетку TStringGrid. Выдели её, и давай рассмотрим её специфичные свойства в объектном инспекторе (те, что нам известны, я рассматривать не буду):

BorderStyle – стиль обрамления. Здесь возможны варианты bsSingle или bsNone. Мне больше нравиться второе. Но ты можешь попробовать самостоятельно установить оба этих типа и посмотреть, что тебе больше по душе.

ColumnCount – количество колонок в сетке. Оставим, так как есть – 5 штук.

DefaultColWidth – ширина колонок по умолчанию.

DefaultDrawing – рисование по умолчанию. Если здесь установлено true, то компонент сам будет отображать введённые данные. Если False, то это придётся делать самостоятельно.

DefaultColHeight – Высота строк по умолчанию. Значение установленное здесь достаточно большое, поэтому давай введём 16. Так сетка будет выглядеть более элегантно.

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

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

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

GridLineWidth – толщина разделительных линий сеток.

Options – настройки сетки. Если дважды щёлкнуть по этому свойству или один раз по квадратику слева от названия свойства, то раскроется большой список свойств. Давай рассмотрим каждое из свойств:

goFixedVertLine – рисовать вертикальные линии сетки у фиксированных ячеек. goFixedHorzLine – рисовать горизонтальные линии сетки у фиксированных ячеек. goVertLine – рисовать вертикальные линии сетки у нефиксированных ячеек. goHorzLine – рисовать горизонтальные линии сетки у нефиксированных ячеек. goRangeSelect – позволять выделять несколько ячеек. goDrawFocuSelected – рисовать фокус выделенной ячейки. goRowSizing – можно ли изменять размер строк перетягиванием мышкой. goColSizing -можно ли изменять размер колонок перетягиванием мышкой.

goRowMoving – можно ли перемещать строки. Если true, то можно мышкой нажать на фиксированную ячейку строки и перетащить её в новое положение.

goColMoving -можно ли перемещать колонки. Если true, то можно мышкой нажать на фиксированную ячейку колонки и перетащить её в новое положение.

goEditing – можно ли вводить с клавиатуры данные в сетку. Для нашего примера установим в True. goTabs – если здесь установить True, то между ячейками можно путешествовать с помощью клавиши Tabs. goRowSelect – если здесь false, то выделяется только выделенная ячейка. Если true, то вся строка.

goAlwaysShowEditor – если здесь false, то когда ты становишься в ячейку, то для её редактирования нужно нажать Enter или F2. Если True, то как только ты выделил ячейку, её сразу можно редактировать.

goThumbTracking – будут ли данные прорисовываться пока пользователь перемещает полосу прокрутки.

RowCount – количество строк. Для первого примера нам хватит и пяти.
ScrollBars – нужно ли показывать полосы прокрутки. Здесь возможны варианты:
ssNone – не показывать.
ssHorizontal – только горизонтальную полосу.
ssVertical – только вертикальную полосу.
SsNone – не показывать.

 

Итак, давай напишем первый пример. Создай обработчик события OnShow для формы и там напиши:

procedure TMainForm.FormShow(Sender: TObject);

begin // Заполняем значениями первую колонку StringGrid1.Cells[0,1]:='Иванов'; StringGrid1.Cells[0,2]:='Петров'; StringGrid1.Cells[0,3]:='Сидоров';

StringGrid1.Cells[0,4]:='Смирнов';

// Заполняем значениями первую строку StringGrid1.Cells[1,0]:='Год рожд.'; StringGrid1.Cells[2,0]:='Место рожд.'; StringGrid1.Cells[3,0]:='Прописка'; StringGrid1.Cells[4,0]:='Семейное положение'; end;

У объекта TStringGrid есть ещё одно свойство, которое не описано в объектном инспекторе – Cells. Это свойство – двухмерный массив из строк, в которых хранятся данные, отображаемые в сетке. Чтобы получить доступ к какой-либо ячейке, нужно записать StringGrid1.Cells[номер колонки, номер ячейки]. Обращаю твоё внимание, что нумерация колонок и строк начинается с нуля. Например, если ты хочешь записать во вторую колонку и четвёртую строку текст «Привет», то необходимо записать:

StringGrid1.Cells[1,3]:=’Привет’;

Таким же способом можно и читать содержимое ячеек:

 

if StringGrid1.Cells[1,3]=’Привет’ then Сделать какие-либо действия;

На рисунке 11.4.2 ты можешь увидеть окно, в котором показан наш пример в запущенном виде.

Давай усилим наш пример и заодно поглубже познакомимся с сеткой. Как видишь, в нашем примере есть поле «Год рождения». В это поле должны вводиться даты, а значит, они должны иметь определённый формат. Было бы очень удобно, если бы в это поле можно было бы задать маску ввода, но сетка такое не поддерживает. Но тут можно пойти на одну хитрость – когда пользователь щёлкает по нужному полю, подставлять компонент TMaskEdit, и пускай пользователь вводить информацию в него.

Давай, реализуем сказанное на практике. Для этого брось на форму компонент TMaskEdit (место расположения не имеет значения), и назови его DateEdit. Установи у него маску для ввода даты 99/99/9999. Теперь установи у него свойство Visible в false, чтобы компонент не был виден.

– Конец работы –

Эта тема принадлежит разделу:

Дополнительные кнопки Delphi TSpeedButton и TBitBtn

Глава Обзор дополнительных компонентов Delphi...

Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ: Procedure TMainForm.StartBtnClick(Sender: TObject); begin Form2.ShowModal; // Показываю вторую форму

Что будем делать с полученным материалом:

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

Все темы данного раздела:

If (значение in State) then Выполнить действие
Именно так я проверяю во второй строчке кода наличие значения gdFocused. И только если ячейка, которую надо прорисовать имеет фокус, выполняю следующие действия. Но перед этим я прячу нашу м

Begin DateEdit.Visible := false; CheckBox1.Visible := false; if (gdFocused in State) then
begin if ACol=1 then begin DateEdit.Text:=StringGrid1.Cells[ACol, ARow]; DateEdit.Left := Rect.Left + StringGrid1.Left+2; DateEdit.Top :

Procedure TMainForm.CheckBox1Click(Sender: TObject); begin if CheckBox1.Checked=true then
CheckBox1.Caption:='.aiao' else CheckBox1.Caption:='Oieino'; StringGrid1.Cells[StringGrid1.Col, StringGrid1.Row]:=CheckBox1.Caption; end;

Procedure TMainForm.CheckBox1Click(Sender: TObject); begin if CheckBox1.Checked=true then
CheckBox1.Caption:='.aiao' else CheckBox1.Caption:='Oieino'; StringGrid1.Cells[StringGrid1.Col, StringGrid1.Row]:=CheckBox1.Caption; end;

If CheckListBox1.Checked[0] then
… Я перебираю все элементы, поэтому в квадратных скобках указываю параметр i. Текст строки можно узнать в свойстве Items компонента CheckListBox1. Чтобы у

Хотите получать на электронную почту самые свежие новости?
Education Insider Sample
Подпишитесь на Нашу рассылку
Наша политика приватности обеспечивает 100% безопасность и анонимность Ваших E-Mail
Реклама
Соответствующий теме материал
  • Похожее
  • Популярное
  • Облако тегов
  • Здесь
  • Временно
  • Пусто
Теги