Delphi. Учимся на примерах | страница 39



Полученная форма должна соответствовать рис. 11.1.

Рис. 11.1. Форма для отображения информации о памяти компьютера

Разработка программного кода

В программе будет только две процедуры: первая — обработчик события Timer1.OnTimer, которая определяет и отображает информацию о памяти; вторая — обработчик события OnClick кнопки Установить для задания частоты обновления информации.

Создадим вначале главную часть программы — обработчик события Timer1.OnTimer:

>procedure TForm1.Timer1Timer(Sender: TObject);

>var

> mem: TMemoryStatus; //хранит всю информацию о памяти

>begin

> mem.dwLength:= SizeOf(mem); //размер памяти

> GlobalMemoryStatus(mem); //узнаем всю информацию о памяти

> //выводим информацию в соответствующие метки

> with mem do begin

>  // Загруженность памяти

>  Label1.Caption:= IntToStr(dwMemoryLoad) + ' %';

>  Label2.Caption:= IntToStr((dwTotalPhys) div 1024) + 'Кбайт'; // Всего физической

>  Label3.Caption:= IntToStr((dwAvailPhys) div 1024) + 'Кбайт'; // Свободно физической

>  Label4.Caption:= IntToStr((dwTotalPageFile) div 1024) + 'Кбайт'; // Всего страничной

>  Label5.Caption:= IntToStr((dwAvailPageFile) div 1024) + 'Кбайт'; // Свободно страничной

>  Label6.Caption:= IntToStr((dwTotalVirtual) div 1024) + 'Кбайт'; // Всего swap

>  Label7.Caption:= IntToStr((dwAvailVirtual) div 1024) + ' Кбайт'; // Свободно swap

>  Gauge1.MaxValue:= dwTotalPhys; //определяем максимум

>  //отображаем процент загруженности памяти

>  Gauge1.Progress:= dwTotalPhys-dwAvailPhys;

> end;

>end;

Сначала мы объявляем переменную mem, которая служит для хранения информации о памяти, полученной с помощью функции GlobalMemoryStatus. После того как мы получили всю необходимую информацию о памяти, делим все значения на 1024, чтобы перевести данные в килобайты. Затем выводим информацию с помощью соответствующих меток, а также изменяем текущую позицию для компонента Gauge.

Осталось только реализовать изменение частоты обновления информации, для чего достаточно изменять значение свойства Timer1.Interval. Обработаем нажатие кнопки Установить:

>procedure TForm1.Button1Click(Sender: TObject);

>begin

> //установка интервала работы таймера

Timer1.Interval:= SpinEdit1.Value*1000;

>end;

Поскольку интервал для таймера задается в мс, а в SpinEdit мы вводим значение в секундах, то мы должны умножать значение свойства SpinEdit.Value на 1000.

Программа в действии показана на рис. 11.2.

Рис. 11.2. Программа отображения информации о памяти в действии

Полный исходный код модуля