Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 30-03-2005
Alfredo Alfredo is offline
Miembro
 
Registrado: nov 2003
Ubicación: Valencia, Venezuela
Posts: 234
Poder: 21
Alfredo Va por buen camino
Que evento debo capturar?

Ok. Otra vez clipper....

Pues en aquellos tiempos usaba una funcion que me daba verdadero si se actualizaba un get en la pantalla: UPDATED()

Solo deseo activar el boton "Grabar" solo si el usuario "modifica" uno de los varios Tedit's. Ok se que puedo hacerlo en el OnExit de cada Tedit, pero creo que debe haber algo mas general,

Cual seria el evento que necesito capturar?

(a veces uno se tranca en unas cosas.....)
__________________
if Vivir = Vivir + Aprender then Aprender = ?
Alfredo Borges
Responder Con Cita
  #2  
Antiguo 30-03-2005
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Si utilizas DbEdits puedes colocar una variable pública de tipo lógico que haga de semáfooro:
Código Delphi [-]
 procedure TForm1.DataSource1DataChange(Sender: TObject; Field: TField);
 begin
 lCambios:=True;
 end;

Y luego en el botón que tengas para grabar consultas como quedó el valor de dicha variable para saber si se hicieron cambios.

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #3  
Antiguo 30-03-2005
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Poder: 10
marcoszorrilla Va por buen camino
Con TEdits puedes hacer algo parecido programas el evento OnChange de un Tedit y luego asocias todos los demas tedits a este evento.

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita
  #4  
Antiguo 31-03-2005
Avatar de Pablo Carlos
Pablo Carlos Pablo Carlos is offline
Miembro
 
Registrado: jun 2004
Ubicación: Mendoza - Argentina
Posts: 270
Poder: 20
Pablo Carlos Va por buen camino
Cita:
Empezado por Alfredo
Solo deseo activar el boton "Grabar" solo si el usuario "modifica" uno de los varios Tedit's. Ok se que puedo hacerlo en el OnExit de cada Tedit, pero creo que debe haber algo mas general,
Cual seria el evento que necesito capturar?
(a veces uno se tranca en unas cosas.....)
Quisiera agregar algo... si tienes el Boton_Grabar en Enabled := False y en el evento AfterEdit de la tabla pones Boton_Grabar.Enabled := True; y luego en el evento AfterPost de la misma tabla lo pasas a false
Este es mi aporte
Saludos bye
__________________
Por qué todas las personas saben exactamente cómo debemos vivir nuestra vida, y nunca tienen idea de cómo deben vivir sus propias vidas.
Responder Con Cita
  #5  
Antiguo 31-03-2005
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
No recuerdo haber leido que los datos en los edits estuvieran asociados a alguna tabla...

si fuese asi, lo mas natural sería el uso de DBEdits, ¿no?, y valerse de la propiedad Modified del DataSet para saber si se ha aplicado alguna modificación sobre los valores del registro activo

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #6  
Antiguo 31-03-2005
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por jachguate
si fuese asi, lo mas natural sería el uso de DBEdits, ¿no?, y valerse de la propiedad Modified del DataSet para saber si se ha aplicado alguna modificación sobre los valores del registro activo
Concuerdo contigo en que la propiedad Modified nos permite prescindir del semáforo de Marcos. Pero el evento DataChange que él propone es muy bueno para poder habilitar en automático el botón en cuestión.

// Saludos
Responder Con Cita
  #7  
Antiguo 31-03-2005
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
oh, claro. El punto, es que no está claro (al menos para mi) el que haya un datasource de por medio...

saludos.
__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #8  
Antiguo 31-03-2005
Alfredo Alfredo is offline
Miembro
 
Registrado: nov 2003
Ubicación: Valencia, Venezuela
Posts: 234
Poder: 21
Alfredo Va por buen camino
Thumbs up Que bien...

Pues les agradezco a todos...

Para agregar inf. En el form utilizo Tedits, un para de Tmemos y yn Tcombobox. Con un boton "Guardar" muevo los datos a la base de datos. Uso un datamodule con su respectivo Tquery y Tdatasource.

Me propuesta de Marco es en la que estaba pensando, solo que confundido en el evento. Pero vean que es interezante .... deberia haber un evento que capturara una modificacion de este tipo sin tener que recurria a banderas o tratamiento individual...(como la funcion que les comente de clipper) jeje... Bueno en todo caso tambien se puede crear no?.... cuando tenga un tiempito le buscare la vuelta, si la termino la publico.
__________________
if Vivir = Vivir + Aprender then Aprender = ?
Alfredo Borges
Responder Con Cita
  #9  
Antiguo 31-03-2005
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
A mi me parece que aquí hay una confusión y no sé si debe a que cuando escribes TEdit en realidad quieres escribir TDBEdit o bien que hay algo que no nos has contando.

Si estás usando TEdit (sin el DB) entonces no aplica lo del evento DataChange del DataSource ya que el control no está conectado directamente al dataset.

