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 );
}
}
//---------------------- Конец файла --------------------------
|