![]() |
![]() |
| Paypal | FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
|||||||
| Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
||||
|
||||
|
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
|
||||
|
||||
|
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
|
||||
|
||||
|
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 |
|