Witam, mam problem z pewnym programem, w Was ostatnia nadzieja.
Nagłówek:
//---------------------------------------------------------------------------
#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <ComCtrls.hpp>
#include <Buttons.hpp>
#include <Menus.hpp>
#include <ActnList.hpp>
#include <ImgList.hpp>
#include <ToolWin.hpp>
#include <Dialogs.hpp>
#include <string>
#include "Unit2.h"
#include "Unit4.h"
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published: // IDE-managed Components
TPageControl *PageControl1;
TMainMenu *MainMenu1;
TMenuItem *Plik1;
TMenuItem *mZapisz;
TMenuItem *mWczytaj;
TMenuItem *Zamknij1;
TMenuItem *OProgramie1;
TMenuItem *Nowakarta1;
TToolBar *ToolBar1;
TImageList *ImageList1;
TToolButton *ToolButton1;
TMenuItem *Zamknijkart1;
TButton *btnWczytaj;
TOpenDialog *OpenDialog1;
TButton *btnZapisz;
TToolButton *ToolButton2;
TSaveDialog *SaveDialog1;
TActionList *ActionList1;
TAction *acnZamknij;
void __fastcall DodajZakladke(TPageControl *PageControl1);
void __fastcall BitBtn1Click(TObject *Sender);
void __fastcall ToolButton1Click(TObject *Sender);
void __fastcall ToolButton2Click(TObject *Sender);
void __fastcall OProgramie1Click(TObject *Sender);
void __fastcall Zamknijkart1Click(TObject *Sender);
void __fastcall Nowakarta1Click(TObject *Sender);
void __fastcall Wczytaj(TPageControl *PageControl1);
void __fastcall btnWczytajClick(TObject *Sender);
void __fastcall Button2Click(TObject *Sender);
void __fastcall mWczytajClick(TObject *Sender);
void __fastcall btnZapiszClick(TObject *Sender);
void __fastcall Zapisz(TPageControl *PageControl1);
void __fastcall mZapiszClick(TObject *Sender);
void __fastcall acnZamknijExecute(TObject *Sender);
private: // User declarations
public: // User declarations
__fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
class TDocument : public TTabSheet
{
public:
TDocument(TPageControl *PageControl1);
__fastcall ~TDocument();
void LoadFromFile(String AFileName);
TRichEdit *RichEdit;
String FileName;
};
TDocument::TDocument(TPageControl *PageControl1): TTabSheet(PageControl1)
{
PageControl = PageControl1;
Caption = "Nowy dokument";
RichEdit = new TRichEdit(this);
RichEdit->Parent = this;
RichEdit->Align = alClient;
RichEdit->WordWrap = false;
RichEdit->ScrollBars = ssBoth;
}
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
extern PACKAGE TDocument *Document;
//---------------------------------------------------------------------------
#endif
Implementacja:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
int i=1;
void __fastcall TForm1::DodajZakladke(TPageControl *PageControl1)
{
TTabSheet *Zakladka;
Zakladka = new TTabSheet(PageControl1);
Zakladka->PageControl = PageControl1;
Zakladka->Caption="Dokument " +IntToStr(i++);
TRichEdit *RichEdit;
RichEdit = new TRichEdit(Zakladka);
RichEdit->Parent = Zakladka;
RichEdit->Align = alClient;
RichEdit->ScrollBars = ssBoth;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::BitBtn1Click(TObject *Sender)
{
DodajZakladke(PageControl1);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ToolButton1Click(TObject *Sender)
{
DodajZakladke(PageControl1);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ToolButton2Click(TObject *Sender)
{
delete(PageControl1->ActivePage);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::OProgramie1Click(TObject *Sender)
{
AboutBox->ShowModal();
if (AboutBox->ModalResult==mrOk)
{
AboutBox->Close();
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Zamknijkart1Click(TObject *Sender)
{
delete(PageControl1->ActivePage);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Nowakarta1Click(TObject *Sender)
{
DodajZakladke(PageControl1);
}
//---------------------------------------------------------------------------
void TDocument::LoadFromFile(String AFileName)
{
FileName = AFileName;
RichEdit->Lines->LoadFromFile(FileName);
Caption = ExtractFileName(FileName);
}
//---------------------------------------------------------------------------
TStringList *Tokenize (String s,String delimiter)
{
TStringList *StringList;
int l; //length of s
int start,delimp;
String sub;
StringList = new TStringList();
start=0;
if (s.Pos(delimiter)>0)
{
delimp = s.Pos(delimiter);
do
{
l=s.Length();
sub=s.SubString(start,delimp-1);
if (sub != "") StringList->Add(sub);
s=s.SubString(delimp+1,l-delimp);
delimp = s.Pos(delimiter);
} while (delimp != 0);
StringList->Add(s); // dodanie tego co zostało na końcu
}
else StringList->Add(s); return StringList;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Wczytaj(TPageControl *PageControl1)
{
TDocument *TDoc;
if (OpenDialog1->Execute())
TDoc->LoadFromFile(OpenDialog1->FileName);
}
void __fastcall TForm1::btnWczytajClick(TObject *Sender)
{
Wczytaj(PageControl1);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
TDocument *Doc1;
Doc1 = new TDocument;
if (OpenDialog1->Execute())
{
Doc1->RichEdit->Lines->LoadFromFile(OpenDialog1->FileName);
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::mWczytajClick(TObject *Sender)
{
Wczytaj(PageControl1);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Zapisz(TPageControl *PageControl1)
{
TDocument *Doc2;
Doc2 = new TDocument;
if (SaveDialog1->Execute())
{
Doc2->RichEdit->Lines->SaveToFile(SaveDialog1->FileName);
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::btnZapiszClick(TObject *Sender)
{
Zapisz(PageControl1);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::mZapiszClick(TObject *Sender)
{
Wczytaj(PageControl1);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::acnZamknijExecute(TObject *Sender)
{
OKRightDlg->ShowModal();
if(OKRightDlg->ModalResult==mrOk)
{
Close();
}
if(OKRightDlg->ModalResult==mrCancel)
{
OKRightDlg->Close();
}
}
Mam problem z dodaniem do mojego programu-notatnika opcji zapisu i odczytu dokumentów. Moja klasa TDocument, która miała to umożliwiać nie działa poprawnie.
Niżej zamieściłem błędy wskazywane przez kompilator, wyżej cały program. Proszę o szybką pomoc, na tyle ile to możliwe.
void __fastcall TForm1::Button2Click(TObject Sender)
{
TDocument Doc1;
Doc1 = new TDocument; ** [C++ Error] Unit1.cpp(114): E2285 Could not find a match for 'TDocument::TDocument()'
if (OpenDialog1->Execute())
{ [C++ Error] Unit1.cpp(116): E2451 Undefined symbol 'TDoc'
TDoc1->RichEdit->Lines->LoadFromFile(OpenDialog1->FileName);
}
}
void __fastcall TForm1::Zapisz(TPageControl *PageControl1)
{
TDocument *Doc2;
Doc2 = new TDocument; **[C++ Error] Unit1.cpp(128): E2285 Could not find a match for 'TDocument::TDocument()'**
if (SaveDialog1->Execute())
{ **[C++ Error] Unit1.cpp(131): E2451 Undefined symbol 'TDoc1'**
TDoc2->RichEdit->Lines->SaveToFile(SaveDialog1->FileName);
}
}