Hallo Ihr lieben,
ein Freund von mir hat mich gebeten ihm bei folgendem Problem zu helfen. Leider stehe ich aber selber auf dem Schlau.... habe einfach keine Ahnung von C.
Es geht um folgendes: Wie kann man den untenstehenden Quelltext so ändern, dass er mit dem neuen Adobe Reader 7.0 funktioniert.
Wir sind für jede Hilfe Dankbar.
#include "pch.h"
#pragma hdrstop
// Iterator Abstraction
#include "iterator\iter_t.h"
// Collaborations
#include "partListApp.h"
#include "localeController.h"
#include "unitSystemController.h"
#include "dataProvider.h"
#include "fldListProvider.h"
#include "vclDataSerializer.h"
#include "partListFldValueTranslator.h"
// RestoreFormState
#include "windowMessage.h"
#include "plConstants.h"
// About
#include "frmAbout1.h"
#include "frmPrintOptions1.h"
// Statics
String PDF_CATALOG_NAME = "Katalog.PDF";
char PDF_CATALOG_SP[3];
// Self
#include "frmPartList1.h"
// Automation Server
#include "PLCOMMIFIMPL.H"
// Namespace Activation
using namespace unitSystem;
// Observer
#include "frmPartListLocaleObserver.h"
#include "frmPartListUnitObserver.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "PdfLib_OCX"
#pragma link "BaseGrid"
#pragma resource "*.dfm"
TfrmPartList *frmPartList;
//---------------------------------------------------------------------------
__fastcall TfrmPartList::TfrmPartList(TComponent* Owner)
: TForm(Owner)
{
// Init
ocxPDFView = 0;
ocxPrevWidth = 0;
atRecord = false;
fileAvailable = false;
catalogDisplayed = false;
isInitialized = false;
// Master Data
plDataProvider = new DataProvider();
plFldListProvider = plDataProvider->fldListProvider();
// Locale & Unit Observer
partListLocaleObserver = new PartListLocaleObserver(LOC(), this);
partListUnitObserver = new PartListUnitObserver(UNITSYS(), this);
// Data Access
plSerializer = new VCLDataSerializer();
plFldValTranslator = new PartListFldValueTranslator(plSerializer, plDataProvider);
// Inits
setColumnLabels();
updateCaption();
}
//---------------------------------------------------------------------------
__fastcall TfrmPartList::~TfrmPartList()
{
delete plSerializer;
plSerializer = 0;
delete partListUnitObserver;
partListUnitObserver = 0;
delete partListLocaleObserver;
partListLocaleObserver = 0;
delete plDataProvider;
plDataProvider = 0;
}
//---------------------------------------------------------------------------
void __fastcall TfrmPartList::FormCreate(TObject* /*Sender*/)
{
loadFormState();
}
//---------------------------------------------------------------------------
void __fastcall TfrmPartList::Loaded(void)
{
sgPartList->ColumnSize->Key = APP()->iniFile();
TForm::Loaded();
if(APP()->isAutomationServer())
{
actMoveToCalc->Visible = APP()->transferModeEnabled();
actCopyToCalc->Visible = APP()->transferModeEnabled();
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmPartList:penFile(const String &fileName)
{
if(FileExists(fileName))
{
plSerializer->open(fileName.c_str());
// Set current file
APP()->currentFile(fileName);
// Display Content
displayData();
updateCaption();
atRecord = (plSerializer->size() > 0);
fileAvailable = true;
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmPartList::setColumnLabels(void)
{
// Refresh aus
sgPartList->BeginUpdate();
try
{
// Anzahl der Spalten setzen
sgPartList->UnHideColumnsAll();
sgPartList->ColCount = 0;
sgPartList->ColCount = plFldListProvider->size();
// Spalten Beschriftungen setzen
unsigned col = 0;
auto_ptr<Pox::Iterator<FldDesc> > labelFLI(plFldListProvider->CreateIterator());
for(labelFLI->First(); !labelFLI->IsDone(); labelFLI->Next())
{
FldDesc fldDsc = labelFLI->Current();
// Feldnamen
sgPartList->Cells[col][0] = fldDsc.displayLabel.c_str();
sgPartList->Objects[col][0] = (TObject*)fldDsc.id;
// Einheiten
UnitDesc unitDsc;
if(UNITSYS()->getDesc((Unit) fldDsc.unitId, unitDsc))
sgPartList->Cells[col][1] = unitDsc.szUnitLbl;
col++;
}
adjustVisibleColumns();
// Spaltenbreiten wiederherstellen
sgPartList->LoadColSizes();
}
catch(Exception &x)
{
Application->ShowException(&x);
}
// Refresh an
sgPartList->EndUpdate();
}
//---------------------------------------------------------------------------
void __fastcall TfrmPartList::adjustVisibleColumns(void)
{
// TabIndex puffern
int tabIdx = tcColumnSelect->TabIndex;
// Refresh aus
sgPartList->BeginUpdate();
try
{
// Auf aktuelle Registerkarte beschränken
unsigned colCount = sgPartList->ColCount + sgPartList->NumHiddenColumns();
for(unsigned curCol = 0; curCol < colCount; ++curCol)
{
FldDesc fldDsc;
if(plFldListProvider->getFldDsc((int) sgPartList->Objects[curCol][0], fldDsc))
{
// Spalten die nicht der Registerkarte entsprechen oder internen Zwecken dienen, verstecken!
// DisplayPage in der Datenbank startet ab 1! -> deshalb brauch auf tabIdx nix addiert werden
if(!(((fldDsc.displayPage == -1) || (fldDsc.displayPage == tabIdx) || (tabIdx == 0)) && (fldDsc.displayPage != 0)))
sgPartList->HideColumn(curCol);
else
sgPartList->UnHideColumn(curCol);
}
}
}
catch(Exception &x)
{
Application->ShowException(&x);
}
// Refresh an
sgPartList->EndUpdate();
}
//---------------------------------------------------------------------------
void __fastcall TfrmPartList::displayData(void)
{
// Refresh aus
sgPartList->BeginUpdate();
try
{
// Alten Inhalt wegwerfen
sgPartList->ClearNormalCells();
// Reihenanzahl anpassen (1 leere Reihe gibts immer!)
sgPartList->RowCount = plSerializer->size() ? (plSerializer->size() + sgPartList->FixedRows) : (sgPartList->FixedRows + 1);
// Gibts überhaupt Daten?
plSerializer->refresh();
if(plSerializer->size())
{
// Bauteile einlesen
int curRow = sgPartList->FixedRows;
for(plSerializer->first(); !plSerializer->eof(); plSerializer->next(), ++curRow)
{
// Index
sgPartList->Cells[0][curRow] = String((curRow - sgPartList->FixedRows) + 1);
sgPartList->Objects[0][curRow] = (TObject*)plSerializer->acquireBookmark();
// FeldInhalte abholen
unsigned fldCount = plFldListProvider->size();
for(unsigned curCol = 0; curCol < fldCount; ++curCol)
{
FldDesc fldDsc;
if(plFldListProvider->getFldDsc((int) sgPartList->Objects[curCol][0], fldDsc))
{
String dispValue("");
// Translate & Display FieldValue
if(plFldValTranslator->getFldValue(fldDsc, dispValue))
sgPartList->Cells[curCol][curRow] = dispValue;
}
}
}
}
}
catch(Exception &x)
{
Application->ShowException(&x);
}
// Refresh an
sgPartList->EndUpdate();
}
//---------------------------------------------------------------------------
void __fastcall TfrmPartList::FormShow(TObject* /*Sender*/)
{
openFile(APP()->currentFile());
}
//---------------------------------------------------------------------------
void __fastcall TfrmPartList::FormClose(TObject* /*Sender*/, TCloseAction &Action)
{
saveFormState();
if(APP()->isAutomationServer())
{
Action = caNone;
APP()->terminate();
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmPartList::saveFormState(void)
{
if(isInitialized)
{
sgPartList->SaveColSizes();
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmPartList::loadFormState(void)
{
if(catalogDisplayed)
{
ShowCatalog();
cbCatData->Checked = true;
}
sgPartList->LoadColSizes();
isInitialized = true;
}
//---------------------------------------------------------------------------
void __fastcall TfrmPartList::OnLanguageMenuChange(TObject* sender)
{
// Sprache ändern
TMenuItem *menuItem = dynamic_cast<TMenuItem*>(sender);
if(menuItem)
{
saveFormState();
// Über den LocaleController Sprache umsetzen
LOC()->setCurrentLocaleSet(menuItem->Tag);
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmPartList::OnUnitSystemChange(TObject* sender)
{
using namespace unitSystem;
TMenuItem *menuItem = dynamic_cast<TMenuItem*>(sender);
if(menuItem)
{
// Über den UnitSystemController Einheitensystem umsetzen
UNITSYS()->unitSystem((unitSystem::UnitSystemId) menuItem->Tag);
}
}
//---------^------------------------------------------------------------------
void __fastcall TfrmPartList::tcColumnSelectChange(TObject* /*Sender*/)
{
adjustVisibleColumns();
}
//---------------------------------------------------------------------------
void __fastcall TfrmPartList::FileQuit1Execute(TObject* /*Sender*/)
{
APP()->terminate();
}
//---------------------------------------------------------------------------
void __fastcall TfrmPartList::alPartListUpdate(TBasicAct
ein Freund von mir hat mich gebeten ihm bei folgendem Problem zu helfen. Leider stehe ich aber selber auf dem Schlau.... habe einfach keine Ahnung von C.
Es geht um folgendes: Wie kann man den untenstehenden Quelltext so ändern, dass er mit dem neuen Adobe Reader 7.0 funktioniert.
Wir sind für jede Hilfe Dankbar.
#include "pch.h"
#pragma hdrstop
// Iterator Abstraction
#include "iterator\iter_t.h"
// Collaborations
#include "partListApp.h"
#include "localeController.h"
#include "unitSystemController.h"
#include "dataProvider.h"
#include "fldListProvider.h"
#include "vclDataSerializer.h"
#include "partListFldValueTranslator.h"
// RestoreFormState
#include "windowMessage.h"
#include "plConstants.h"
// About
#include "frmAbout1.h"
#include "frmPrintOptions1.h"
// Statics
String PDF_CATALOG_NAME = "Katalog.PDF";
char PDF_CATALOG_SP[3];
// Self
#include "frmPartList1.h"
// Automation Server
#include "PLCOMMIFIMPL.H"
// Namespace Activation
using namespace unitSystem;
// Observer
#include "frmPartListLocaleObserver.h"
#include "frmPartListUnitObserver.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "PdfLib_OCX"
#pragma link "BaseGrid"
#pragma resource "*.dfm"
TfrmPartList *frmPartList;
//---------------------------------------------------------------------------
__fastcall TfrmPartList::TfrmPartList(TComponent* Owner)
: TForm(Owner)
{
// Init
ocxPDFView = 0;
ocxPrevWidth = 0;
atRecord = false;
fileAvailable = false;
catalogDisplayed = false;
isInitialized = false;
// Master Data
plDataProvider = new DataProvider();
plFldListProvider = plDataProvider->fldListProvider();
// Locale & Unit Observer
partListLocaleObserver = new PartListLocaleObserver(LOC(), this);
partListUnitObserver = new PartListUnitObserver(UNITSYS(), this);
// Data Access
plSerializer = new VCLDataSerializer();
plFldValTranslator = new PartListFldValueTranslator(plSerializer, plDataProvider);
// Inits
setColumnLabels();
updateCaption();
}
//---------------------------------------------------------------------------
__fastcall TfrmPartList::~TfrmPartList()
{
delete plSerializer;
plSerializer = 0;
delete partListUnitObserver;
partListUnitObserver = 0;
delete partListLocaleObserver;
partListLocaleObserver = 0;
delete plDataProvider;
plDataProvider = 0;
}
//---------------------------------------------------------------------------
void __fastcall TfrmPartList::FormCreate(TObject* /*Sender*/)
{
loadFormState();
}
//---------------------------------------------------------------------------
void __fastcall TfrmPartList::Loaded(void)
{
sgPartList->ColumnSize->Key = APP()->iniFile();
TForm::Loaded();
if(APP()->isAutomationServer())
{
actMoveToCalc->Visible = APP()->transferModeEnabled();
actCopyToCalc->Visible = APP()->transferModeEnabled();
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmPartList:penFile(const String &fileName)
{
if(FileExists(fileName))
{
plSerializer->open(fileName.c_str());
// Set current file
APP()->currentFile(fileName);
// Display Content
displayData();
updateCaption();
atRecord = (plSerializer->size() > 0);
fileAvailable = true;
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmPartList::setColumnLabels(void)
{
// Refresh aus
sgPartList->BeginUpdate();
try
{
// Anzahl der Spalten setzen
sgPartList->UnHideColumnsAll();
sgPartList->ColCount = 0;
sgPartList->ColCount = plFldListProvider->size();
// Spalten Beschriftungen setzen
unsigned col = 0;
auto_ptr<Pox::Iterator<FldDesc> > labelFLI(plFldListProvider->CreateIterator());
for(labelFLI->First(); !labelFLI->IsDone(); labelFLI->Next())
{
FldDesc fldDsc = labelFLI->Current();
// Feldnamen
sgPartList->Cells[col][0] = fldDsc.displayLabel.c_str();
sgPartList->Objects[col][0] = (TObject*)fldDsc.id;
// Einheiten
UnitDesc unitDsc;
if(UNITSYS()->getDesc((Unit) fldDsc.unitId, unitDsc))
sgPartList->Cells[col][1] = unitDsc.szUnitLbl;
col++;
}
adjustVisibleColumns();
// Spaltenbreiten wiederherstellen
sgPartList->LoadColSizes();
}
catch(Exception &x)
{
Application->ShowException(&x);
}
// Refresh an
sgPartList->EndUpdate();
}
//---------------------------------------------------------------------------
void __fastcall TfrmPartList::adjustVisibleColumns(void)
{
// TabIndex puffern
int tabIdx = tcColumnSelect->TabIndex;
// Refresh aus
sgPartList->BeginUpdate();
try
{
// Auf aktuelle Registerkarte beschränken
unsigned colCount = sgPartList->ColCount + sgPartList->NumHiddenColumns();
for(unsigned curCol = 0; curCol < colCount; ++curCol)
{
FldDesc fldDsc;
if(plFldListProvider->getFldDsc((int) sgPartList->Objects[curCol][0], fldDsc))
{
// Spalten die nicht der Registerkarte entsprechen oder internen Zwecken dienen, verstecken!
// DisplayPage in der Datenbank startet ab 1! -> deshalb brauch auf tabIdx nix addiert werden
if(!(((fldDsc.displayPage == -1) || (fldDsc.displayPage == tabIdx) || (tabIdx == 0)) && (fldDsc.displayPage != 0)))
sgPartList->HideColumn(curCol);
else
sgPartList->UnHideColumn(curCol);
}
}
}
catch(Exception &x)
{
Application->ShowException(&x);
}
// Refresh an
sgPartList->EndUpdate();
}
//---------------------------------------------------------------------------
void __fastcall TfrmPartList::displayData(void)
{
// Refresh aus
sgPartList->BeginUpdate();
try
{
// Alten Inhalt wegwerfen
sgPartList->ClearNormalCells();
// Reihenanzahl anpassen (1 leere Reihe gibts immer!)
sgPartList->RowCount = plSerializer->size() ? (plSerializer->size() + sgPartList->FixedRows) : (sgPartList->FixedRows + 1);
// Gibts überhaupt Daten?
plSerializer->refresh();
if(plSerializer->size())
{
// Bauteile einlesen
int curRow = sgPartList->FixedRows;
for(plSerializer->first(); !plSerializer->eof(); plSerializer->next(), ++curRow)
{
// Index
sgPartList->Cells[0][curRow] = String((curRow - sgPartList->FixedRows) + 1);
sgPartList->Objects[0][curRow] = (TObject*)plSerializer->acquireBookmark();
// FeldInhalte abholen
unsigned fldCount = plFldListProvider->size();
for(unsigned curCol = 0; curCol < fldCount; ++curCol)
{
FldDesc fldDsc;
if(plFldListProvider->getFldDsc((int) sgPartList->Objects[curCol][0], fldDsc))
{
String dispValue("");
// Translate & Display FieldValue
if(plFldValTranslator->getFldValue(fldDsc, dispValue))
sgPartList->Cells[curCol][curRow] = dispValue;
}
}
}
}
}
catch(Exception &x)
{
Application->ShowException(&x);
}
// Refresh an
sgPartList->EndUpdate();
}
//---------------------------------------------------------------------------
void __fastcall TfrmPartList::FormShow(TObject* /*Sender*/)
{
openFile(APP()->currentFile());
}
//---------------------------------------------------------------------------
void __fastcall TfrmPartList::FormClose(TObject* /*Sender*/, TCloseAction &Action)
{
saveFormState();
if(APP()->isAutomationServer())
{
Action = caNone;
APP()->terminate();
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmPartList::saveFormState(void)
{
if(isInitialized)
{
sgPartList->SaveColSizes();
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmPartList::loadFormState(void)
{
if(catalogDisplayed)
{
ShowCatalog();
cbCatData->Checked = true;
}
sgPartList->LoadColSizes();
isInitialized = true;
}
//---------------------------------------------------------------------------
void __fastcall TfrmPartList::OnLanguageMenuChange(TObject* sender)
{
// Sprache ändern
TMenuItem *menuItem = dynamic_cast<TMenuItem*>(sender);
if(menuItem)
{
saveFormState();
// Über den LocaleController Sprache umsetzen
LOC()->setCurrentLocaleSet(menuItem->Tag);
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmPartList::OnUnitSystemChange(TObject* sender)
{
using namespace unitSystem;
TMenuItem *menuItem = dynamic_cast<TMenuItem*>(sender);
if(menuItem)
{
// Über den UnitSystemController Einheitensystem umsetzen
UNITSYS()->unitSystem((unitSystem::UnitSystemId) menuItem->Tag);
}
}
//---------^------------------------------------------------------------------
void __fastcall TfrmPartList::tcColumnSelectChange(TObject* /*Sender*/)
{
adjustVisibleColumns();
}
//---------------------------------------------------------------------------
void __fastcall TfrmPartList::FileQuit1Execute(TObject* /*Sender*/)
{
APP()->terminate();
}
//---------------------------------------------------------------------------
void __fastcall TfrmPartList::alPartListUpdate(TBasicAct
Comment