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 02-07-2007
Avatar de CottonMouth
CottonMouth CottonMouth is offline
Miembro
 
Registrado: jun 2007
Posts: 18
Poder: 0
CottonMouth Va por buen camino
Question Agregar Nombre de campos en un array de DBText

Hola a todos !Como les va? bueno les explico tengo que crear una array de DbText y que a medida que se vallan creando contengan un nombre de campo distinto segun la tabla, como debo hacer?. Hasta ahora esto es lo que hice:

Código:
 
for i:=1 to 6 do
  begin
   Campo[i]:=TDBText.Create(self);
      with  Campo[i] do
     begin
       DataSource:=DataSource1;
       Width := 193; // ancho
       Height := 21; //alto
       Left :=32;//posicion X
       Top := i* ConstHeight; //posicion Y
       Parent := PanelDatos; //en donde se dibujan los botones
       Visible := True; //para que se vean
       end;
     end;
intente con un if, con un case y la variable i y el datafield asignando le el nombre del campo pero no me funciono porque no me muestra nada obviamente lo estoy haciendo mal.si me pueden ayudar con esto se los agradeseria mucho!! Seguro debe ser una pavada para ustedes pero como soy novata no se me ocurre.Desde ya gracias!! besotes a todos!!

luly
Responder Con Cita
  #2  
Antiguo 02-07-2007
Avatar de CottonMouth
CottonMouth CottonMouth is offline
Miembro
 
Registrado: jun 2007
Posts: 18
Poder: 0
CottonMouth Va por buen camino
Queria agregar donde declare el array para los que estan igual que yo:

public
{ Public declarations }
Edit:array[1..6]of TEdit;
Campo:array[1..6] of TLabel;

Besotes!!
luly
Responder Con Cita
  #3  
Antiguo 02-07-2007
gabrielkc gabrielkc is offline
Miembro
 
Registrado: jun 2007
Ubicación: Chihuahua Mexico
Posts: 118
Poder: 17
gabrielkc Va por buen camino
Cita:
Empezado por CottonMouth
public
{ Public declarations }
Edit:array[1..6]of TEdit;
Campo:array[1..6] of TLabel;
El TLabel no tiene una propiedad DataSource , deberías cambiar tu declaración del array campo por :
Campo:array[1..6] of TDBText;

Porque además cuando lo creas igualas un TLabel a un TDBText:

Campo[i]:=TDBText.Create(Self);

Y como recomendación de OOP:

NO declares variables en la parte publica de tu forma; declarala en la parte privada, si necesitas que sean accesados desde otra unidad entonces usa propiedades;
Responder Con Cita
  #4  
Antiguo 02-07-2007
gabrielkc gabrielkc is offline
Miembro
 
Registrado: jun 2007
Ubicación: Chihuahua Mexico
Posts: 118
Poder: 17
gabrielkc Va por buen camino
Fields

En cuando al nombre de los campos puedes usar el procedimiento de los DataSet GetFieldNames();

el cual recibe como parámetro un TStringList;


y en los items del stringlist tendrías los nombres de los campos accesibles con su indice:

Campos[i].Caption:=StringList[i-1];//i-1 porque el indice del primer elemento es 0 y tu manejas un array basado en 1
Responder Con Cita
  #5  
Antiguo 03-07-2007
Avatar de CottonMouth
CottonMouth CottonMouth is offline
Miembro
 
Registrado: jun 2007
Posts: 18
Poder: 0
CottonMouth Va por buen camino
Question

gabielkc : perdona mi gran ignorancia pero no me quedo claro del todo como usar el procedimiento que me señalaste podrias enseñarmelo y como le paso los datos al stringlist, gracias igual por dedicarme tu tiempo!
Besos. Luly
Responder Con Cita
  #6  
Antiguo 03-07-2007
gabrielkc gabrielkc is offline
Miembro
 
Registrado: jun 2007
Ubicación: Chihuahua Mexico
Posts: 118
Poder: 17
gabrielkc Va por buen camino
Campos

function ObtieneCampo(n:Integer):string;
var Lista:TStringList;
begin
Lista:=TStringList.Create;
Tabla1.GetFieldNames(Lista);
Result:=Lista[n];
Lista.Free;
end;


Ese sería basicamente el procedimiento para obtener el nombre de un campo cualquiera, no se te olvide que tu for inicia en 1 y el índice el TStringList inicia en 0, osea en tu caso lo llamarías mas o menos así:

Campos[i].Caption:=ObtieneCampo(i-1); ///campos quedaría declarada como un array de TLabel;

