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 07-05-2004
vrortiz vrortiz is offline
Registrado
 
Registrado: may 2004
Posts: 1
Poder: 0
vrortiz Va por buen camino
Post procedimiento con componentes.

me gustaria poder hacer procedimientos con componentes mas omeno de esta manera

procedure casa();
begin
ComboBox3.Items.Clear;
ComboBox4.Items.Clear;
DataModule2.Table3.First;
while( not DataModule2.Table3.Eof )do
begin
if( DataModule2.Table3.FieldValues['Status']='NO ASIGNADO') then
Begin
ComboBox3.Items.Add(DataModule2.Table3.FieldValues['N_vale']);
ComboBox4.Items.Add(DataModule2.Table3.FieldValues['N_vale']);
End;
DataModule2.Table3.Next;
end;

end;

Mas sin embargo me marca errores, alguien puede ayudarme......
Responder Con Cita
  #2  
Antiguo 07-05-2004
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
Cool

Hola vrortiz. Bienvenido a los foros del clubdelphi.

En primer lugar voy a pedirte que leas la guia de estilo de los foros (encontrarás un vínculo en mi firma al final de este mensaje). También seguí el link para aprender a usar la etiqueta [ code ].

Luego, el mensaje que has enviado es bastante dificil de responder, no porque sea de un nivel muy elevado, sino porque no tiene la información necesaria para ayudarte. Ese "me marca errores" es muy vago. No se sabe si son errores en tiempo de compilación o de ejecución... y mucho menos el mensaje específico del error. Por tanto, te recomiendo la lectura de este otro hilo que trata precisamente del tema de la calidad de las preguntas.

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate

Última edición por jachguate fecha: 15-05-2004 a las 03:12:20.
Responder Con Cita
  #3  
Antiguo 07-05-2004
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 vrortiz
Mas sin embargo me marca errores, alguien puede ayudarme......
Pues como dice mi compañero jachguate, tienes que ser más explícito e informativo para que podamos ayudarte.

---------------
Sin embargo voy a hacerle de adivino aunque, claro está, puedo equivocarme.

Los errores que te marca son al momento de compilar y son del estilo

Cita:
Empezado por compilador de Delphi
Undeclared Identifier
Los indicios que me llevan a tal conjetura son:

1. El procedimiento casa no es método de ninguna clase (vamos, de ningún formulario) ya que no va prefijado por un identificador y un punto como en

Código Delphi [-]
procedure TForm1.casa();
begin
  ...
end;

2. Por tanto identificadores como ComboBox3 y DataModule2 tendrían que ser variables declaradas en un contexto global.

3. Aunque posible esto último es altamente improbable y en todo caso contrario a las buenas reglas de programación. Lo común es que se refieran a componentes insertadas en un formulario.

4. Por tanto el compilador no sabe a qué variables se refieren y marca el error.

La solución a esto sería prefijar los mencionados identificadores con la clase a la que pertenezcan, por ejemplo:

Código Delphi [-]
Form1.DataModule2.Table3.First;

Lo cual, no obstante, sería muy extraño y poco recomendable: que un procedimiento global haga referencia a un formulario en particular.

En otras palabras, supongo que estás tratando de manipular un formulario desde un procedimiento global y veo dos opciones:

a. Implementas el procedimiento como método del formulario:

Código Delphi [-]
type
  TForm1 = class
  public
    procedure casa();
  end;

...

procedure TForm1.casa();
begin
  ...
end;

b. o pasas el formulario como parámetro al procedimiento:

Código Delphi [-]
procedure casa(Form: TForm);
begin
  Form.ComboBox3.Items.Clear;
  Form.ComboBox4.Items.Clear;

  etcétera
end;

Aunque la opción b sólo sería indicada para un procedimiento de caracter muy general que pueda aplicarse a varios formularios (lo cual no creo que sea el caso).

Bueno, si mis adivinanzas no tienen nada que ver con la realidad no será culpa mía.



// Saludos
Responder Con Cita
  #4  
Antiguo 07-05-2004
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
Cool

Solo debo añadir, que en caso que el Método o procedimiento no lleve parámetros, no es necesario (y de hecho no compilará el código) poner los paréntesis vacios (al mejor estilo de c). Basta con añadir el punto y coma... algo como:

Código Delphi [-]
Procedure TForm1.casa;

Begin
  Sentencias;
end;

Cita:
Empezado por roman
que un procedimiento global haga referencia a un formulario en particular.
El principal problema de esto, es que el día que necesitas mas de una instancia del formulario... todo fallaría, o mas bien, el código afectaria siempre al formulario apuntado por Form1... y si ha sido llamado por Form1A, que es otra instancia de TForm1??

Cita:
Empezado por roman
o pasas el formulario como parámetro al procedimiento:
Esto también seria funcional, pero para evitar TypeCast, en lugar de recibir un parámetro del tipo TForm, seria mejor recibir un parámetro de la clase puntual del formulario a tratar (o del ancestro base donde estén los componentes a modificar, en caso de usar herencia visual)

Es decir..

en lugar de

Procedure Casa(Forma : TForm);

es preferible:

Casa(Forma : TForm1); o
Casa(Forma : TFormBaseConsultas);

Hasta luego.



pd. Román: veo que vas bien en las clases de Adivinación para Moderadores del club...... a ver si me das copia para el examen..
__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate

Última edición por jachguate fecha: 07-05-2004 a las 08:53:17.
Responder Con Cita
  #5  
Antiguo 07-05-2004
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
Solo debo añadir, que en caso que el Método o procedimiento no lleve parámetros, no es necesario (y de hecho no compilará el código)
Pues no sé en tu Delphi pero en el mío sí que compila.

Cita:
Empezado por jachguate
Esto también seria funcional, pero para evitar TypeCast, en lugar de recibir un parámetro del tipo TForm, seria mejor recibir un parámetro de la clase puntual del formulario a tratar
Typecast que no puse Creo que estoy dedicándole demasiado a la adivinación y menos a la codificación sin IDE

// Saludos
Responder Con Cita
  #6  
Antiguo 07-05-2004
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
Cool

Cita:
Empezado por roman
Pues no sé en tu Delphi pero en el mío sí que compila.
Ve pues.. eso si es nuevo para mi... como la última vez qe intenté hacer esto fue... a ver... dejame ver... creo que con Turbo Pascal 5.5 pos no me enteré a que hora hicieron el cambio

(solo me falta que también compile en TP )

Hasta luego.

pd. Pos yo al de codificación sin IDE si he ido... hacemos intercambio de copia en el examen???
__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #7  
Antiguo 07-05-2004
Avatar de eduarcol
[eduarcol] eduarcol is offline
Miembro Premium
 
Registrado: ago 2003
Ubicación: En los estados Zulia y Merida de Venezuela
Posts: 4.151
Poder: 25
eduarcol Va por buen camino
Bueno muchachos aparte de buenos programadores metafisicos y demas, que no se diga en el club se encuentra de todo
__________________
...Yo naci en esta ribera del arauca vibr@d0r
Soy hermano de la espuma,
de la garza, de la rosa y del sol...
Viva Venezuela
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


La franja horaria es GMT +2. Ahora son las 22:02:13.


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