Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Laba_5_3.docx
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
141.1 Кб
Скачать

Implementation

// -----------------------------------------------------------------------

// Реализация класса TDDisplay

// -----------------------------------------------------------------------

// КОНСТРУКТОР

constructor TDDisplay.Create (RqDisplay : TComponent; RqDigit : TEdit);

begin

inherited Create(RqDisplay); // Вызов конструктора из класса TIQueue

fDigit := RqDigit; // Инициализация ссылки на индикатор

end;

// Полная очистка дисплея

procedure TDDisplay.ClearDisplay(RqFillColor, RqRenColor : TColor);

begin

if (fDisplay is TImage)

then begin

with fDisplay as TImage do

begin

// Очистить переменные для прорисовки графика

fXStep := Width div MaxCount;

fCount := 0;

// Установить цвет поля дисплея и цвет пера

Canvas.Brush.Style := bsSolid;

Canvas.Brush.Color := RqFillColor;

Canvas.FillRect(Rect(0,0,Width,Height));

Canvas.Pen.Color := RqRenColor;

end;

end;

end;

procedure TDDisplay.DrawCurrentLine(RqHigh : integer);

begin

with fDisplay as TImage do

begin

Canvas.MoveTo(fCount * fXStep, RqHigh);

fCount := fCount + 1;

Canvas.LineTo(fCount * fXStep, RqHigh);

end;

end;

procedure TDDisplay.DrawGoToNextLine(RqHigh : integer);

begin

with fDisplay as TImage do

begin

Canvas.LineTo(fCount * fXStep, RqHigh);

end;

end;

procedure TDDisplay.ShowItemQueue();

begin

if (fDisplay is TImage)

then begin

with fDisplay as TImage do

begin

// Очистить дисплай

ClearDisplay(clBlack, RGB(0,255,0));

// Прорисовать осциллограмму

if (fICount > 0) and Assigned(fPHead) and Assigned(fPTail)

then begin

// =========================================================

// РАЗРАБОТАТЬ ПЕРЕОПРЕДЕЛЯЮЩИЙ МЕТОД ОТОБРАЖЕНИЯ НА ДИСПЛЕЙ

// ОСЦИЛЛОГРАФА ShowItemQueue (Класс TDDisplay, unit Service3),

// КОТОРЫЙ СИНХРОННО ВЫВОДИТ ТЕКУЩЕЕ ЗНАЧЕНИЕ В ПОЛЕ Edit1.

// =========================================================

fPBuf := fPHead;

repeat

// fDigit.Text :=IntToStr (fPBuf.GetDataFromOBJ);

// Прорисовать линию текущего значения

DrawCurrentLine(Height - fPBuf.GetDataFromOBJ);

// Выборка из очереди следующего элемента

fPBuf := fPBuf.GetPNextFromOBJ();

If Assigned(fPBuf)

then begin

// Прорисовать линию перехода на следующее значение

DrawGoToNextLine(Height - fPBuf.GetDataFromOBJ);

end;

// Продолжать пока очередь не станет пустой

// fDigit.Text:=IntToStr(fptail.GetDataFromOBJ);

until not Assigned(fPBuf);

end;

end; end; end; end.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]