215 lines
4.5 KiB
C++
215 lines
4.5 KiB
C++
// SrchView.cpp : implementation file
|
|
//
|
|
|
|
#include "stdafx.h"
|
|
#include "sp.h"
|
|
#include "SrchView.h"
|
|
#include "WOHeaderDlg.h"
|
|
#include "SimpleWODlg.h"
|
|
|
|
#ifdef _DEBUG
|
|
#define new DEBUG_NEW
|
|
#undef THIS_FILE
|
|
static char THIS_FILE[] = __FILE__;
|
|
#endif
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CSrchView dialog
|
|
|
|
|
|
CSrchView::CSrchView(CWnd* pParent /*=NULL*/)
|
|
: CDialog(CSrchView::IDD, pParent)
|
|
{
|
|
//{{AFX_DATA_INIT(CSrchView)
|
|
// NOTE: the ClassWizard will add member initialization here
|
|
//}}AFX_DATA_INIT
|
|
m_pApp = (CSpApp*)AfxGetApp();
|
|
rsPrint=m_pApp->rsPool->GetRSPrint("CSrchView RSPRINT");
|
|
}
|
|
|
|
CSrchView::~CSrchView()
|
|
{
|
|
m_pApp->rsPool->ReleaseRS(&rsPrint->m_nID);
|
|
}
|
|
|
|
void CSrchView::DoDataExchange(CDataExchange* pDX)
|
|
{
|
|
CDialog::DoDataExchange(pDX);
|
|
//{{AFX_DATA_MAP(CSrchView)
|
|
DDX_Control(pDX, IDC_RED, m_red);
|
|
//}}AFX_DATA_MAP
|
|
}
|
|
|
|
|
|
BEGIN_MESSAGE_MAP(CSrchView, CDialog)
|
|
//{{AFX_MSG_MAP(CSrchView)
|
|
ON_BN_CLICKED(IDC_BTNDONE, OnBtndone)
|
|
ON_BN_CLICKED(IDC_BTNCOPY, OnBtncopy)
|
|
ON_BN_CLICKED(IDC_BTNEDIT, OnBtnedit)
|
|
ON_BN_CLICKED(IDC_BTNCOPYALL, OnBtncopyall)
|
|
ON_BN_CLICKED(IDC_BTNPRINT, OnBtnprint)
|
|
//}}AFX_MSG_MAP
|
|
END_MESSAGE_MAP()
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CSrchView message handlers
|
|
|
|
BOOL CSrchView::OnInitDialog()
|
|
{
|
|
CDialog::OnInitDialog();
|
|
ShowWindow(SW_MAXIMIZE);
|
|
m_red.SetWindowText(*m_pstrText);
|
|
m_pstrText->MakeLower();//for ease of highlighting
|
|
HiLite();
|
|
m_red.SetFocus();
|
|
return FALSE; // return TRUE unless you set the focus to a control
|
|
// EXCEPTION: OCX Property Pages should return FALSE
|
|
}
|
|
|
|
|
|
//highlight the search words
|
|
void CSrchView::HiLite()
|
|
{
|
|
//FLAG HEADINGS:
|
|
//lowercase because matching to passed string
|
|
//which was converted to lowercase for ease of
|
|
//searching
|
|
FlagWord("workorder:",false,true,false);
|
|
FlagWord("invoice#:",false,true,false);
|
|
|
|
FlagWord("client reference#:",false,true,false);
|
|
FlagWord("client contact:",false,true,false);
|
|
FlagWord("our reference#:",false,true,false);
|
|
|
|
FlagWord("client:",false,true,false);
|
|
FlagWord("tech:",false,true,false);
|
|
FlagWord("problem:",false,true,false);
|
|
FlagWord("service details:",false,true,false);
|
|
|
|
for(int x=0;x<m_nKeywords;x++)
|
|
{
|
|
FlagWord(m_pslHiWords->GetAt(m_pslHiWords->FindIndex(x)),true,true,true);
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
void CSrchView::OnBtndone()
|
|
{
|
|
CDialog::OnOK();
|
|
}
|
|
|
|
void CSrchView::FlagWord(CString strWord, bool bUnderline, bool bBold,bool bColour)
|
|
{
|
|
|
|
|
|
CHARFORMAT cf;
|
|
|
|
strWord.TrimLeft(" ");
|
|
strWord.TrimRight(" ");
|
|
strWord.Remove('*');
|
|
strWord.Remove('%');
|
|
|
|
|
|
|
|
int n = m_pstrText->Find(strWord,0);
|
|
while (n != -1)
|
|
{
|
|
m_red.SetSel((long)n, (long)(n+strWord.GetLength()));
|
|
cf.dwMask = CFM_COLOR | CFM_BOLD | CFM_UNDERLINE;
|
|
if(bColour)
|
|
cf.crTextColor=RGB(255,0,0);
|
|
else
|
|
cf.crTextColor=RGB(0,0,0);
|
|
if(bBold)
|
|
cf.dwEffects = CFE_BOLD;
|
|
if(bUnderline)
|
|
cf.dwEffects = cf.dwEffects | CFE_UNDERLINE;
|
|
m_red.SetSelectionCharFormat(cf);
|
|
|
|
n = m_pstrText->Find(strWord,n+1);
|
|
}
|
|
m_red.SetSel(0,0);
|
|
|
|
|
|
|
|
}
|
|
|
|
void CSrchView::OnBtncopy()
|
|
{
|
|
long start,end;
|
|
m_red.GetSel(start,end);
|
|
if(end==0)//nothing selected
|
|
{
|
|
//select all
|
|
m_red.SetSel(0,-1);
|
|
}
|
|
|
|
m_red.Copy();
|
|
}
|
|
|
|
void CSrchView::OnBtnedit()
|
|
{
|
|
if(m_bQuickWO)
|
|
{
|
|
|
|
CSimpleWODlg qwo;
|
|
qwo.SetWorkorderID(&m_strWOID);
|
|
qwo.DoModal();
|
|
|
|
}
|
|
else
|
|
{
|
|
CWOHeaderDlg wo;
|
|
wo.SetWorkorderID(m_strWOID);
|
|
wo.DoModal();
|
|
|
|
}
|
|
|
|
}
|
|
|
|
void CSrchView::OnBtncopyall()
|
|
{
|
|
|
|
//select all
|
|
m_red.SetSel(0,-1);
|
|
m_red.Copy();
|
|
}
|
|
|
|
void CSrchView::OnBtnprint()
|
|
{
|
|
CString q;
|
|
CString strData;
|
|
m_red.GetWindowText(strData);
|
|
strData.Replace("\"","''");
|
|
|
|
//set the report text to the memo field in the user record
|
|
//this is a workaround to ensure that reports see this as a memo field
|
|
q.Format("UPDATE users SET users.rpttext1 = \"%s\" WHERE (((users.id)=%u));",strData,m_pApp->m_lusrID);
|
|
rsPrint->Ex(q);
|
|
|
|
|
|
//fetch the record
|
|
q.Format("SELECT users.rpttext1 AS srchresults, \"%s\" AS srchuser FROM users "
|
|
"WHERE (((users.id)= %u));", m_pApp->m_strCurrentUserName, m_pApp->m_lusrID);
|
|
|
|
rsPrint->Query(q);
|
|
|
|
|
|
|
|
if(!rsPrint->IsEmpty())
|
|
{
|
|
m_pApp->PrintCMReportRDC("Search results",rsPrint->RecordSetPointer());
|
|
#ifdef _DEBUG
|
|
m_pApp->CreateTTX("srch.ttx",rsPrint->RecordSetPointer());
|
|
#endif
|
|
}
|
|
else
|
|
AfxMessageBox("There is no data to print");
|
|
|
|
|
|
}
|
|
|