BASE DE DATOS Bienvenido al mundo paradigmático..!!
Un día sin sonrisas es un día perdido..!! PARADIGMA
Solo se ve bién con el corazón..
...lo esencial es invisible para los ojos ..!!
Saint Exupéry

QUE ES.? Qué es esto..??
Clases Altas
Característica Consultas
Clases Bajas
Característica Modificar
Característica Buscar
Clases Navegadores
Característica Accesorios
Característica Imprimir
Diseño | Volver | | Arbol | | Archivo | | Agenda | Basico | | Cola y Pila |
Comunicación | Editor | | Editor2 | | Fibonacci | | Hanoi | | Listas | | Matriz |
Planificación | Modelo 1 | | Modelo | | Polimorfismo | Punteros | | Sobrecarga | | Vectores |

Un día sin sonrisas es un día perdido..!! PARADIGMA
Fe significa.. no querer saber la verdad..!!
Nietzsche

Amigo virtual en este page podrás apreciar la aplicación de los algoritmos típicos que se requieren para procesar una base de datos compuesta por una sola tabla, que fue creada usando Visual Fox Pro. Por supuesto que la estructura de este sistema, es valido para cualquier otra tabla generada por otro entorno, tal como Access, Paradox, DBase u otro estandar.

Te propongo algoritmos para altas, bajas, consulta, búsqueda e impresión del contenido de la base de datos. Si eres novell en estos menesteres, te recomiendo editar textualmente mi programa fuente, luego compilar.

... si opinas que los links anteriores no están en tu onda, te recomiendo recordar . . . .

Carito Ser Felíz..!!

Carlotin Cómo Hablas..??!!

Luischi Quién Muere..!!

.. ahora si opinas que lo anterior es una WEBada y estas de acuerdo con la Caperucita, que afirma que el Lobo la tiene chica, te puedo demostrar que . . .

Gracias a mis hijos..!! Mi mamá es un paradigma..!!

Gracias a mis hijos..!! ..También mi Consultor..

Gracias a mis hijos..!! Ah.. y el Conejo también..!!

Un día sin risas es un dia perdido..!!
  1. A caballo regalado, muchas gracias.
  2. Sonríe... yo existo.
  3. Si queres olvidar al que estas amando, imaginatelo cagando.
  4. Encuentre la paz... en Bolivia.
  5. En el reino de los ciegos, el tuerto se queda con las mejores minas.
  6. Si lo tontos volaran, se lo pasaría nublado.
  7. Elarte es cagarte del frío.
  8. Dios mio, dame paciencia... Pero damela YA!
  9. Lo importante no es saber, sino tener el telefono del que sabe.
  10. Hubiera preferido que me educaran sexualmente, a que me enseñaran los logaritmos, porque de los logaritmos hago tan poco uso.
  11. Si no tiene nada que hacer, por favor no lo haga aquí.
  12. Siento tu piel entre mis dedos... deberias cuidarte de la lepra.
  13. El amor es ciego, pero el vecino no.

Volver al principio


QUE ES ESTO..???
Variables dinámicas Volver al principio

Si quiero comprar un boomerang nuevo, ¿cómo me deshago del viejo?

C++ BUILDER BASE de DATOS

Dado que una base de datos es el contenedor de información registrada en tablas, conexiones ODBC y procedimientos almacenados; podemos simplificar y afirmar que es el conjunto de tablas e índices pertenecientes a un mismo sistema de información.

Para utilizar una tabla determinada de la base de datos, esta debe ser abierta de manera que tanto la tabla y la base de datos queden activados.

El sistema de gestión de bases de datos incorporado en la versión de C++ Bulder 5, se utiliza como diccionario de datos para apoyar el desarrollo de aplicaciones o su uso interactivo desde la ventana de database desktop.

Por ello, si modificamos un registro, las reglas de validación están automáticamente activas. Asi, si existe una condición que impide grabar un campo determinado con igual contenido, cuando se intenta actualizar el registro actual, se produce una advertencia de validación.

C++ Builder, permite además, guardar nombres largos de campo o su descripción, evitando el problema del uso de nombres crípticos por la limitación de la longitud de los nombres de campo, como ocurría antes.

Otra característica interesante de C++ Builder, son sus vistas o consultas SQL almacenadas en la base de datos, cuya particularidad es pueden hacerse uso como una tabla, de modo que puedes, abrirlas, cerrarlas o actualizar las tablas que han intervenido en tal consulta.