Y en tal caso, el de usar TEdit (sin DB), tampoco tienes que tratar casos individuales.

Ya Marcos lo señaló desde el principio:

Asignas a todos los TEdit el mismo evento OnChange. No necesitas ninguna bandera. Al comienzo pones el botón inhabilitado y en cuanto se entre a este evento lo habilitas.

// Saludos
Responder Con Cita
  #10  
Antiguo 01-04-2005
Alfredo Alfredo is offline
Miembro
 
Registrado: nov 2003
Ubicación: Valencia, Venezuela
Posts: 234
Poder: 21
Alfredo Va por buen camino
No ROMAN esta bien como lo expreso, uso edit "simples y silvestres" (no TDBEdits) y en efecto, la propuesta de Marco es a mi novato entender la mas practica. Solo que estaba enfrascado en el evento ONexit de los edits y demas componentes. El caso es que el form, lo uso para editar e ingresar datos.
Por Ejemplo: Busco codigo ingresado en el edit1.text: "XXX" por una consulta. Si el cursor esta vacio entonces me habilita los demas controles para ingresar todos los datos correspondientes a dicho codigo. En caso de que el codigo exista, entonces (el codigo es unico) habilita los controles y recibe los datos desde el cursor para su edicion o consulta. No queria tener que agregar otro boton "EDICION" sino que por las caracteristicas del trabajo, si entras es solo para editar.
En cualquier momento el usuario pude cancelar la edicion (no tengo la base de datos abierta, solo tome los datos y los "pegue" en los edit). Quiza es mi viejo estilo de programación el que impera, pero no me terminande cuadrar los controles DBXXXXX, porque creo que las Bases de datos estaran abiertas mas tiempo que el necesario...nose.

Actualmente lo tengo de esta forma: Todos los controles que reciben datos los tengo en un panel y el su evento OnEnter cambio el boton guardar a Enabled, y una ves guardado el registro, lo inhabilito.
En todo caso un teraGracias, debo investigar un poco mas de los eventos de la DB, pero realmente no voy a durar mucho con paradox, me pienso mudar a firebird...jeje
__________________
if Vivir = Vivir + Aprender then Aprender = ?
Alfredo Borges
Responder Con Cita
  #11  
Antiguo 01-04-2005
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
En primer lugar, la decisión de mudarte a firebird me parece muy buena... pero. ¿que te hace pensar que usando dbEdits la base de datos estará abierta mas tiempo del necesario??

Habrá que comenzar por explicar que entendes por "tener abierta" una base de datos... y por otro lado, te recomiendo investigar un poco sobre los controles de datos (tipo TDBEdit y similares). Hay mucha gente que los usa, y mucha que no los usa... pero dada la razón que das, creo que valdrá la pena que explores e investigues un poco mas para tener un buen criterio y tomar tu propia decisión.

La mia: los uso siempre que sea conveniente, pues me fácilitan bastante la vida..

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #12  
Antiguo 01-04-2005
Alfredo Alfredo is offline
Miembro
 
Registrado: nov 2003
Ubicación: Valencia, Venezuela
Posts: 234
Poder: 21
Alfredo Va por buen camino
Cita:
Empezado por jachguate
La mia: los uso siempre que sea conveniente, pues me fácilitan bastante la vida..
Sin querer parecer ignorante, podrias por favor decirme, brevemente, cuando a tu parecer son convenientes? (me gustaria beneficiarme de la experiencia)

,... es que en un programa que combine los dos metodos (en un form, edits, y en otro use DBGrid. tuve inconvenientes, de hecho hice hasta una consulta sobre ese tema:
http://www.clubdelphi.com/foros/showthread.php?t=19189
)
__________________
if Vivir = Vivir + Aprender then Aprender = ?
Alfredo Borges
Responder Con Cita
  #13  
Antiguo 01-04-2005
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
Pues en general son convenientes media vez se use solamente para mostrar/editar datos almacenados en el dataset (o derivados mediante campos calculados).

Cuando usaría un edit normal es, por ejemplo, en el caso del primer campo de tu formulario, para que el usuario pueda ingresar un código, y en base a este valor realizar una búsqueda en la base de datos.... asi que si yo fuese quien programó este formulario, probablemente el primer campo sería un Tedit y el resto TDBEdits.

Este es un comportamiento, sin embargo, que evito siempre que me sea posible proveer de otro mecanismo de búsqueda igualmente conveniente para el usuario.

Lo mejor, claro, es que en base a la lectura de libros/artículos/revistas, el help y tu propia experiencia vayas formando y afinando tu propio criterio.

Saludos.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #14  
Antiguo 01-04-2005
Alfredo Alfredo is offline
Miembro
 
Registrado: nov 2003
Ubicación: Valencia, Venezuela
Posts: 234
Poder: 21
Alfredo Va por buen camino
Muy agradecido, amigos
__________________
if Vivir = Vivir + Aprender then Aprender = ?
Alfredo Borges
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 07:31:02.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi