Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 06-12-2012
dvd2000 dvd2000 is offline
Miembro
 
Registrado: nov 2006
Posts: 14
Poder: 0
dvd2000 Va por buen camino
Gracias por los aporte.

He probado los siguiente, según indicaciones de nlsgarcia, pero en tiempo de ejecución me sale siguiente error: Access violation at address 040E915 in module prueba.exe. Read of Address 00000008.

procedure TFprincipal.DBDatosKeyPress(Sender: TObject; var Key: Char);
begin
if DBdatos.Fields[DBDatos.SelectedIndex]=
(DBDatos.DataSource.DataSet.FieldByName('Proveedor')) then
begin
if DBDatos.Controls[0] is TInPlaceEdit then
with DBDatos.Controls[0] as TInPlaceEdit do
begin
if (GetTextLen >= 10) and (Key <> #8) then
begin
Key := #0;
ShowMessage('Máxima longitud alcanzada');
end;
end;
end;
end;



No sé donde puede estar el error.

Gracias por vuestro interes.
Responder Con Cita
  #2  
Antiguo 06-12-2012
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 21
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
dvd2000,

Cita:
Empezado por nlsgarcia
El código anterior muestra ejemplos de como controlar la longitud de un texto en un control de entrada.
Cita:
Empezado por dvd2000
En tiempo de ejecución me sale siguiente error: Access violation at address 040E915 in module prueba.exe. Read of Address 00000008.
El ejemplo implementado en Delphi 7 esta en el link: http://terawiki.clubdelphi.com/Delph...Input_Text.rar

La aplicación incluye la BD para que lo pruebes con facilidad.

Espero sea útil

Nelson.

Última edición por nlsgarcia fecha: 06-12-2012 a las 21:51:45.
Responder Con Cita
  #3  
Antiguo 08-12-2012
dvd2000 dvd2000 is offline
Miembro
 
Registrado: nov 2006
Posts: 14
Poder: 0
dvd2000 Va por buen camino
Gracias nlsgracia, ya he visto tu ejemplo y es lo que quiero hacer. Es decir Dbgrid1 de tu ejemplo se comporta como yo quiero que se comporte.

Ahora bien, no sé por que razón a mí me sale el error de : Access violation at address 040E915 in module prueba.exe. Read of Address 00000008.. en la siguiente línea:

if DBgrid1.Controls[0] is TInPlaceEdit then

Justo en ese punto salta el error. Supongo que puede ser por tema de versiones de Delphi, tu lo haces con la 7 y yo estoy con la 3. El compilador no da error, y en ejecución pues sí que me salta este error.

Te agradezco mucho el interés mostrado.

Saludos.

Responder Con Cita
  #4  
Antiguo 08-12-2012
dvd2000 dvd2000 is offline
Miembro
 
Registrado: nov 2006
Posts: 14
Poder: 0
dvd2000 Va por buen camino
Por fin, solucionado.

Es curioso, pero de esta forma me da error.

procedure TForm1.DBGrid1KeyPress(Sender: TObject; var Key: Char);
begin
if DBGrid1.Fields[DBGrid1.SelectedIndex]=(DBGrid1.DataSource.DataSet.FieldByName('Author')) then
begin
if DBGrid1.Controls[0] is TInPlaceEdit then
with DBGrid1.Controls[0] as TInPlaceEdit do
begin
if (GetTextLen >= MaxLongComment) and (Key <> #8) then
begin
Key := #0;
ShowMessage('Máxima longitud alcanzada');
end;
end;
end;
end;



Y de la siguiente forma, funciona:


Columna:=DBrejilla.SelectedIndex; // Averigua numero de columna posicionada.
if columna=1 then
begin
if dbrejilla.Controls[0] is TInPlaceEdit then
with dbrejilla.Controls[0] as TInPlaceEdit do
begin
if (GetTextLen >= 20) and (Key <> #8) then
begin
Key := #0;
ShowMessage('Máxima longitud alcanzada');
end;
end;

end;

Perdon por la indentación, pero no logro que se respete.

Gracias a todos y en especial a nlsgarcia.

Última edición por dvd2000 fecha: 08-12-2012 a las 15:19:59.
Responder Con Cita
  #5  
Antiguo 08-12-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.057
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Recuerda poner los tags al código fuente, ejemplo:



Gracias
Responder Con Cita
  #6  
Antiguo 08-12-2012
dvd2000 dvd2000 is offline
Miembro
 
Registrado: nov 2006
Posts: 14
Poder: 0
dvd2000 Va por buen camino
He de rectificar. Dicen que es de sabio. La euforia me ha llevado a precipitarme.

Hay algo en mi programa, que no va bien.

Y no sé que es. En tiempo de Ejecucion hay veces que me da el error y otras no. Ya saben el error de "violation....". Así que he tenido que quitar el códigode nlsgarcia y le he buscado una alternativa, no es la que más me gusta pero así va a tener que tirar.

Lo ideal era que al llegar al tope admitido por un campo, se abriera una ventana para que siguiera escribiendo mas aún, pero al final, obligo al usuario a pinchar en un boton para abrir esa ventanita.

Gracias a todos.
Responder Con Cita
  #7  
Antiguo 08-12-2012
Avatar de nlsgarcia
[nlsgarcia] nlsgarcia is offline
Miembro Premium
 
Registrado: feb 2007
Ubicación: Caracas, Venezuela
Posts: 2.206
Poder: 21
nlsgarcia Tiene un aura espectacularnlsgarcia Tiene un aura espectacular
dvd2000,

Cita:
Empezado por dvd2000
En tiempo de Ejecucion hay veces que me da el error y otras no
Te comento:

1- Crea un nuevo programa de pruebas y solo coloca el código de control de longitud de texto, el DBgrid, componentes de BD y el código mínimo necesario, la idea es que puedas aislar el error.

2- Haz debug a tu programa, verifica la línea de código que genera el error.

3- ¿Hay algún objeto que utilices y que no estés instanciando correctamente?, ¿Que acción ejecuta el programa antes de la falla?

4- Probastes el ejemplo que te anexe, ¿Como funciona en tu sistema?, recuerda que uso Delphi 7 y componentes ADO en el ejemplo.

5- ¿Que valor tiene Columna:=DBrejilla.SelectedIndex al momento del error?

Quizás el problema sea otro componente que usas en tu aplicación, lo importante es precisar el origen del error, si funciona y a veces falla, ¿Cual es la causa?, toma en cuenta que todas la variables cuentan al momento de analizar un error (Versión de Delphi, Componentes de acceso de datos, BD usada, Versión de OS, Componentes de Terceros, Instancias de Objetos, Condiciones previas al error, Punteros, etc).

Revisa este link:
Cita:
Delphi access violation assigning local variable: http://stackoverflow.com/questions/2...local-variable
Espero sea útil

Nelson.

Última edición por nlsgarcia fecha: 08-12-2012 a las 18:23:41.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Delphi for PHP y DBgrid dante148 Internet 1 04-10-2011 22:56:15
DbGrid en Delphi 7 drakkon Varios 3 27-12-2007 04:42:08
Delphi for php- dbgrid omarifr PHP 2 12-10-2007 17:02:54
DBGrid en delphi 5 ibbeth SQL 1 03-01-2006 02:38:05
Delphi + MySQL (DBGrid) gringo Conexión con bases de datos 5 23-10-2004 04:44:31


La franja horaria es GMT +2. Ahora son las 13:09:51.


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