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 31-01-2013
Avatar de Kiranov
Kiranov Kiranov is offline
Miembro
 
Registrado: ago 2012
Ubicación: Chihuahua, Mexico.
Posts: 47
Poder: 0
Kiranov Va por buen camino
Referencia al formulario

Buenas tardes,

Quisiera saber si en delphi hay alguna forma de referenciar al mismo formulario donde esta uno trabajando, me explico: En Visual basic hay se usa ME para llamar componentes del mismo form, en foxpro se usa THISFORM. El asunto es que estoy usando procedimientos y cuando trato de llamar un componente me dice que no lo encuentra y me lo marca de rojo. Uso el findcomponent pero igual me marca access violation a la hora de ejecutar.

Una linea donde me da access violation es la siguiente:

tADPhysIBDriverLink(findcomponent('ADPhysIBDriverLink1')).VendorLib:='FBCLIENT.DLL'; tadquery(findcomponent('adquery1')).Close;
tadconnection(findcomponent('adconnection1')).Connected:=True;

y si lo hago sin findcomponent, igual me arroja el error.

Gracias por adelantado,
kiranov.
__________________
Kiranov (Alberto Vega)
Chihuahua, Mexico.
---------------------------------------------------------------------------------
"El hardware es lo que hace a una máquina rápida;
el software es lo que hace que una máquina rápida se vuelva lenta."

Craig Bruce en 1990
---------------------------------------------------------------------------------
Responder Con Cita
  #2  
Antiguo 31-01-2013
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
No entiendo la pregunta.
Dices hacer referencia al mismo form donde estas trabajando ?.
Para hacer referencia a un componente del mismo form simplemente se pone el nombre del componente, si se hace referencia a otro form se usa el uses de unit de ese form.
Por ejemplo, segun entiendo de tu ejemplo si quieres cerrar el componente adquery1 simplemente lo cierras asi:

Código Delphi [-]
adquery1.close;
Suponendo que se llame asi, nomalmente es ADOQuery1.
Tal vez esta mal escrito y por eso no lo encuentra.

Saludos
__________________
Siempre Novato
Responder Con Cita
  #3  
Antiguo 31-01-2013
Avatar de Kiranov
Kiranov Kiranov is offline
Miembro
 
Registrado: ago 2012
Ubicación: Chihuahua, Mexico.
Posts: 47
Poder: 0
Kiranov Va por buen camino
Referencia a una forma

Gracias caral por tu pronta respuesta.

Se trata de un mismo form, pero esa linea va dentro de un procedimiento, el cual mando llamar desde el create. le estoy poniendo
With form1 do
begin
end

pero a la hora de ejecutar el procedimiento me da access violation. realmente ya le di vueltas pero no logro hacer que ejecute el ADQuery1.Close;, intente haciendolo de este forma: TADQuery(findcomponent('ADQuery1')).Close; pero sale el error igual, justo en esa linea...

Saludos!
Kiranov
__________________
Kiranov (Alberto Vega)
Chihuahua, Mexico.
---------------------------------------------------------------------------------
"El hardware es lo que hace a una máquina rápida;
el software es lo que hace que una máquina rápida se vuelva lenta."

Craig Bruce en 1990
---------------------------------------------------------------------------------
Responder Con Cita
  #4  
Antiguo 31-01-2013
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Si es un procedure hecho por ti declaralo donde estan los otros procedures (por ejemplo el formcreate), asi lo reconocera.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #5  
Antiguo 31-01-2013
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Tambien lo podrias hacer asi, dentro del procedimiento que creaste:

Código Delphi [-]
TForm1.AdoQuery1.Close;

o

Código Delphi [-]
Form1.Adoquery1.close;

No me acuerdo cual es la opción correcta, no tengo delphi a mano.
Saludos
__________________
Siempre Novato
Responder Con Cita
  #6  
Antiguo 31-01-2013
Avatar de Kiranov
Kiranov Kiranov is offline
Miembro
 
Registrado: ago 2012
Ubicación: Chihuahua, Mexico.
Posts: 47
Poder: 0
Kiranov Va por buen camino
Lo he declarado pero ahora no me lo compila. lo mas raro de todo es que si no lo declaro y lo compilo, todo bien. Pero en tiempo de ejecucion es cuando me da el access violation, en cualquier linea de ese procedimiento, por ejemplo el ADQuery1.Close;

Saludos!
Kiranov
__________________
Kiranov (Alberto Vega)
Chihuahua, Mexico.
---------------------------------------------------------------------------------
"El hardware es lo que hace a una máquina rápida;
el software es lo que hace que una máquina rápida se vuelva lenta."

Craig Bruce en 1990
---------------------------------------------------------------------------------
Responder Con Cita
  #7  
Antiguo 31-01-2013
Avatar de Kiranov
Kiranov Kiranov is offline
Miembro
 
Registrado: ago 2012
Ubicación: Chihuahua, Mexico.
Posts: 47
Poder: 0
Kiranov Va por buen camino
Este es el segmento del procedimiento que da el problema:

procedure refrescargrid;
begin
with form1 do
begin
adconnection1.ConnectionString:=cadenaconexion;
ADPhysIBDriverLink1.VendorLib:='FBCLIENT.DLL';
adquery1.Close;
adconnection1.Connected:=True;
end;

Gracias por la ayuda!
Kiranov
__________________
Kiranov (Alberto Vega)
Chihuahua, Mexico.
---------------------------------------------------------------------------------
"El hardware es lo que hace a una máquina rápida;
el software es lo que hace que una máquina rápida se vuelva lenta."

Craig Bruce en 1990
---------------------------------------------------------------------------------
Responder Con Cita
  #8  
Antiguo 31-01-2013
Avatar de Caral
[Caral] Caral is offline
Miembro Premium
 
Registrado: ago 2006
Posts: 7.659
Poder: 25
Caral Va por buen camino
Hola
Copia el codigo de ese unit y ponlo aqui a ver si noto el problema.
Saludos
PD; para que se vea bien ponle las etiquetas de delphi
[ DELPHI]codigo.... [ /DELPHI]
Si los espacios que deje entre los corchetes y la palabra delphi y / osea
Código Delphi [-]
codigo....
__________________
Siempre Novato
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Parámetros por referencia a un .exe Parsec OOP 4 25-05-2012 20:19:28
Referencia circular Enan0 Varios 3 31-10-2006 22:56:26
referencia circular melon OOP 1 16-04-2006 02:13:00
variables por referencia shaktale Varios 2 11-06-2003 12:24:59


La franja horaria es GMT +2. Ahora son las 10:58:46.


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