y la creación sería:

Campos[i]:=TLabel.Create;


Si quieres usar TDBText solo con especificar el campo al que quieres asociarlo es suficiente:

Campos[i].DataField:=Tabla1.Fields[i-1];
Responder Con Cita
  #7  
Antiguo 03-07-2007
Avatar de CottonMouth
CottonMouth CottonMouth is offline
Miembro
 
Registrado: jun 2007
Posts: 18
Poder: 0
CottonMouth Va por buen camino
Smile Genial!!

Gracias gabrielkc sos un genio!
no me salio usando un TDBText me marca el siguiente error:
Incompatible types: String and TField obviamente se me escapo algo.
Tal vez vos sabes porque.Pero bueno el otro procedimiento anda perfecto y aprendi algo nuevo. Gracias!!! Besotes y gracias por tu tiempo.
luly
Responder Con Cita
  #8  
Antiguo 03-07-2007
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
¿No puedes usar una rejilla para ese propósito? suele ser más cómodo.

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #9  
Antiguo 03-07-2007
Avatar de CottonMouth
CottonMouth CottonMouth is offline
Miembro
 
Registrado: jun 2007
Posts: 18
Poder: 0
CottonMouth Va por buen camino
Question una rejilla?

Hola Lepe! a que te refieres con una rejilla? Podrias explicarme?Gracias por tu tiempo. Besos. Luly
Responder Con Cita
  #10  
Antiguo 03-07-2007
gabrielkc gabrielkc is offline
Miembro
 
Registrado: jun 2007
Ubicación: Chihuahua Mexico
Posts: 118
Poder: 17
gabrielkc Va por buen camino
Si ya se que la pregunta era para lepe........ pero no es un chat... es un foro:


Una regilla es un DBGrid..... una regilla como la de excel, en la parte superior los titulos de los campos y en el "cuerpo" del la regilla los datos.

En mi caso uso un StringGrid basicamente lo mismo, pero echo a mano
Responder Con Cita
  #11  
Antiguo 03-07-2007
Avatar de fjcg02
[fjcg02] fjcg02 is offline
Miembro Premium
 
Registrado: dic 2003
Ubicación: Zamudio
Posts: 1.410
Poder: 22
fjcg02 Va camino a la fama
Hemos de suponer que en algún momento el dataset de DataSource1 cambia ( o lo cambias ), sino, no podrías utilizar los mismos dbtext para acceder a campos de distintas tablas.
Hemos de suponer, que además todas las tablas tienen 6 campos.

Dicho esto, creo que te falta únicamente asignar el nombre del campo en la creación de los dbtext ( solo la primera vez), y cuando cambia el dataset, cambiar los campos.

Código Delphi [-]
for i:=1 to 6 do
  begin
    // solo creo el dbtext la primera vez
     if campo[i] = nil then   Campo[i]:=TDBText.Create(self); // añadido
     with  Campo[i] do
     begin
       DataSource:=DataSource1;
       Field:=Datasource1.Dataset.Field[i]; // añadido el nombre del campo
       Width := 193; // ancho
       Height := 21; //alto
       Left :=32;//posicion X
       Top := i* ConstHeight; //posicion Y
       Parent := PanelDatos; //en donde se dibujan los botones
       Visible := True; //para que se vean
       end;
     end;

Prueba y ya nos contarás.

Saludos
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino -
Responder Con Cita
  #12  
Antiguo 04-07-2007
luisgutierrezb luisgutierrezb is offline
Miembro
 
Registrado: oct 2005
Ubicación: México
Posts: 925
Poder: 19
luisgutierrezb Va por buen camino
nada mas como complemento para lo que menciona fjcg02, el arreglo de campos empieza en 0 no en 1, solo habra que corregir una linea para que quedara:
Field:=Datasource1.Dataset.Field[i-1];
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
Agregar Nombre a las columnas de Un DBgrid en Timpo de Ejecucion mgaray Varios 5 22-06-2018 03:19:41
Mostrar nombre de campos y filtar nombre de tablas .db en un combobox Coco_jac Varios 1 24-06-2006 01:34:29
Agregar campos de registro en la interface javitocarrasco Conexión con bases de datos 4 05-05-2006 13:14:37
agregar campos en combobox @-Soft Conexión con bases de datos 4 24-02-2004 13:00:23
¿Cómo trabajar con los campos con array? jncrls Firebird e Interbase 1 13-11-2003 23:23:35


La franja horaria es GMT +2. Ahora son las 07:17:56.


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