03-07-2014
|
|
Miembro
NULL
|
|
Registrado: nov 2013
Ubicación: Argentina
Posts: 59
Reputación: 11
|
|
Cita:
Empezado por ecfisa
Hola eennzzoo.
Yo también había pensado en una opción similar a la publicada por dec.
.h:
Código:
#ifndef Unit2H
#define Unit2H
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
class Cliente {
private:
String FNombre;
String FApellido;
String FDni;
String FFileName;
TStrings *FTS;
public:
Cliente();
__property String Nombre = { read = FNombre, write = FNombre };
__property String Apellido = { read = FApellido, write = FApellido };
__property String Dni = { read = FDni, write = FDni };
__property String FileName = { read = FFileName, write = FFileName };
bool Open();
bool GetData(const String Dni);
bool Delete(const String Dni);
bool Save();
~Cliente();
};
#endif
.cpp
Código:
#pragma hdrstop
#include "Unit2.h"
#pragma package(smart_init)
Cliente::Cliente()
{
FTS = new TStringList;
}
bool Cliente::Open()
{
FTS->LoadFromFile(FFileName);
return FileExists(FFileName);
}
bool Cliente::GetData(const String Dni)
{
int p = FTS->IndexOf(Dni);
if (p != -1) {
FNombre = FTS->Strings[p-2];
FApellido = FTS->Strings[p-1];
FDni = FTS->Strings[p];
return true;
} else {
MessageBox(0,"Cliente no encontrado", "", MB_ICONERROR);
return false;
}
}
bool Cliente::Delete(const String Dni)
{
int p = FTS->IndexOf(Dni);
bool r = false;
if (p == -1)
MessageBox(0,"Cliente no encontrado", "", MB_ICONERROR);
else if (MessageBox(0, "¿ Borra el cliente ?","",MB_YESNO+MB_ICONQUESTION)==IDYES) {
FTS->Delete(p);
r = true;
}
return r;
}
bool Cliente::Save()
{
if (FNombre.IsEmpty() || FApellido.IsEmpty() || FDni.IsEmpty()) {
MessageBox(0,"Faltan uno o mas datos requeridos", "", MB_ICONERROR);
return false;
} else if (FTS->IndexOf(FDni)!= -1) {
MessageBox(0,"Cliente existente", "", MB_ICONERROR);
return false;
} else {
FTS->Add(FNombre);
FTS->Add(FApellido);
FTS->Add(FDni);
FTS->SaveToFile(FFileName);
return true;
}
};
Cliente::~Cliente()
{
delete FTS;
}
Ejemplo de uso:
Código:
...
#include "Unit2.h"
...
Cliente *cl;
void __fastcall TForm1::FormCreate(TObject *Sender)
{
cl = new Cliente();
cl->FileName = "cliente.txt"; /* ruta+nombre de archivo */
cl->Open();
}
void __fastcall TForm1::btnShowClick(TObject *Sender)
{
if (cl->GetData(Edit1->Text)) {
edNom->Text = cl->Nombre;
edApe->Text = cl->Apellido;
edDni->Text = cl->Dni;
}
}
void __fastcall TForm1::btnDeleteClick(TObject *Sender)
{
if (cl->Delete(Edit1->Text)) {
edNom->Clear();
edApe->Clear();
edDni->Clear();
}
}
void __fastcall TForm1::btnSaveClick(TObject *Sender)
{
cl->Save();
}
...
Espero que de las dos sugerencias puedas sacar ideas para implementar tu clase.
Saludos
|
Si ahora si, gracias.
|