De acuerdo a la ubicación física de la tabla consultada podemos tener una:

La base de datos posee los procedimientos almacenados, que permiten incluir código que pueda ser usado desde que se activa la base de datos, pudiendo utilizar tal código, por ejemplo, para incluir una rutina de numeración automática de códigos para los registros que se vayan añadiendo a la tabla.

TABLA LIBRE: Es aquella que no pertenece a una base de datos, por tanto no posee características aplicadas a las tablas pertenecientes a una base de datos.

LA BASE DE DATOS PUEDE CONTENER

  1. TABLAS: Guarda el nombre, la descripción y las reglas de validación a nivel de fila.

  2. VISTAS: Consultas actualizables realizadas a tablas de la propia base de datos.

    Se guarda información acerca de las columnas seleccionadas, los criterios de recuperación de registros, el orden de las filas o los campos actualizables.

  3. CAMPOS: Guarda el nombre, la descripción y las reglas de validación a nivel de columna.

  4. INDICE: Guarda el tipo de índice: principal, candidato, regular o normal.

  5. VISTAS REMOTAS: Consultas actualizables realizadas a tablas remotas situadas en algún servidor de datos.

    Se guarda información acerca de las columnas seleccionadas, los criterios de recuperación de registros, el orden de las filas o los campos actualizables.

  6. CONEXIONES: Con información acerca de una conexión hecha vía ODBC a algún servidor de datos.

    Esta información se utiliza posteriormente para generar vistas remota.

  7. PROCEDIMIENTOS: Procedimientos almacenados, consistente en la información generada por el generador de integridad referencial o procedimientos de usuario.

    Los procedimientos contenidos en la base de datos están disponibles en tanto en cuanto la base de datos este abierta.

    Contiene, además, el código relativo a las reglas de validación.

    Por tanto, cada vez que se produce algún evento de inserción, modificación o eliminación, se ejecuta este código.

CREAR BASE DE DATOS con VISUAL FOX

Como crear una base de datos en VISUAL FOX:

Para crear una base de datos se puede seguir algunos de estos procedimientos:

  1. Desde el generador de proyectos, escoja nuevo posicionado en la fila bases de datos de la pagina datos.

  2. Desde el menú principal,

    Escoja del menú archivo la opción nuevo (CTRL-N) o escoja el botón de comando nuevo de la barra de herramientas estándar.

    Visualice a continuación el cuadro de dialogo para la elección del nuevo tipo de fichero a crear.

    Escoja base de datos.

  3. Desde la ventana de comandos, emitiendo la sentencia create project.

USO de BASE DE DATOS

Crear y mantener la información del contenedor de bases de datos se realiza mediante los comandos CREATE DATABASE NombreArchivo y MODIFY DATABASE [NombreBaseDatos], respectivamente.

El primero crea la base de datos y abre el diseñador de base de datos.

El segundo necesita una base de datos abierta y activa. Si no es así, muestra el cuadro de dialogo Abrir para elegir la base de datos a modificar.

Para que se pueda acceder a la información de un contenedor de base de datos, es necesario, en primer lugar, abrir la base de datos mediante el comando OPEN DATABASE NombreArchivo.

Se puede abrir varias bases de datos a la vez.

Cuando se abre una base de datos, esta queda disponible, pero no activa. Esto quiere decir que algunos comandos y funciones no actuaran correctamente.

La razón es que trabajan sobre la base de datos activa; por tanto, no basta con abrir solo la base de datos, hay que activarla.

Para este ultimo cometido se ha de utilizar SET DATABASE TO [NombreBaseDatos].

Cerrar la base de datos activa es tan sencillo como utilizar el comando CLOSE DATABASE.

Cuando se abre y activa una base de datos, la función DBC() devuelve el nombre de la base de datos activa.

Si existe la seguridad de que una base de datos esta abierta, aunque no este activa, se puede confirmar mediante la función DBUSED (NombreBaseDatos).

De todos modos, aun se puede ir un poco mas allá y almacenar en una matriz todas las bases de datos abiertas. Este resultado se obtiene mediante la función ADATABASES().

