Разделы презентаций


3 2. Таблицы изображений

Содержание

Сколько в таблице ячеек?

Слайды и текст этой презентации

Слайд 132. Таблицы изображений.
DrawGrid – таблица, где каждая ячейка представляет

графическую информацию.
Две основные области – фиксированная и подвижная.
Для прорисовки ячеек

таблицы обязательно следует определить обработчик события OnDrawCell.

Рисование выполняется с помощью свойства Canvas таблицы.

32. Таблицы изображений. DrawGrid – таблица, где каждая ячейка представляет графическую информацию.Две основные области – фиксированная и

Слайд 2Сколько в таблице ячеек?

Сколько в таблице ячеек?

Слайд 3Свойства компонента DrawGrid:

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

Слайд 5Методы компонента DrawGrid:
function CellRect (ACol, ARow: Longlnt) : TRect;
Возвращает

прямоугольник ячейки по номерам столбца ACol и ряда ARow (для

рисования в данной ячейке).

procedure MouseToCell (X, Y: Integer; var ACol, ARow: Longlnt) ;
Возвращает табличные координаты ячейки ACol и ARow по экранным координатам (X, Y) точки.

Методы компонента DrawGrid:function CellRect (ACol, ARow: Longlnt) :  TRect;Возвращает прямоугольник ячейки по номерам столбца ACol и

Слайд 6События компонента DrawGrid:
OnDrawCell : procedure (Sender; ACol, ARow; Rect: TRect;

State: TGridDrawState); Возникает при перерисовке ячейки (ACol , ARow). OnGetEditText : procedure

