home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PC World Komputer 1997 May
/
Pcwk0597.iso
/
borland
/
cb
/
setup
/
cbuilder
/
data.z
/
CUSTVIEW.CPP
< prev
next >
Wrap
C/C++ Source or Header
|
1997-02-28
|
4KB
|
116 lines
//----------------------------------------------------------------------------
//Borland C++Builder
//Copyright (c) 1987, 1997 Borland International Inc. All Rights Reserved.
//----------------------------------------------------------------------------
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "CustView.h"
#include "DM.h"
#include "Filter1.h"
#include "About.h"
//---------------------------------------------------------------------------
#pragma resource "*.dfm"
//---------------------------------------------------------------------------
__fastcall TfmCustView::TfmCustView(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
TfmCustView* fmCustView;
// Change the DataSet for the Customer from Query to Table,
// or Table to Query. If a filter is current, set that filter
// to the just-changed DataSet.
//
void __fastcall TfmCustView::rgDataSetClick(TObject *Sender)
{
TDataSource *src(DM1->CustomerSource);
AnsiString st;
// Is the other DataSet Filtered? If so, get its filter.
if (src->DataSet->Filtered)
st = src->DataSet->Filter;
if (rgDataSet->ItemIndex) {
if (src->DataSet != DM1->Customer)
src->DataSet = DM1->Customer;
}
else {
if (src->DataSet != DM1->SQLCustomer)
src->DataSet = DM1->SQLCustomer;
}
// Set the Filter of the current DataSet.
if (st != "") {
src->DataSet->Filter = st;
src->DataSet->Filtered = true;
}
}
void __fastcall TfmCustView::SpeedButton1Click(TObject *Sender)
{
fmFilterFrm->Show();
}
// DM1->SQLOrders->Filtered will be true if the box is checked.
//
void __fastcall TfmCustView::cbFilterOrdersClick(TObject *Sender)
{
DM1->SQLOrders->Filtered = cbFilterOrders->Checked;
// If the number changed while the box is unchecked, DM1->OrdersFilterAmount
// won't know about it. The Edit1Change procedure will set the value and
// apply the filter.
if (cbFilterOrders->Checked)
Edit1Change(NULL); // ...to make sure the value is set.
}
void __fastcall TfmCustView::About1Click(TObject *Sender)
{
TfmAboutBox* fmAboutBox(new TfmAboutBox(this));
fmAboutBox->ShowModal();
delete fmAboutBox;
}
void __fastcall TfmCustView::Edit1Change(TObject *Sender)
{
// We must insure that Edit1->Text is not blank, or an exception will
// be thrown when the user clears the contents of the Edit.
if (cbFilterOrders->Checked && Edit1->Text != "") {
try {
// Attempt to set the variable on DM1 that holds the filter amount.
DM1->OrdersFilterAmount = StrToFloat(fmCustView->Edit1->Text);
// Refreshing SQLOrders will cause DM1->SQLOrdersFilterRecord to be
// called once for each orders record for the current Customer.
DM1->SQLOrders->Refresh();
}
catch (EConvertError* exc) {
// This happens before DM1->SQLOrders->Refresh() if the user typed in a
// non-numeric value, thus preventing it from trying to use an invalid
// value to filter itself, which would raise an exception once for
// each record displayed.
throw Exception("Threshold Amount must be a number.");
}
}
}
// Set the navigator to the Customer Datasource.
//
void __fastcall TfmCustView::DBGrid1Enter(TObject *Sender)
{
DBNavigator1->DataSource = DBGrid1->DataSource;
}
// Set the navigator to the Orders Datasource.
//
void __fastcall TfmCustView::DBGrid2Enter(TObject *Sender)
{
DBNavigator1->DataSource = DBGrid2->DataSource;
}