Взаимодействие с пользователем
Взаимодействие с пользователем

Взаимодействие с пользователем

16 марта 2023       101 просмотр

Итак, понятность для конченого пользователя, что это значит? Интерфейс на русском языке? Хорошая контрастность? Ну, в принципе, да.

Но в рамках данной статьи я хотел бы напомнить про методы взаимодействия, которые бы давали понять пользователю, что всё тлен происходит и/или произошло при выполнении каких-либо действий. Давайте же расчехлим RAD Studio (эта статья, помимо прочего, призвана познакомить всех тех кто незнаком с этим инструментом, чтобы они с ним были знакомы, с этим инструментом, а то вдруг вы не знаете, что это такое и вам очень страшно...) и пробежимся по основным методам информирования и взаимодействия.

на правах бесплатной рекламы

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

ProgressBar1->Position = 5;

как и любое другое значение прогресс-бара в процентах.

Или инкрементировать значение по ходу выполнения, например в цикле, возьмём что-нибудь бессмысленное, но работающее:

int pbi = 0;
	while (pbi<=100)
	{
		ProgressBar1->Position = pbi;
		Sleep(100);
		pbi++;
	}

почему бы и нет...

2. Текст, а именно — метки. Расставленные в разных местах и грамотно настроенные они могут давать подсказки пользователю. Например так:

Есть у нас Label1, поставленный в угол за плохое поведение нужное место, через него мы доносим до пользователя какую-либо информацию:

Label1->Caption = "нажал";

3. Окна с сообщениями. Тут всё просто:

ShowMessage("пример");

Я для примера набросал формочку, используя VCL и добавил соответствующие элементы:

картинко

ещё картинко

И, да, я уже не стал делать бочку упоминать об этом, но Button тут — TButton, это вполне логично.

Пример кода и результат (комментировать не буду, тут всё очевидно):

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

#include <vcl.h>
#pragma hdrstop

#include "aboutpbar.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
	: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
    ProgressBar1->Position = 5;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
	ProgressBar1->Position = 50;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
{
	ProgressBar1->Position = 85;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button4Click(TObject *Sender)
{
	int pbi = 0;
	while (pbi<=100)
	{
		ProgressBar1->Position = pbi;
		Sleep(100);
		pbi++;
	}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button5Click(TObject *Sender)
{
    Label1->Caption = "нажал";
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button6Click(TObject *Sender)
{
	ShowMessage("пример");
}
//---------------------------------------------------------------------------

результат

Не забывайте о смерти о взаимодействии с пользователями и мойте руки перед кодингом.