(Sender; ACol, ARow; var Value: String); Возникает в момент начала редактирования текста в ячейке (ACol, ARow). В параметре Value обработчик должен вернуть текст для встроенного редактора типа TEdit. OnSetEditText : procedure (Sender; ACol, ARow; const Value: String); Возникает при завершении редактирования ячейки (ACol,ARow). В параметре Value обработчик получает результат ввода или редактирования текста.
События компонента DrawGrid:OnDrawCell : procedure (Sender; ACol, ARow; Rect: TRect; 					State: TGridDrawState); Возникает при перерисовке ячейки (ACol

Слайд 7Пример 1: шахматная доска.
На форму - DrawGrid
На событие DrawGrid1.OnDrawCell перерисуем

каждую ячейку.
with DrawGrid1,Canvas do begin if Odd(ACol+Arow)

then Brush.Color:=clBlue else Brush.Color:=clWhite; FillRect(Rect); end;

3

Пример 1: шахматная доска.На форму - DrawGridНа событие DrawGrid1.OnDrawCell перерисуем каждую ячейку. with DrawGrid1,Canvas do begin

Слайд 8Пример 2: просмотрщик графических файлов.
На форму - DrawGrid
Type TForm1 =

class(TForm) DrawGrid1: TDrawGrid; public { Public declarations }

SL : TStringList; end;

В описание формы добавить поле, содержащее ссылку на список строк.

2

Пример 2: просмотрщик графических файлов.На форму - DrawGridType  TForm1 = class(TForm)   DrawGrid1: TDrawGrid; public

Слайд 9На событие Form1.OnCreate создадим список имен граф. файлов:
var sr :

TSearchRec; k : byte;
begin SL:=TStringList.Create; ChDir('c:/Program

Files/Common Files/Borland Shared/’+ 'Images/Splash/256Color'); if FindFirst('*.bmp', faAnyFile, sr) = 0 then begin repeat if (sr.Attr and faAnyFile) = sr.Attr then begin k:=SL.Add(sr.Name); SL.Objects[k]:=TBitmap.Create; TBitmap(SL.Objects[k]).LoadFromFile(SL[k]); end; until FindNext(sr) <> 0; FindClose(sr); end; end;
На событие Form1.OnCreate создадим список имен граф. файлов:var sr : TSearchRec;    k  :

Слайд 10На событие Form1.OnDestroy разрушим этот список имен.
Begin SL.Free; end;
На событие DrawGrid1.OnGetEditText

укажем имя файла.
Begin Value := SL[2 * ACol + Arow]; end;
На

событие DrawGrid1.OnSetEditText сменим имя файла и считаем рисунок для ячейки.
Begin if FileExists(Value) then begin SL[2 * ACol + ARow] := Value; TBitmap(SL.Objects[2*ACol +ARow]).LoadFromFile(Value); end; end;
На событие Form1.OnDestroy разрушим этот список имен.Begin  SL.Free; end;На событие DrawGrid1.OnGetEditText укажем имя файла.Begin  Value

Слайд 11На событие DrawGrid1.OnDrawCell перерисуем ячейку.
var k: Integer; begin k := 2

* ACol + ARow; if k

SL do begin Bottom := Bottom - TextHeight('1') - 2; StretchDraw(Rect, (Objects[k] as TBitMap)); TextOut(Left + (Right - Left - TextWidth(SL[k])) div 2, Bottom + 1, SL[k]) end end;

На событие Form1.OnResize изменим размеры ячеек:
Begin with DrawGrid1 do begin DefaultColWidth := ClientRect.Right div 3 - 1; DefaultRowHeight := ClientRect.Bottom div 2 – 1 end; end;

На событие DrawGrid1.OnDrawCell перерисуем ячейку.var k: Integer; begin  k := 2 * ACol + ARow;

Слайд 1233. Таблицы строк.
StringGrid – таблица, где каждая ячейка хранит

и текстовую и графическую информацию.
Является потомком компонента DrawGrid и наследует

все его свойства и методы. Дополнительно позволяет хранить текст в каждой ячейке и автоматически выводит этот текст.
Основное приобретенное свойство Cells[ ACol, Arow ]:string представляет текст в ячейке (ACol,ARow). Свойство Objects[ ACol, ARow ]:TObject позволяет каждой ячейке таблицы соотносить произвольный объект.
Если DefaultDrawing=TRUE, то выполняется автоматическая отрисовка текста. Иначе вывод текста выполняет программист, используя свойство Canvas.
33. Таблицы строк. StringGrid – таблица, где каждая ячейка хранит и текстовую и графическую информацию.Является потомком компонента

Слайд 13Пример: Таблицы сложения/умножения.

Пример: Таблицы сложения/умножения.

Слайд 14На событие RadioGroup(RG).OnClick рисуем таблицу заново.
var i,j : byte; begin

With SG do begin if RG.ItemIndex=0 then Cells[0,0]:=‘+‘

else Cells[0,0]:=‘х‘; for i:=1 to 9 do begin Cells[0,i]:=IntToStr(i); Cells[i,0]:=IntToStr(i); for j:=1 to 9 do if RG.ItemIndex=0 then Cells[j,i]:=IntToStr(i+j) else Cells[j,i]:=IntToStr(i*j); end; end; end;

4

На событие RadioGroup(RG).OnClick рисуем таблицу заново.var i,j  : byte; begin  With SG do begin

Слайд 15Пример: Таблица «Расписание занятий».

Пример: Таблица «Расписание занятий».

Слайд 16TCell = class Name, Room :string; Color

:TColor; end;
Пользовательский тип TCell описывает параметры отдельной ячейки.
while

Random(20)<>0 do begin i:=Random(7)+1; j:=Random(6)+1; if SG1.Objects[j,i]=Nil then begin Cell:=TCell.Create; Case Random(10) of 0: Cell.Name:=‘История'; 1: Cell.Name:=‘ОО и ВП'; ... 9: Cell.Name:=‘Бухг. учёт'; end; Cell.Room:=IntToStr(Random(400)); Cell.Color:=Rgb(157+Random(99), 157+Random(99),157+Random(99)); SG1.Objects[j,i]:=Cell; end; end;
TCell = class   Name, Room :string;   Color   :TColor;  end;Пользовательский тип

Слайд 17Отрисовка содержимого ячейки – в обработчике события OnDrawCell
if ARow>0 then

if ACol>0 then with SG1,Canvas do if Objects[ACol,ARow]Nil then begin

Cell:=TCell(Objects[ACol,ARow]); Brush.Color:=Cell.Color; FillRect(Rect); Font.Name:='System'; Font.Size:=10; Font.Style:=[fsBold]; x:=Rect.Right-3-TextWidth(Cell.Room); y:=Rect.Bottom-1-TextHeight(Cell.Room); TextOut(x,y,Cell.Room); Font.Name:='Arial'; Font.Size:=14; while TextWidth(Cell.Name)>Rect.Right-Rect.Left-4 do Font.Size:=Font.Size-1; x:=Rect.Left+(Rect.Right-Rect.Left- TextWidth(Cell.Name)) div 2; y:=Rect.Bottom-TextHeight(Cell.Room)- TextHeight(Cell.Name)-5; TextOut(x,y,Cell.Name); end;

5

Отрисовка содержимого ячейки – в обработчике события OnDrawCellif ARow>0 then if ACol>0 then with SG1,Canvas do

Слайд 1834. Иерархия компонентов.
Иерархия для класса TForm
Класс TObject.
Является общим предком

всех классов в Delphi.
Описывает основные возможности работы с объектами во

время выполнения программы (создание, уничтожение, обработка событий, определение адресов полей и методов по имени).

34. Иерархия компонентов. Иерархия для класса TFormКласс TObject.Является общим предком всех классов в Delphi.Описывает основные возможности работы

Слайд 19Класс содержит методы, позволяющие компонентам копировать своё содержимое.
procedure Assign(Source: TPersistent);

копирует поля источника Source, в текущий компонент.
procedure AssignTo(Destination: TPersistent);

копирует поля текущего компонента в компонент – параметр.

Класс TPersistent.

Пример использования:
Clipboard.Assign(MyBitmap);
MyBitmap.Assign(Clipboard);
При этом используются переопределенные (измененные в потомках) методы.

Класс содержит методы, позволяющие компонентам копировать своё содержимое.procedure Assign(Source: TPersistent); копирует поля источника Source, в текущий компонент.

Слайд 20 Служит базой для создания остальных компонент.
Некоторые компоненты

напрямую порождаются от этого класса (TMenu, TScreen, TApplication, TTimer).

Другие компоненты происходят от класса TControl, имеющего двух потомков TWinControl и TGraphicControl.
Визуальные компоненты, созданные на базе TWinControl (Form, Button, Memo, Panel) получают т.н. оконный ресурс Windows, позволяющий получать и обрабатывать сообщения Windows. При создании они получают дискриптор окна (св-во Handle), позволяющий вызывать функции Windows API.
Потомки класса TGraphicControl (Label, Shape, Image, PaintBox) оконного ресурса не получают, т.е. являются рисунками. Ими управляет их владелец (форма, панель), имеющий подобный ресурс.

Класс TComponent.

Служит базой для создания остальных компонент.   Некоторые компоненты напрямую порождаются от этого класса (TMenu, TScreen,

Слайд 21Свойства объектов класса TComponent:
При создании компонента используется конструктор
constructor Create(AOwner: TComponent)

Свойства объектов класса TComponent:При создании компонента используется конструкторconstructor Create(AOwner: TComponent)

Слайд 22Пример 1. Динамическое создание кнопок.
Form1.OnMouseDown
var

Btn:TButton; begin Btn:=TButton.Create(Form1); Btn.Parent:=Form1; Btn.Left:=x; Btn.Top:=y; Btn.Caption:=IntToStr(Form1.ComponentCount); end;
Для компиляции необходимо в список

модулей Uses добавить
Uses Windows, ..., StdCtrls;
Пример 1. Динамическое       создание кнопок.Form1.OnMouseDownvar Btn:TButton; begin  Btn:=TButton.Create(Form1);  Btn.Parent:=Form1;

Слайд 23Пример 2. Динамическое создание кнопок.
Form1.OnMouseDown
var

Btn:TButton; begin if Shift = [ssLeft] then Btn:=TButton.Create(Form1); if Shift=[ssRight]

then begin Btn:=TBitBtn.Create(Form1); TBitBtn(Btn).Kind:=bkRetry; end; Btn.Parent:=Form1; Btn.Left:=x; Btn.Top:=y; Btn.Caption:=IntToStr(Form1.ComponentCount); Btn.OnClick:=MyClick; end;
Пример 2. Динамическое       создание кнопок.Form1.OnMouseDownvar Btn:TButton; begin  if Shift =

Слайд 24Каждая кнопка при создании получает обработчик события OnClick
Btn.OnClick:=MyClick;
текст которого написан

заранее type TForm1 = class(TForm) procedure MyClick(Sender: TObject); private

... end;
procedure TForm1.MyClick(Sender: TObject); begin if Sender is TButton then Caption:= (Sender as TButton).Caption; if Sender is TBitBtn then Close; end;
Каждая кнопка при создании получает обработчик события OnClickBtn.OnClick:=MyClick;текст которого написан заранее type TForm1 = class(TForm)

Слайд 25Пример 3. Динамическое создание кнопок.


Form1.OnCreate
var i : byte; begin for i:=0

to 32 do with TButton.Create(Form1) do begin

Parent:=Form1; Left:=10+20*i; Top:=50; Height:=17; Width:=17; if i<32 then Caption:=Chr(Ord(‘А’)+i) else Caption:=' '; OnClick:=KeyClick; end; end;
Пример 3. Динамическое создание кнопок. Form1.OnCreatevar i : byte; begin  for i:=0 to 32 do

Слайд 26Type TForm1 = class(TForm) Label1: TLabel; procedure FormCreate(Sender:

TObject); procedure KeyClick(Sender: TObject); end;
Процедуру KeyClick пишем сами!
procedure TForm1.KeyClick(Sender:

TObject); begin with Sender as TButton do Label1.Caption:=Label1.Caption+Caption; end;

Type  TForm1 = class(TForm)   Label1: TLabel;   procedure FormCreate(Sender: TObject);   procedure

Обратная связь

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

Email: Нажмите что бы посмотреть 

Что такое TheSlide.ru?

Это сайт презентации, докладов, проектов в PowerPoint. Здесь удобно  хранить и делиться своими презентациями с другими пользователями.


Для правообладателей

Яндекс.Метрика