Para eliminar físicamente del disco una base de datos se utiliza el comando DELETE DATABASE NombreBaseDatos. Este comando elimina los ficheros DBC, DCT y DCX relacionado con la base de datos. También elimina toda referencia a la base de datos en las tabas que contenía; por tanto, estas pasan a ser tablas libres.

CREAR BASE DE DATOS desde C++Builder

Para efectuar este proceso, proceda de la siguiente forma:

  1. Desde el generador de proyectos, escoja Nuevo posicionado en la fila Tablas de la base de datos a la cual quiere que pertenezca la nueva tabla. No es necesario que este editando la base de datos con el generador de bases de datos.

  2. Desde el menú principal, escoja del menú Archivo la opción Nuevo (CTRL-N) o escoja el botón de comando Nuevo de la barra de herramientas Estándar. Solo es posible realizar estas acciones cuando se esta editando la base de datos en el generador de bases de datos.

  3. Si esta editando la base de datos directamente, escoja el botón de comando Nueva Tabla de la barra de herramientas Generador de bases de datos.

    También puede pulsar el botón derecho en cualquier zona libre de la ventana del generador y escoger del menú subsiguiente la opción Nueva Tabla.

CREAR BASE DE DATOS desde C++ Builder

  1. Desde el generador de proyectos, escoja Data Access, y elija Data Source.

  2. También debe elegir Table para trabajar con la tabla designada.

  3. Una vez que ya tengo la tabla, en las propiedades de Data Source (Data Set), poner el nombre de la tabla que estoy utilizando.

CREAR TABLA de DATOS desde C++ Builder

  1. Desde la opción tools, elegir DataBase Desktop, en donde abrirá una ventana.

  2. En file, elegir new y luego table, donde te dará la opción de elegir el tipo de tabla que desees utilizar .

  3. Una vez elegida apretar ok, en donde aparecerá la tabla para ser creada.

  4. Poner los campos a usar y su tipo y tamaño.

  5. Luego guardar la tabla con Save As.

USAR TABLA de DATOS desde C++ Builder

  1. Con el table elegido de Data Source, utilizar las propiedades para relacionarlo con la tabla creada.

  2. En las propiedades, en TableName, escribir el camino de donde se encuentra la tabla que necesitare.

  3. Por ultimo, en Active cambiar false por true, si el camino esta bien, no habrá ningún problema. Ya puedo trabajar con mi tabla.

/////////////////////////////////////////////////
//  C++ BUILDER 5        BASE de DATOS
//                      Con una tabla dbf
//   Wilo Carpio           30/11/20001
/////////////////////////////////////////////////


///////////////////////////////////////////////////
//  DECLARACION DE VARIABLES GLOBALES
///////////////////////////////////////////////////
AnsiString DatoBuscado;

Puedo guardar el ratón de mi PC en el baúl del coche con el gato del auto.??


Volver al principio


ALTAS
Ingreso de nuevos datos Volver al principio

Sonrie tu novia nos ama..!!

CREANDO NUEVA FICHA

Para generar un nuevo tregistro puedes usar los procedimientos SQL o simplemente recurrir a la función Append() cuya sintaxis puedes apreciar en las siguientes lineas.



///////////////////////////////////////////////////
//  ACTIVANDO BOTON ALTAS
///////////////////////////////////////////////////
void __fastcall TMiFormulario::BotonAltasClick(TObject *Sender)
{
  MiFormulario->Caption = "ALTA DE REGISTROS";
  PanelAltas->Caption="Digita los datos, luego graba";
  ActivoPanelAltas();
  MuestroBoxDatos();
  LimpioLosBoxes();
  HabilitoBoxDatos();
  BoxNombre->SetFocus();
};


///////////////////////////////////////////////////
//  GRABACION DE UN REGISTRO EN LA TABLA
///////////////////////////////////////////////////
void __fastcall TMiFormulario::GrabarDatosClick(TObject *Sender)
{
 GrabarDatos->Visible=false;
  AceptarDatos->Visible=false;
  if (MiFormulario->Caption == "ALTA DE REGISTROS")
     {
       TLocateOptions Resultado;
       Resultado = Resultado < < loPartialKey;
       if (MiTabla - > Locate ( "nombre",BoxNombre->Text,Resultado))
            {
              ShowMessage("Ese Mono Ya Está Grabado");
              LimpioLosBoxes();
              BoxNombre->SetFocus();
           }
          else
           {
              MiTabla->Append();
              LeoDatosDeBoxes();
              MiTabla->Post();
              LimpioLosBoxes();
              BoxNombre->SetFocus();
           }
      }
    else
     if (MiFormulario->Caption =="MODIFICAR REGISTRO")
        {
           MiTabla->Edit();
           LeoDatosDeBoxes();
           MiTabla->Post();
        }
       else
        if (MiFormulario->Caption =="BAJA DE REGISTRO")
           {
             MiTabla->Delete();
             MiTabla->Refresh();
           };
};

