1. Edit-boxeihin syötettyjen lukujen muunto Stringistä floatiksi eli niin että niillä pystyy suorittamaan laskutoimituksia?
2. Lomakkeen tietojen tallentaminen (edit, label) sovelluksen seuraavaa käyttökertaa silmälläpitäen?
3. Lomakkeen tietojen tulostaminen paperille?
2. Lomakkeen tietojen tallentaminen (edit, label) sovelluksen seuraavaa käyttökertaa silmälläpitäen?
3. Lomakkeen tietojen tulostaminen paperille?
Vastaukset 6
Vanhimmat
Mistä kyse? C#, MFC vai WinAPI?
mainita että käytän Borland C - Builder 4 -ohjelmaa ja teen sillä uutta applicationia
1.
#include
StrToFloatDef
2.
En ymmärrä mitä tarkoitat mutta ehkä:
TIniFile
Vanha kunnon windows ini file, ei kannata sotkea rekisteritä mukaan. Lataaminen tiedostosta formin OnShow metodiin ja tallennus OnClose tai OnHide metodiin.
3.
TPrinter
esimerkkejä löytyy manuaalista TPrinter Canvas kohdasta
Editboxista saa sisällön helpomminkin floatiksi:
double dValue;
dValue = EditBox->Text.ToDouble();
Jossa EditBox on boxin nimi.
Noi tulostamis-ja tallennusjutut on mulle kyllä ihan vierasta. Voisko joku antaa yksityiskohtaset ohjeet ja koodit niistä? Myös hyödylliset linkki-ja kirjavinkit ovat tervetulleita.
-Lomakkeen sisältämät tiedot tallennetaan "omaan" tietokantaan tulot.txt
Tiedot luetaan tekstitiedostoon Tulosfile.txt ja avataan samantien(Notepad)
Esimerkki on tarkoitettu ikäänkuin osviitaksi ja sitä voidaan muuttaa
omien tarpeitten mukaan.Yleensä käytetään funktioita ja näistäkin voi
sellaiset tehdä - avattava tiedosto parametriksi-tai voi kasata oman
luokan.Käytössä c Builder 6 Personal Edition mutta kääntyy sinullakin.
-Tässä ei ole tietueen muuttamista ja deletointia.
-Lomakkeella komponentit: 3 tekstiboxia,1 StringGrid 3 CommandButtonia.
Aseta ne lomakkeelle ja kirjoita annetut koodit,niin pitäisi toimia.
-Pitäisi käyttää esim. muotoa ios_base::binary ei pelkkä ios::binary,mutta
en tiedä onko nelosversiossa.Myöskään namespacea ei ole käytetty.
-Tiedostoa ei lueta lomakkeen auetessa griidiin - pitää painaa Command-Buttonia,
Tästä on kuitenkin hyvä lähteä opiskelemaan lisää.
//Unit1.h
//*******
#ifndef Unit1H
#define Unit1H
//---------------------------------------------------------------------------
#include
#include
#include
#include
#include
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published: // IDE-managed Components
TButton *button1_plustietue;
TEdit *Edit1;
TEdit *Edit2;
TEdit *Edit3;
TButton *Button2_luetiedot;
TStringGrid *StringGrid1;
TButton *Button_tulosta;
void __fastcall button1_plustietueClick(TObject *Sender);
void __fastcall Button2_luetiedotClick(TObject *Sender);
void __fastcall StringGrid1Click(TObject *Sender);
void __fastcall Button_tulostaClick(TObject *Sender);
private: // User declarations
public: // User declarations
__fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
struct testi
{
char nimi[40];
char vero[10];
};
#endif
//---------------------------------------------------------------------------
//Unit1.cpp
//*********
#include
#include
#include
#include
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
//Lisätään tietue
void __fastcall TForm1::button1_plustietueClick(TObject *Sender)
{
//Onko luku double - jos ei niin virheilmoitus
//----------------------------------------------
double temp1,temp2;
temp1=Edit2->Text.ToDouble();
temp2=100,33*temp1;
temp2 ;
//----------------------------------------------
fstream tulos;//Avataan virta
String tiedosto="tulot.txt";
testi kirjaus;//Otetaan structi käyttöön(Unit1.h)
//Avataan tai luodaan binääritiedosto kirjoitettavaksi
tulos.open(tiedosto.c_str(),ios::out | ios::binary | ios::app);
strcpy(kirjaus.nimi,Trim(Form1->Edit1->Text).c_str());
strcpy(kirjaus.vero,Trim(Form1->Edit2->Text).c_str());
tulos.write((char*) & kirjaus,sizeof kirjaus);
tulos.close();//Tiedot kirjoitettu
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2_luetiedotClick(TObject *Sender)
{
StringGrid1->OptionsFixedCols=0;//StringGrid
Form1->StringGrid1->ColCount=2;//StringGrid sarakkeet kpl
Form1->StringGrid1->ColWidths[0]=300;//Ekasarakkeen leveys
Form1->StringGrid1->ColWidths[1]=100;//Tokasarakkeen leveys
//Otsikot StringGriidiin
Form1->StringGrid1->Cells[0][0]=String("Nimi");
Form1->StringGrid1->Cells[1][0]=String("Vero");
fstream luku;//Avataan virta
String tiedosto="tulot.txt";
testi lue;//Otetaan structi käyttöön
int tietueet=0;//Tietuelaskuri
double verosumma=0;//Verot yhteensä
if(FileExists(tiedosto.c_str()))
{
//Avataan binääritiedosto luettavaksi
luku.open(tiedosto.c_str(),ios::in | ios::binary);
while(luku.read((char*)&lue,sizeof (lue)))
{
Form1->StringGrid1->RowCount=tietueet 2;
tietueet ;//Montako tietuetta
Form1->StringGrid1->Cells[0][tietueet]=String(lue.nimi);
Form1->StringGrid1->Cells[1][tietueet]=String(lue.vero);
verosumma =String(lue.vero).ToDouble();//Verojen summa
}
luku.close();//Tiedot luettu
Form1->Edit3->Text=verosumma;//Kirjoitetaan tekstiboxiin
}//if
else ShowMessage("Lisää ensin tietueita");
}
//---------------------------------------------------------------------------
void __fastcall TForm1::StringGrid1Click(TObject *Sender)
{
//Nimi tekstiboxiin griidistä
Form1->Edit1->Text=Form1->StringGrid1->Cells[0][StringGrid1->Row];
//Vero tekstiboxiin griidistä
Form1->Edit2->Text=Form1->StringGrid1->Cells[1][StringGrid1->Row];
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button_tulostaClick(TObject *Sender)
{
/*
//TULOSTETAAN TIEDOSTON SISÄLTÖ = Avataan Notepadissä
struct testi Unit1.h - headerissä
{
char nimi[40];
char vero[10];
};
*/
testi lue;//Otetaan structi käyttöön
String tiedosto="tulot.txt";//Source file
if(FileExists(tiedosto.c_str()))
{
fstream luku;//Avataan virta
String tiedosto="tulot.txt";
ofstream tulos;
String tulosfile="Tulosfile.txt";//Destination file
tulos.open(tulosfile.c_str(),ios::trunc);
tulos.close();
tulos.open(tulosfile.c_str(),ios::app);
luku.open(tiedosto.c_str(),ios::in | ios::binary);
while(luku.read((char*)&lue,sizeof (lue)))
{
tulos