ABACS – биллинговая система
 Главная   Новости   О системе   Статьи   ABACS Inside   Поддержка   Контактная информация   Карта сайта 
Модуль «drmf_dialog» (форма для запроса параметров)

   
Скриншот: форма ввода параметров

Файл определений "drmf_dialog.def"



module drmf_dialog;
import drmf_data;
	bool	Dialog_Execute			( TFindInfo &pInfo );
	void	Dialog_GetInfo			( TFindInfo &pInfo );
	void	Dialog_SetInfo			( TFindInfo &pInfo );
	bool	Dialog_ChooseBaseConnects	( );
	void	Dialog_CreateForm		( );

	void	BtnOkClick			( );
	void	BtnCloseClick			( );
	void	InpFormShow			( );
	void	InpFormClose			( );
	void	InpFormKeyPress			( );

	void	Dialog_OpenProgressBar		( );
	void	Dialog_CloseProgressBar		( );
	void	Dialog_SetProgressBar		( string msgtot, string msgcur,
							int valtot, int valcur );
//---------------------- Конец файла --------------------------

Файл кода "drmf_dialog.src"



module drmf_dialog;

import system;
import stdio;
import kitcomp;
import AccessToConnects;
import qtime;
import drmf_data;

using module system;
using module stdio;
using module kitcomp;
using module AccessToConnects;
using module qtime;
using module drmf_data;
//------------------------------------------------------------
// Глобальные переменные модуля
//------------------------------------------------------------
TFindInfo	InpInfo;
cPanel		BtnPanel;
cForm		InpForm,	ProgressForm;
cButton		BtnOk,		BtnClose;
cEdit		edCID,		edLogin;
cLabel		lCID,		lLogin;
cLabel		lBegDate,	lEndDate;
cLabel		lDetailFile,	lReportFile;
cLabel		PrgLabTot,	PrgLabCur;
cDateEdit	edBegTime,	edEndTime;
TFilenameEdit	ReportFile,	DetailFile;
int		hReportFile,	hDetailFile;
cProgressBar	PrgBarTot,	PrgBarCur;
bool		Select_BtnOk,	Select_BtnClose;
bool		ExitFlag;
//------------------------------------------------------------
// Основная функция старта (вызова) диалога
//------------------------------------------------------------
bool Dialog_Execute( TFindInfo &pInfo )
{
	bool fres = Dialog_ChooseBaseConnects();
	if ( !fres ) return( fres );

	Dialog_SetInfo( pInfo );
	Dialog_CreateForm();

	ShowForm( InpForm.Hnd );
	while( !ExitFlag );

	CloseForm( InpForm.Hnd );
	Dialog_GetInfo( pInfo );

	return( Select_BtnOk );
}
//------------------------------------------------------------
// Запись значений параметров внутр. структуры модуля
// во внешн. структуру
//------------------------------------------------------------
void Dialog_GetInfo( TFindInfo &pInfo )
{
	pInfo = InpInfo;
}
//------------------------------------------------------------
// Запись значений параметров из внешн. структуры 
// во внутр. структуру модуля
//------------------------------------------------------------
void Dialog_SetInfo( TFindInfo &pInfo )
{
	string msg, tstamp;
	InpInfo.Login   	= "";
	InpInfo.CID		= "";
	InpInfo.NData		= qtUnixByAbacs( acGetBegDateBaseConnectsAsInt() );
	InpInfo.KData		= qtUnixByAbacs( acGetEndDateBaseConnectsAsInt() );
	tstamp			= qtFormatStringNow( "ddmmyyyy_hhnnss" );
	_sprintf( msg, "r_report_%s.txt", tstamp );
	InpInfo.ReportFile	= msg;
	_sprintf( msg, "r_detail_%s.txt", tstamp );
	InpInfo.DetailFile	= msg;
	InpInfo.DbPointer	= acGetPointerBaseConnects();
}
//------------------------------------------------------------
// Вызов стандартного диалога для выбора базы соединений (Q-kernel)
//------------------------------------------------------------
bool Dialog_ChooseBaseConnects()
{
	int Ret;
	Ret = acChooseBaseConnects( acTypeBaseConnectsInternet );
	if ( Ret == 1 ) {
		if ( !acConnectedToBase() ) {
			_PutDlgBox( acGetLastError(), "Сведения об ошибке.", MB_OK );
			return( false );
		}
	}
	return( Ret == 1 );
}
//------------------------------------------------------------
// Создание формы
//------------------------------------------------------------
void Dialog_CreateForm()
{
	string	msg;
	int	glHeight, glWidth;
	Select_BtnOk    = false;
	Select_BtnClose = false;

	// создание формы ввода параметров
	InpForm.Hnd	= CreateForm( InpForm.pForm, "InpForm" );
	SetStyle	( InpForm.Hnd, DIALOG_STYLE );
	SetCaption	( InpForm.Hnd, "Параметры отчета для R" );
	SetBounds	( InpForm.Hnd, 270,446 );
	SetPosition	( InpForm.Hnd, 182, 280 );

	// назначение обработчиков событий для формы
	SetHandler	( InpForm.Hnd, ON_SHOW, "InpFormShow" );
	SetHandler	( InpForm.Hnd, ON_CLOSE,"InpFormClose" );
	SetHandler	( InpForm.Hnd, ON_KEY_PRESS,"InpFormKeyPress" );

	// строка ввода CID пользователя
	InpInfo.CID	= "";
	edCID.Hnd	= CreateEdit( edCID.pEdit, InpForm.Hnd, 
			"edCID" );
	SetPosition	( edCID.Hnd, 16, 32 );
	SetBounds	( edCID.Hnd, 19, 185 );
	SetText		( edCID.Hnd, InpInfo.CID );
	Set3D		( edCID.Hnd, false );

	lCID.Hnd	= CreateLabel( lCID.pLabel, InpForm.Hnd, 
			"LabelCID" );
	SetPosition	( lCID.Hnd, 16, 16 );
	SetBounds	( lCID.Hnd, 13, 185 );
	SetCaption	( lCID.Hnd, "Значение CID:");

	// строка ввода имени пользователя
	InpInfo.Login	= "";
	edLogin.Hnd	= CreateEdit( edLogin.pEdit, InpForm.Hnd, 
			"EditLogin" );
	SetPosition	( edLogin.Hnd, 232, 32 );
	SetBounds	( edLogin.Hnd, 19, 185 );
	SetText		( edLogin.Hnd, InpInfo.Login );
	Set3D		( edLogin.Hnd, false );

	lLogin.Hnd	= CreateLabel( lLogin.pLabel, InpForm.Hnd, 
			"LabelLogin" );
	SetPosition	( lLogin.Hnd, 232, 16 );
	SetBounds	( lLogin.Hnd, 13, 185 );
	SetCaption	( lLogin.Hnd, "Имя пользователя (login):");

	// DateTime (начало периода)
	edBegTime.Hnd	= CreateDateEdit( edBegTime.pDateEdit, InpForm.Hnd, 
			"edBegTime" );
	SetPosition	( edBegTime.Hnd, 16, 88 );
	SetBounds	( edBegTime.Hnd, 21, 186 );
	Set3D		( edBegTime.Hnd, false );
	SetText		( edBegTime.Hnd, qtUnixToDateAsRuLong( InpInfo.NData ) );

	lBegDate.Hnd	= CreateLabel( lBegDate.pLabel, InpForm.Hnd, 
			"lBegDate" );
	SetPosition	( lBegDate.Hnd, 16, 72 );
	SetBounds	( lBegDate.Hnd, 13, 186 );
	SetCaption	( lBegDate.Hnd, "Начало периода:");

	// DateTime (конец периода)
	edEndTime.Hnd	= CreateDateEdit( edEndTime.pDateEdit, InpForm.Hnd, 
			"edEndTime" );
	SetPosition	( edEndTime.Hnd, 232, 88 );
	SetBounds	( edEndTime.Hnd, 21, 186 );
	Set3D		( edEndTime.Hnd, false );
	SetText		( edEndTime.Hnd, qtUnixToDateAsRuLong( InpInfo.KData ) );

	lEndDate.Hnd	= CreateLabel( lEndDate.pLabel, InpForm.Hnd, 
			"lEndDate" );
	SetPosition	( lEndDate.Hnd, 232, 72 );
	SetBounds	( lEndDate.Hnd, 13, 186 );
	SetCaption	( lEndDate.Hnd, "Конец периода:");

	// строка с именем файла детализации
	hDetailFile	= CreateFilenameEdit( DetailFile, InpForm.Hnd,
			"edDetailFileName" );
	SetBounds	( hDetailFile, 19, 400 );
	SetPosition	( hDetailFile, 16, 136 );
	SetText		( hDetailFile, InpInfo.DetailFile );
	Set3D		( hDetailFile, false );

	lDetailFile.Hnd	= CreateLabel( lDetailFile.pLabel, InpForm.Hnd,
			"lDetailFile" );
	SetBounds	( lDetailFile.Hnd, 13, 400 );
	SetPosition	( lDetailFile.Hnd, 16, 120 );
	SetCaption	( lDetailFile.Hnd, "Имя файла детализации:");

	// строка с именем файла отчета (справки)
	hReportFile	= CreateFilenameEdit( ReportFile, InpForm.Hnd,
			"edReportFileName" );
	SetBounds	( hReportFile, 19, 400 );
	SetPosition	( hReportFile, 16, 176 );
	SetText		( hReportFile, InpInfo.ReportFile );
	Set3D		( hReportFile, false );

	lReportFile.Hnd	= CreateLabel( lReportFile.pLabel, InpForm.Hnd,
			"lReportFile" );
	SetBounds	( lReportFile.Hnd, 13, 400 );
	SetPosition	( lReportFile.Hnd, 16, 160 );
	SetCaption	( lReportFile.Hnd, "Имя файла отчета:");

	// нижняя панель
	BtnPanel.Hnd	= CreatePanel( BtnPanel.pPanel, InpForm.Hnd,
			"BtnPanel" );
	SetCaption	( BtnPanel.Hnd, "" );
	SetAlign	( BtnPanel.Hnd, AL_BOTTOM );
	GetBounds	( BtnPanel.Hnd, glHeight, glWidth );
	SetBounds	( BtnPanel.Hnd, 58, glWidth );
	SetBevel	( BtnPanel.Hnd, BV_NONE, BV_NONE );

	// кнопка 'Ok'
	BtnOk.Hnd	= CreateButton( BtnOk.pButton, BtnPanel.Hnd,
			"BtnOk" );
	SetBounds	( BtnOk.Hnd, 25, 75);
	SetPosition	( BtnOk.Hnd, 128, 16 );
	SetCaption	( BtnOk.Hnd, "Принять" );
	SetHandler	( BtnOk.Hnd, ON_CLICK, "BtnOkClick" );
	SetParam	( BtnOk.Hnd, SN_DEFAULT, true );

	// кнопка 'Close'
	BtnClose.Hnd	= CreateButton( BtnClose.pButton, BtnPanel.Hnd,
			"BtnClose" );
	SetBounds	( BtnClose.Hnd, 25, 75 );
	SetPosition	( BtnClose.Hnd, 224, 16 );
	SetCaption	( BtnClose.Hnd, "Закрыть" );
	SetHandler	( BtnClose.Hnd, ON_CLICK, "BtnCloseClick" );
}
//------------------------------------------------------------
// Событие: нажата кнопка "Ok"
//------------------------------------------------------------
void BtnOkClick()
{
	string s;
	InpInfo.CID	= GetText	( edCID.Hnd );
	InpInfo.Login	= GetText	( edLogin.Hnd );
	s		= GetText( edBegTime.Hnd );
	InpInfo.NData	= qtUnixBeginDay( qtDateAsRuLongToUnix( s ) );
	s		= GetText( edEndTime.Hnd );
	InpInfo.KData	= qtUnixEndDay  ( qtDateAsRuLongToUnix( s ) );
	InpInfo.ReportFile = GetText    ( hReportFile );
	Select_BtnOk	= true;
	ExitFlag	= true;
}
//------------------------------------------------------------
// Событие: нажата кнопка "Close"
//------------------------------------------------------------
void BtnCloseClick()
{
	Select_BtnClose	= true;
	ExitFlag	= true;
}
//------------------------------------------------------------
//  Событие: отображение формы
//------------------------------------------------------------
void InpFormShow()
{
	ExitFlag        = false;
	Select_BtnOk    = false;
	Select_BtnClose = false;
}
//------------------------------------------------------------
//  Событие: закрытие формы
//------------------------------------------------------------
void InpFormClose()
{
	ExitFlag	= true;
}
//------------------------------------------------------------
//  Событие: обработка клавиши "ESC"
//------------------------------------------------------------
void InpFormKeyPress()
{
	if ( GetKey( InpForm.Hnd ) == VK_ESCAPE ) BtnCloseClick();
}
//------------------------------------------------------------
// Open Progress Bar Form (открытие окна с полосой продвижения)
//------------------------------------------------------------
void Dialog_OpenProgressBar()
{
	int H, W, glHeight, glWidth;
	ProgressForm.Hnd	= CreateForm( ProgressForm.pForm,
				"MsgFormClass" );
	SetBounds		( ProgressForm.Hnd,104,320 );
	SetCaption		( ProgressForm.Hnd,"Ход процесса" );
	SetStyle		( ProgressForm.Hnd,MESSAGE_STYLE );
	GetBounds		( ProgressForm.Hnd, glHeight, glWidth );

	PrgLabTot.Hnd		= CreateLabel( PrgLabTot.pLabel, ProgressForm.Hnd,
				"PrgLabelTot" );
	SetPosition		( PrgLabTot.Hnd, glWidth / 2 - W/2, 8 );
	SetCaption		( PrgLabTot.Hnd, "" );

	PrgBarTot.Hnd		= CreateProgressBar( PrgBarTot.pProgrBar,ProgressForm.Hnd,
				"ProgressBarTot" );
	SetBounds		( PrgBarTot.Hnd,16,glWidth );
	SetPosition		( PrgBarTot.Hnd,0, 32 );
	SetParam		( PrgBarTot.Hnd, SN_VALUES, 0 );

	PrgLabCur.Hnd		= CreateLabel( PrgLabCur.pLabel, ProgressForm.Hnd,
				"PrgLabelCur" );
	SetPosition		( PrgLabCur.Hnd, glWidth / 2 - W/2, 56 );
	SetCaption		( PrgLabCur.Hnd, "" );

	PrgBarCur.Hnd		= CreateProgressBar( PrgBarCur.pProgrBar,ProgressForm.Hnd,
				"ProgressBarCur" );
	SetBounds		( PrgBarCur.Hnd,16,glWidth );
	SetPosition		( PrgBarCur.Hnd,0, 80 );
	SetParam		( PrgBarCur.Hnd, SN_VALUES, 0 );

	ShowForm		( ProgressForm.Hnd );
}
//------------------------------------------------------------
// Close Progress Bar Form (закрытие окна с полосой продвижения)
//------------------------------------------------------------
void Dialog_CloseProgressBar()
{
	CloseForm( ProgressForm.Hnd );
}
//------------------------------------------------------------
// Установка позиции в полосе продвижения
// msgtot,msgcur: заголовки полос
// valtot,valcur: значения полос
//------------------------------------------------------------
void Dialog_SetProgressBar( string msgtot, string msgcur, int valtot, int valcur )
{
	int H, W, glHeight, glWidth;
  	// Установить позицию состояния общего процесса
	if ( _StrLen( msgtot ) > 0 ) {
		SetCaption		( PrgLabTot.Hnd, msgtot );
		GetBounds		( ProgressForm.Hnd, glHeight, glWidth );
		GetBounds		( PrgLabTot.Hnd, H, W);
		SetPosition		( PrgLabTot.Hnd, glWidth / 2 - W/2, 8 );
		SetParam( PrgBarTot.Hnd, SN_VALUES, valtot );
	}
  	// Установить позицию состояния текущего процесса
	if ( _StrLen( msgcur ) > 0 ) {
		SetCaption		( PrgLabCur.Hnd, msgcur );
		GetBounds		( ProgressForm.Hnd, glHeight, glWidth );
		GetBounds		( PrgLabCur.Hnd, H, W);
		SetPosition		( PrgLabCur.Hnd, glWidth / 2 - W/2, 56 );
		SetParam( PrgBarCur.Hnd, SN_VALUES, valcur );
	}
}
//---------------------- Конец файла --------------------------


Список файлов проекта «DRMF»  


Примеры:

 


Подробнее об «ABACS»  


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