///////////////////////////////////////////////////
//   CERRANDO PANEL DE ALTAS
///////////////////////////////////////////////////
void __fastcall TMiFormulario::CerrarAltasClick(TObject *Sender)
{
    ActivoPanelABM();
}

Sonrie yo te amo..!!


Volver al principio


CONSULTAS
Ver datos Volver al principio

¿Por qué no hay comida para gatos 'con sabor a ratón'?

GRILLAS DE DATOS

La manera más simple de visualizar el contenido de tu tabla es recurrir a la grilla de datos



///////////////////////////////////////////////////
//  ACTIVANDO PANEL CON LA GRILLA DE DATOS
///////////////////////////////////////////////////
void __fastcall TMiFormulario::BotonGrillaClick(TObject *Sender)
{
  ActivoPanelGrilla();
};
void ActivoPanelGrilla(void)
{
   MiFormulario->Caption="'GRILLA DE DATOS";
   MiFormulario->PanelGrilla->Visible=true;
   MiFormulario->PanelABM->Visible=false ;
};


///////////////////////////////////////////////////
//     CERRANDO LA GRILLA
///////////////////////////////////////////////////
void __fastcall TMiFormulario::CerrarGrillaMouseMove(TObject *Sender,
      TShiftState Shift, int X, int Y)
{
  ActivoPanelABM();
}

¿Hasta dónde se lavan la cara los pelados?


Volver al principio


BAJAS
Eliminar datos Volver al principio

¿Por qué apretamos más fuerte los botones del control remoto cuando tiene poca batería??

ELIMINACION DE UNA FICHA

Para borrar un registro puedes recurrir a la función Delete()



///////////////////////////////////////////////////
//  ACTIVANDO BOTON DE BAJAS
///////////////////////////////////////////////////
void __fastcall TMiFormulario::BotonBajaClick(TObject *Sender)
{
  MiFormulario->Caption="BAJA DE REGISTRO";
  ActivoPanelAltas();
  HabilitoBoxDatos();
  CargoComboNombre();
}

///////////////////////////////////////////////////
//  ELIMINACION DE UN REGISTRO
///////////////////////////////////////////////////
void __fastcall TMiFormulario::BorrarDatosClick(TObject *Sender)
{
 MuestroBoxDatos();
 BorrarDatos->Visible=false;
 if (Application->MessageBox("¿Deseas borrar estos datos..??","ELIMINACION DE UN REGISTRO",MB_YESNO + MB_DEFBUTTON2 + MB_ICONQUESTION ) == IDYES)
    {
       MiTabla->Delete();
       MiTabla->Refresh();
       ComboNombre->Text="";
       LimpioLosBoxes();
    };
};

¿Por qué la luz negra no es negra?


Volver al principio


MODIFICAR
Cambiar datos Volver al principio

¿Por qué los Kamikazes usaban cascos.??

MODIFICAR REGISTROS

Para editar y modificar el contenido de una ficha de la tabla puedes usar la función Edit()



///////////////////////////////////////////////////
// ACTIVANDO BOTON DE MODIFICACIONES
///////////////////////////////////////////////////
void __fastcall TMiFormulario::BotonCambiosClick(TObject *Sender)
{
  MiFormulario->Caption="MODIFICAR REGISTRO";
  ActivoPanelAltas();
  HabilitoBoxDatos();
  CargoComboNombre();
}

///////////////////////////////////////////////////
//  CAMBIO DE CONTENIDO DE UN BOX
///////////////////////////////////////////////////
void __fastcall TMiFormulario::BoxNombreChange(TObject *Sender)
{
  if ((MiFormulario->Caption == "ALTA DE REGISTROS")||(MiFormulario->Caption =="MODIFICAR REGISTRO"))
     if (BoxNombre->Text == "")
        {
          GrabarDatos->Visible=false;
        }
       else
        {
          GrabarDatos->Visible=true;
        }
};

