FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
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; luly |
#2
|
||||
|
||||
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 |
#3
|
|||
|
|||
Cita:
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; |
#4
|
|||
|
|||
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 |
#5
|
||||
|
||||
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 |
#6
|
|||
|
|||
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]; |
#7
|
||||
|
||||
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 |
#8
|
||||
|
||||
¿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. |
#9
|
||||
|
||||
una rejilla?
Hola Lepe! a que te refieres con una rejilla? Podrias explicarme?Gracias por tu tiempo. Besos. Luly
|
#10
|
|||
|
|||
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 |
#11
|
||||
|
||||
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.
Prueba y ya nos contarás. Saludos
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino - |
#12
|
|||
|
|||
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]; |
|
|
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 |
|