Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 28-07-2004
acrophet acrophet is offline
Miembro
 
Registrado: sep 2003
Posts: 175
Poder: 21
acrophet Va por buen camino
Duda con dbmemo

Hola a todos.
Tengo una pequeña duda con un dbmemo. Necesito que al entrar a editar el dbmemo me aparezca siempre la fecha en la linea. Esto lo he conseguido haciendo un dbmemo.lines.add(DateToStr(date)). Lo que me hace es que me crea una linea con la fecha, correcto, el cursor aparece en la siguiente linea, pero cuando me pongo en esa linea y empiezo a escribir algo, se me borra la fecha que habia introducido automaticamente.
Como deberia hacerlo para que me saliese la fecha y pudiera editar sin cargarmela???

Un saludo y gracias.
Responder Con Cita
  #2  
Antiguo 28-07-2004
Avatar de ruina
ruina ruina is offline
Miembro
 
Registrado: jun 2004
Posts: 196
Poder: 20
ruina Va por buen camino
lo suyo seria cambiarlo en el campo, no en el control dataware. Un buen sitio para hacer esto puede ser OnStateChange del datasource:
Código Delphi [-]
procedure TForm1.DataSource1StateChange(Sender: TObject);
begin
      IF ClientDataSet1.State IN [DSinsert,dsedit] then
        ClientDataSet1.fieldbyname('Texto').AsString := ClientDataSet1.fieldbyname('Texto').asstring + #13#10 + datetostr(now)
end;
__________________
todo el mundo debe creer en algo... yo creo que voy a tomarme otra copa.
Responder Con Cita
  #3  
Antiguo 28-07-2004
acrophet acrophet is offline
Miembro
 
Registrado: sep 2003
Posts: 175
Poder: 21
acrophet Va por buen camino
Yo creo que como lo intento hacer, no esta del todo mal. Lo unico que pasa es lo que os he comentado. Pero sucede una cosa curiosa, si entro en el dbmemo, pues me inserta la linea con la hora, cuando me pongo en esa linea y tecleo algo me la borra. Pero lo bueno es que si luego salgo, vuelvo a entrar y a teclear algo en esa linea, ya no me lo borra
Alguien tiene algo de informacion sobre el dbmemo y su uso a la hora de añadir texto a pelo??

Muchas gracias.
Responder Con Cita
  #4  
Antiguo 28-07-2004
Avatar de ruina
ruina ruina is offline
Miembro
 
Registrado: jun 2004
Posts: 196
Poder: 20
ruina Va por buen camino
Cita:
Yo creo que como lo intento hacer, no esta del todo mal.
En realidad no. Al igual que no te metes a cambiar el text de un dbedit no deberias cambiar directamente un dbmemo, sino el valor del campo que representa.

Lo que ocurre es lo siguiente:
-insertas una linea en el dbmemo
-entras en el control
-escribes algo
-el control pone en modo de edicion el dataset asociado
-al ponerse en modo de edicion se asignan a los controles dataware los valores en los campos, en consecuencia obtienes el valor anterior a la inserción de la linea.

la segunda vez no te ocurre porque el dataset ya esta en modo de edición.

insisto en que la forma correcta es cambiar el valor del campo. de todas formas para evitar ese comportamiento extraño solo tienes que poner Dataset.edit antes del dbmemo.lines.add
__________________
todo el mundo debe creer en algo... yo creo que voy a tomarme otra copa.
Responder Con Cita
  #5  
Antiguo 29-07-2004
acrophet acrophet is offline
Miembro
 
Registrado: sep 2003
Posts: 175
Poder: 21
acrophet Va por buen camino
Muchas gracias Ruina, ahora ya funciona tal y como yo queria (aunque puede que no sea la manera mas ortodoxa...).
En fin, mil gracias por la ayuda prestada!
Responder Con Cita
  #6  
Antiguo 29-07-2004
Avatar de ruina
ruina ruina is offline
Miembro
 
Registrado: jun 2004
Posts: 196
Poder: 20
ruina Va por buen camino
es un placer ^_^ para eso estamos.
__________________
todo el mundo debe creer en algo... yo creo que voy a tomarme otra copa.
Responder Con Cita
  #7  
Antiguo 30-07-2004
acrophet acrophet is offline
Miembro
 
Registrado: sep 2003
Posts: 175
Poder: 21
acrophet Va por buen camino
Hola de nuevo, por ultimo, siguiendo con el tema este y si no es mucho abusar, me gustaria a ver si me puedes decir como puedo hacer para cuando me posicione en el memo, esté en modo sobreescribir. Digo esto porque cuando me meto, todo lo que escribo me va desplazando el texto que yo he metido automaticamente...

Un saludo y muchas gracias por todo!
Responder Con Cita
  #8  
Antiguo 30-07-2004
Avatar de ruina
ruina ruina is offline
Miembro
 
Registrado: jun 2004
Posts: 196
Poder: 20
ruina Va por buen camino
mira a ver usando el evento onEnter del control y posicionando el cursor al final (no se si es esa la idea) :
Código Delphi [-]
procedure TForm1.DBMemo1Enter(Sender: TObject);
var hoy:string;
begin
    hoy:=datetostr(now)+' ';
    ClientDataSet1.Edit;
    if (DBMemo1.Lines.Count>0) and
       (DBMemo1.Lines[DBMemo1.Lines.Count-1]<>hoy) then
    begin
            DBMemo1.Lines.Add(hoy);
            DBMemo1.SelStart:=length(DBMemo1.Lines.Text);
    end;
end;
__________________
todo el mundo debe creer en algo... yo creo que voy a tomarme otra copa.
Responder Con Cita
  #9  
Antiguo 02-08-2004
acrophet acrophet is offline
Miembro
 
Registrado: sep 2003
Posts: 175
Poder: 21
acrophet Va por buen camino
Gracias por responder Ruina. Pero no es por ahi por donde yo voy. Te explico:

Yo introduzco automaticamente la fecha, vale. Pero luego lo que yo quiero es escribir en la linea donde he metido la fecha, pero sin que esta se vaya desplazando. Escribir al principio de la linea
Código:
 Aqui meto el texto escribiendo                                    02/08/04 (esta es la fecha que meto automaticamente
Pues lo que quiero es que lo que voy escribiendo no me corra la fecha, sino que vaya sobreescibiendo hasta llegar a la fecha, y si lo que hay que escribir es mas largo, pues de momento, mala suerte

Un saludo.
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 08:27:49.


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