Al mundo redondo lo llamamos planeta. Si fuese plano... ¿lo llamaríamos redondeta.??


Volver al principio


BUSCAR
Accesorios Volver al principio

Si un abogado enloquece... ¿pierde el juicio?

BUSCANDO FICHAS

La manera más eficiente de buscar una ficha, ya sea para consultas o para modificaciones o para bajas es usar un Combo Box, cuyos algoritmos podras ver en los siguientes renglones.


///////////////////////////////////////////////////
//   OPCIONES DE OPTION GRUP PARA BUSCAR
///////////////////////////////////////////////////
void __fastcall TMiFormulario::OpcionBuscarClick(TObject *Sender)
{
  OpcionBuscar->Visible=false;
  if (OpcionBuscar->Items->Strings[OpcionBuscar->ItemIndex] == "Por Combo" )
      {
        CargoComboNombre();
      }
     else
      {
        PanelAltas->Caption="Digita nombre buscado";
        ComboNombre->Visible=true;
        ComboNombre->SetFocus();
        DatoBuscado=ComboNombre->Text;
      };
};


///////////////////////////////////////////////////
// ACTIVANDO BOTON DE BUSQUEDA
///////////////////////////////////////////////////
void __fastcall TMiFormulario::BotonBuscarClick(TObject *Sender)
{
  MiFormulario->Caption="BUSCAR REGISTRO";
  PanelAltas->Caption="Clikea Opción de Buscar";
  ActivoPanelAltas();
  OpcionBuscar->Visible= true;
}

///////////////////////////////////////////////////
//  CAMBIO DEL CONTENIDO DEL DISPLAY DEL COMBO
///////////////////////////////////////////////////
void __fastcall TMiFormulario::ComboNombreChange(TObject *Sender)
{
 if (MiFormulario->Caption =="BUSCAR REGISTRO")
     {
       VerDato->Visible=true;
     }
    else
     {
       AceptarDatos->Visible=true;
     };
}

///////////////////////////////////////////////////
//  FUNCION DE BUSQUEDA POR COMBO
///////////////////////////////////////////////////
void BuscoMono(void)
{
  LimpioLosBoxes();
  MuestroBoxDatos();
  MiFormulario->AceptarDatos->Visible=false;
  MiFormulario->VerDato->Visible=false;
  TLocateOptions Resultado;
  Resultado = Resultado<MiTabla->Locate("nombre",MiFormulario->ComboNombre->Text,Resultado))
     {
        MiFormulario->BoxNombre->Text = MiFormulario->MiTabla->FieldByName("Nombre")->AsString;
        MiFormulario->BoxEmail->Text  = MiFormulario->MiTabla->FieldByName("Email")->AsString;
     }
    else
     {
        ShowMessage("Ese mono NO EXISTE!!!");
     };
  MiFormulario->ComboNombre->Text="";
};

///////////////////////////////////////////////////
//  CARGA DEL COMBO CON UN CAMPO
///////////////////////////////////////////////////
void CargoComboNombre(void)
{
bool B;
  B=false;
  MiFormulario->PanelAltas->Caption="Selecciona Dato del combo";
  MiFormulario->ComboNombre->Visible=true;
  MiFormulario->ComboNombre->Clear();
  MiFormulario->ComboNombre->SetFocus();
  MiFormulario->MiTabla->First();
  while (B==False)
  {
  if (MiFormulario->MiTabla->Eof)
  {
    B=true;
  }
  else
  {
      MiFormulario->ComboNombre->Items->Add(MiFormulario->MiTabla->FieldValues["nombre"]);
      MiFormulario->MiTabla->Next();
   }
   }
};

///////////////////////////////////////////////////
// ACEPTAR DATO DEL DISPLAY DEL COMBO
///////////////////////////////////////////////////
void __fastcall TMiFormulario::AceptarDatosClick(TObject *Sender)
{
 AceptarDatos->Visible=false;
  BuscoMono();
  if (MiFormulario->Caption =="BAJA DE REGISTRO")
     {
        BorrarDatos->Visible=true;
     };
}

///////////////////////////////////////////////////
//  MOSTRAR DATO DEL DISPLAY DEL COMBO
///////////////////////////////////////////////////
void __fastcall TMiFormulario::VerDatoClick(TObject *Sender)
{
  BuscoMono();
  DesabilitoBoxDatos();
}


