Here is my source; and the problem is I get an error, when I call void
BuildCurrencyListCtrl(CChDatabase* p1, CChListCtrl* p2) function from my
application as follows;
Error
--------------------------------------------------------------------------------
D:\Projects\Script>cint CurrencyListDialog.cpp
Error: No symbol CChCurrencyListCtrl in current scope
FILE:\Projects\Script\ChCurrencyListCtrl.cpp LINE:130
!!!Error recovered!!!
void BuildCurrencyListCtrl(CChDatabase* p1, CChListCtrl* p2)
{
CChCurrencyListCtrl c(p1, p2); ----------------------> this lines occurs
this error.
c.Build();
}
Application
--------------------------------------------------------------------------------
void CCurrencyListCtrl::Build()
{
CString Command;
/*
Command.Format(_T("\
{ \
CChCurrencyListCtrl CurrencyListCtrl((CChDatabase*) %lu,
(CChListCtrl*) %lu); \
\
CurrencyListCtrl.Build();\
}"), m_pDatabase, this);
*/
Command.Format(_T("BuildCurrencyListCtrl((CChDatabase*) %lu, (CChListCtrl*)
%lu)"), m_pDatabase, this);
G__loadfile("\\Projects\\Script\\ChCurrencyListCtrl.cpp");
G__calc((char*) (LPCTSTR) Command);
}
Script header source.
--------------------------------------------------------------------------------
#pragma includepath "\Projects\Debug\Bin"
#pragma includepath "\Projects\ChDatabase"
#pragma includepath "\Projects\Accountant\Currency"
#include "String.cpp"
#include <ChDatabase.dll>
#include <ChWinLib.dll>
#include <Currency.dll>
#include <CurrencyBusinessLogic.dll>
class CChCurrencyListCtrl
{
public:
CChCurrencyListCtrl(CChDatabase* pDatabase);
CChCurrencyListCtrl(CChDatabase* pDatabase, CChListCtrl* pListCtrl);
~CChCurrencyListCtrl();
virtual BOOL OnCommand(WPARAM wParam, LPARAM lParam);
virtual void OnLButtonDown(UINT nFlags, CChPoint point);
virtual void OnRButtonDown(UINT nFlags, CChPoint point);
int InsertItem(int nItem, CString strItem);
int InsertColumn(int nCol, CString ColumnHeading);
int DeleteAllItems();
int SetColumnWidth(int nCol, int cx);
void OnRefresh();
virtual void Build();
private:
CChDatabase* m_pDatabase;
CCurrencyListCtrl* m_pListCtrl;
};
Source.
--------------------------------------------------------------------------------
#include "ChCurrencyListCtrl.h"
CChCurrencyListCtrl::CChCurrencyListCtrl(CChDatabase* pDatabase)
{
m_pDatabase = pDatabase;
m_pListCtrl = new CCurrencyListCtrl;
}
CChCurrencyListCtrl::CChCurrencyListCtrl(CChDatabase* pDatabase, CChListCtrl*
pListCtrl)
{
m_pDatabase = pDatabase;
m_pListCtrl = pListCtrl;
}
CChCurrencyListCtrl::~CChCurrencyListCtrl()
{
if (m_pListCtrl)
delete m_pListCtrl;
}
int CChCurrencyListCtrl::InsertItem(int nItem, CString strItem)
{
return m_pListCtrl->InsertItem(nItem, strItem);
}
int CChCurrencyListCtrl::InsertColumn(int nCol, CString ColumnHeading)
{
return m_pListCtrl->InsertColumn(nCol, ColumnHeading);
}
int CChCurrencyListCtrl::DeleteAllItems()
{
return m_pListCtrl->DeleteAllItems();
}
int CChCurrencyListCtrl::SetColumnWidth(int nCol, int cx)
{
return m_pListCtrl->SetColumnWidth(nCol, cx);
}
BOOL CCurrencyListCtrl::OnCommand(WPARAM wParam, LPARAM lParam)
{
printf("Command:%lu %lu\n", wParam, lParam);
switch(wParam)
{
case MF_CURRENCYLISTCTRL_ADD:
{
CChCurrencyDialog(m_pChDatabase).DoModal();
}
break;
case MF_CURRENCYLISTCTRL_EDIT:
//OnEdit();
break;
case MF_CURRENCYLISTCTRL_DELETE:
//OnDelete();
break;
case MF_CURRENCYLISTCTRL_REFRESH:
OnRefresh();
break;
};
return TRUE;
}
void CCurrencyListCtrl::OnLButtonDown(UINT nFlags, CChPoint point)
{
}
void CCurrencyListCtrl::OnRButtonDown(UINT nFlags, CChPoint point)
{
CChMenu Menu;
Menu.CreatePopupMenu();
Menu.InsertMenu(-1, 0, 1, "Add");
Menu.InsertMenu(-1, 0, 2, "Edit");
Menu.InsertMenu(-1, 0, 3, "Delete");
Menu.InsertMenu(-1, MF_SEPARATOR, 0); // ???
Menu.InsertMenu(-1, 0, 4, "Refresh");
//Menu.InsertMenu(UNIT nPosition, UINT nFlags, UINT nIDNewItem,LPCTSTR
lpszNewItem);
ClientToScreen(&point);
Menu.TrackPopupMenu(0, point.x, point.y, this);
}
void CChCurrencyListCtrl::OnRefresh()
{
CCurrencyViewRecordset Set(m_pDatabase);
Set.Open();
DeleteAllItems();
while (!Set.IsEOF())
{
InsertItem(0, Set.m_Symbol);
Set.MoveNext();
}
Set.Close();
}
void CChCurrencyListCtrl::Build()
{
InsertColumn(0, "Symbol");
SetColumnWidth(0, 54);
InsertColumn(1, "Name");
SetColumnWidth(1, 115);
OnRefresh();
}
void BuildCurrencyListCtrl(CChDatabase* p1, CChListCtrl* p2)
{
CChCurrencyListCtrl c(p1, p2);
c.Build();
}
Thanks.
Devinim SOLEN