Volver al principio


NAVEGADORES
Accesorios Volver al principio

¿Los infantes disfrutan la infancia tanto como los adultos el adulterio.??

NAVEGANDO por la TABLA

Corresponden a los algoritmos de los típicos cuatro botones de navegación


///////////////////////////////////////////////////
//  NAVEGADORES DE LA GRILLA
///////////////////////////////////////////////////
void __fastcall TMiFormulario::PrimeroClick(TObject *Sender)
{
  MiTabla->First();
}
//---------------------------------------------------------------------------
void __fastcall TMiFormulario::AnteriorClick(TObject *Sender)
{
  MiTabla->Prior();
}
//---------------------------------------------------------------------------

void __fastcall TMiFormulario::SiguienteClick(TObject *Sender)
{
  MiTabla->Next();
}
//---------------------------------------------------------------------------

void __fastcall TMiFormulario::UltimoClick(TObject *Sender)
{
  MiTabla->Last();
}


Si el pez nada... ¿la vaca todo..???


Volver al principio


VARIOS
Accesorios Volver al principio

¿Qué tiempo verbal es "no debería haber pasado"?... ¿preservativo imperfecto.??

FUNCIONES COMUNES

En todos tus programas te haran falta alguno de estos algoritmos.


///////////////////////////////////////////////////
//  FUNCIONES COMUNES DE CONTROL DEL PROGRAMA
///////////////////////////////////////////////////
void ActivoPanelABM(void)
{
  MiFormulario->Caption="PROGRAMA MODELO C++Builder:      Wilo Carpio    "+Date();
  MiFormulario->PanelABM->Visible=true ;
  MiFormulario->PanelGrilla->Visible=false ;
  MiFormulario->PanelTeoria->Visible=false ;
  MiFormulario->PanelAltas->Visible=false;
  HabilitoBoxDatos();
  MiFormulario->ComboNombre->Text="";
};
void ActivoPanelAltas(void)
{
  MiFormulario->PanelABM->Visible=false ;
  MiFormulario->PanelGrilla->Visible=false ;
  MiFormulario->PanelTeoria->Visible=false ;
  MiFormulario->PanelAltas->Visible=true;
  MiFormulario->OpcionBuscar->Visible= false;
  MiFormulario->OpcionBuscar->ItemIndex=-1;
  MiFormulario->ComboNombre->Visible= false;
  MiFormulario->VerDato->Visible= false;
  MiFormulario->ComboNombre->Text="";
  DesabilitoBoxDatos();
  LimpioLosBoxes();
  OcultarIconosABM();
  OcultoBoxDatos();
};
void DesabilitoBoxDatos(void)
{
  MiFormulario->BoxNombre->Enabled=false;
  MiFormulario->BoxEmail->Enabled=false;
};

void HabilitoBoxDatos(void)
{
  MiFormulario->BoxNombre->Enabled= true;
  MiFormulario->BoxEmail->Enabled= true;
};

void OcultoBoxDatos(void)
{
  MiFormulario->BoxNombre->Visible=false;
  MiFormulario->BoxEmail->Visible=false;
};

void MuestroBoxDatos(void)
{
  MiFormulario->BoxNombre->Visible=true;
  MiFormulario->BoxEmail->Visible= true;
};

void OcultarIconosABM(void)
{
  MiFormulario->GrabarDatos->Visible=false;
  MiFormulario->BorrarDatos->Visible=false;
  MiFormulario->AceptarDatos->Visible=false;
  MiFormulario->ComboNombre->Visible=false;
};

void LeoDatosDeBoxes(void)
{
     MiFormulario->MiTabla->FieldByName("Nombre")->AsString = MiFormulario->BoxNombre->Text;
     MiFormulario->MiTabla->FieldByName("Email")->AsString  = MiFormulario->BoxEmail->Text;
};

void LimpioLosBoxes(void)
{
     MiFormulario->BoxNombre->Text="";
     MiFormulario->BoxEmail->Text="";
};

///////////////////////////////////////////////////
//    FUNCION DE SALIDA DEL PROGRAMA
///////////////////////////////////////////////////
void __fastcall TMiFormulario::ChauMouseUp(TObject *Sender,
      TShiftState Shift, int X, int Y)
{
    if (Application->MessageBox("Deseas cerrar el programa?","ESTAS POR CERRAR ESTE SISTEMA",MB_YESNO + MB_DEFBUTTON2 + MB_ICONQUESTION ) == IDYES)
       {
         MiFormulario->Close();
      };
};

Si la piscina es honda, ¿el mar es Toyota.???


Volver al principio


IMPRIMIR
QUICK REPORT Volver al principio

¿Debería cortarme las venas o dejármelas largas.??

MODOS de IMPRIMIR

En los siguientes párrafos te propongo las alternativas más usuales para imprimir distintos tipos de archivos.


///////////////////////////////////////////////////
//   ACTIVANDO BOTON DEL PANEL CON TEORIA
///////////////////////////////////////////////////
void __fastcall TMiFormulario::BotonTeoriaClick(TObject *Sender)
{
     PanelTeoria->Visible=true;
     PanelABM->Visible=false;
     Autor->Visible=true;
}

///////////////////////////////////////////////////
//  CERRANDO PANEL DE TEORIA
///////////////////////////////////////////////////
void __fastcall TMiFormulario::CerrarAutorClick(TObject *Sender)
{
  PanelABM->Visible=true;
  PanelTeoria->Visible=false;
}

///////////////////////////////////////////////////
//  ACTIVANDO IMPRESION DE TEORIA
///////////////////////////////////////////////////
void __fastcall TMiFormulario::ImprimoTeoriaClick(TObject *Sender)
{
MiFormulario->Caption="ESTAS POR IMPRIMIR LA TEORIA";
 if (Application->MessageBox("¿Deseas imprimir estos datos.??","IMPRESION DE DATOS DE LA TEORIA",MB_YESNO + MB_DEFBUTTON2 + MB_ICONQUESTION ) == IDYES)
    {
       if (Application->MessageBox("¿Está activada tu impresora.??","IMPRESION DE DATOS DE LA TEORIA", MB_YESNO + MB_DEFBUTTON2 + MB_ICONQUESTION ) == IDYES)
          {
            PrintDialog->Execute();
            BoxConTeoria->Print("MyApp.exe - readme.txt");
          };
    };
 MiFormulario->Caption="ESTAS POR IMPRIMIR DATOS DE LA GRILLA";
 if (Application->MessageBox("¿Deseas imprimir estos datos.??","IMPRESION DE DATOS DE LA GRILLA",MB_YESNO + MB_DEFBUTTON2 + MB_ICONQUESTION ) == IDYES)
    {
       if (Application->MessageBox("¿Está activada tu impresora.??","IMPRESION DE DATOS DE LA GRILLA",MB_YESNO + MB_DEFBUTTON2 + MB_ICONQUESTION ) == IDYES)
          {
            PrintDialog->Execute();
            TPrinter *Prntr = Printer();
            Graphics::TBitmap *bmp = new Graphics::TBitmap();
            bmp->LoadFromFile("c:\Archivos de programa\Borland\CBuilder5\Projets\BDB2001Wilo\BebeWilo.bmp");
            Prntr->BeginDoc();
            Prntr->Canvas->Draw((Prntr->PageWidth - bmp->Width),(Prntr->PageHeight - bmp->Height),bmp);
          Prntr->EndDoc();
          delete bmp;
          };
    };
}

///////////////////////////////////////////////////
//  IMPRESION DE LA TABLA CON Quick REPORT
///////////////////////////////////////////////////
void __fastcall TMiFormulario::ImprimoGrillaClick(TObject *Sender)
{
 MiFormulario->Caption="ESTAS POR IMPRIMIR EL CONTENIDO DE LA TABLA";
 if (Application->MessageBox("¿Deseas imprimir estos datos.??","IMPRESION DE DATOS DE LA TABLA", MB_YESNO + MB_DEFBUTTON2 + MB_ICONQUESTION ) == IDYES)
    {
       if (Application->MessageBox("¿Está activada tu impresora.??","IMPRESION DE DATOS DE LA TABLA", MB_YESNO + MB_DEFBUTTON2 + MB_ICONQUESTION ) == IDYES)
          {
              MiReporte->QuickRep1->Preview();
          };
    };
}

Cuando se 'reproduce' un disco... ¿queda 'encinta'?


Un parto en una calle... ¿es alumbrado público.??

Volver al principio