Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 05-09-2006
Avatar de JULIPO
JULIPO JULIPO is offline
Miembro
 
Registrado: ene 2006
Ubicación: Bogota Colombia
Posts: 187
Poder: 19
JULIPO Va por buen camino
Creando componentes en ejecucion

Saludos cordiales.

estoy desarrollando una matriz de componentes en ejecucion de 3 columnas x n filas segun un listado de eventos, las columnas estan compuestas por un edit, un label y un button la pregunta es ya creados los componentes y las rutinas de onclick para los botones cuando presiono un boton debo mostrar el contenido del edit y el caption del label pertenecientes a la misma fila del boton como lo hago ?.

espero sea clara la pregunta .

cordialmente

julipo
Responder Con Cita
  #2  
Antiguo 05-09-2006
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
Hola.

Si no nos decis cómo estas estructurando internamente tus componentes, no hay forma de ayudarte!

Supondré que creaste un registro, un vector de registros y que en la propiedad TAG de cada componente has almacenado su propio índice en el vector, así, quedaría algo como:

Código Delphi [-]
Type
  TFila = record
    Boton: TButton;
    Etiqueta: TLabel;
    Editor: TEdit;
  end;

TForm1 = class(TForm)
  //codigo aqui
  private
    FArreglo : Array[0..n-1] of TFila;
//mas codigo aqui

procedure TForm1BotonCualquieraClick(Sender: TObject);
var
  UnaFila: TFila;
begin
  UnaFila := FArreglo[(Sender as TObject).Tag];
  ShowMessage(Format('El editor contiene: %s'#13'Y la etiqueta dice: %s', 
    [Fila.Editor.Text, Fila.Etiqueta.Caption]);
end;

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
  #3  
Antiguo 05-09-2006
Avatar de JULIPO
JULIPO JULIPO is offline
Miembro
 
Registrado: ene 2006
Ubicación: Bogota Colombia
Posts: 187
Poder: 19
JULIPO Va por buen camino
Smile Me falta algo para que funcione correctamente

gracias de antemano por tu respuesta pero no me funciona la rutina de onclick de los botones.

el codigo que realizamos es el siguiente quisiera lo revisaras y me indicaras que falta para que funcione correctamente
Código Delphi [-]
 
type   
       TFila = record
        p: TButton;
        b: TLabel;
        a: TEdit;
  end;
var
        Vertel: TVertel;
        FILAS:ARRAY OF TFILA;
 
procedure TVertel.FormShow(Sender: TObject);
VARCONTADOR,I:INTEGER;
                CSID2,LISTALLAMA:STRING;
begin
  inherited;
    LISTALLAMA:=USUARIOS.Caption;
    SETLENGTH(FILAS,LENGTH(LISTALLAMA));
    CSID2:=CSID.Caption;
    I:=0;
    FOR CONTADOR :=1 TO LENGTH(LISTALLAMA) DO
      BEGIN       ZQUERY3.Close;
       ZQUERY3.SQL.Clear;
       ZQUERY3.SQL.TEXT:=FORMAT('SELECT * FROM CLIENTES.listel%S 
                                               WHERE (INDICE =:INDICE1)',[CSID2]);
       ZQUERY3.ParamByName('INDICE1').AsString:=LISTALLAMA[CONTADOR];
       ZQUERY3.Open;
       IF NOT ZQUERY3.IsEmpty THEN
          BEGIN
          FILAS[i].a:=TEDIT.Create(SELF);
          FILAS[i].A.Parent := Self;
          FILAS[i].A.Left := (50);
          FILAS[i].A.Top := 120+(I*30);
          FILAS[i].A.Width:= 250;
          FILAS[i].A.Height :=25 ;
          FILAS[i].A.Name:='Edit'+inttostr(i);
          FILAS[i].a.Text:=ZQUERY3.Fields[1].AsString;
          FILAS[i].A.ReadOnly:=TRUE;
          FILAS[i].a.Tag:=I;
          FILAS[i].B:=TLABEL.Create(SELF);
          FILAS[i].B.Parent := Self;
          FILAS[i].B.AutoSize:=FALSE;
          FILAS[i].B.Left := (330);
          FILAS[i].B.Top := 120+(I*30);
          FILAS[i].B.Width:= 150;
          FILAS[i].B.Height :=25 ;
          FILAS[i].B.Name:='LABEL'+inttostr(i);
          FILAS[i].B.Alignment:=taCenter;
          FILAS[i].B.Color:=CLRED;
          FILAS[i].B.Caption:=ZQUERY3.Fields[7].AsString;
          FILAS[i].B.Tag:=I;
           IF ZQUERY3.Fields[4].AsString <> '' THEN
            BEGIN
             FILAS[i].p:=TButton.Create(SELF);
             FILAS[i].P.Parent := Self;
             FILAS[i].p.Left := (530);
             FILAS[i].p.Top := 120+(I*30);
             FILAS[i].p.Width:= 50;
             FILAS[i].p.Height :=25 ;
             FILAS[i].p.Name := 'Button'+ IntToStr(i);
             FILAS[i].P.Caption:=ZQUERY3.Fields[4].AsString;;
             FILAS[i].p.OnClick:=BotonCualquieraClick;
             FILAS[i].P.Tag:=I;
            END;           i:=i+1;
          END;
      END;
end;
 
procedure TVertel.BotonCualquieraClick(Sender: TObject);
var
  UnaFila: TFila;
begin
{  UnaFila := Filas[(Sender as TObject).tag];} esta es la parte que no me funciona quisiera me explicaras mejor como hacerlo.

  ShowMessage(Format('El editor contiene: %s'#13'Y la etiqueta dice: %s',
    [UNAFila.A.Text, UNAFila.B.Caption]);
end;


de antemano gracias por tu respuesta.

Última edición por JULIPO fecha: 09-11-2006 a las 04:42:08.
Responder Con Cita
  #4  
Antiguo 05-09-2006
Avatar de JULIPO
JULIPO JULIPO is offline
Miembro
 
Registrado: ene 2006
Ubicación: Bogota Colombia
Posts: 187
Poder: 19
JULIPO Va por buen camino
ya lo solucione con el siguiente codigo

Código Delphi [-]
procedure TVertel.BotonCualquieraClick(Sender: TObject);
var
  UnaFila: TFila;
  boton:tbutton;
begin
  boton:=tbutton(sender);
  UnaFila := Filas[boton.tag];
  ShowMessage(Format('El editor contiene: %s'#13'Y la etiqueta dice: %s',
    [UNAFila.A.Text, UNAFila.B.Caption]));
end;

Gracias nuevamente

Última edición por JULIPO fecha: 09-11-2006 a las 04:43:01.
Responder Con Cita
  #5  
Antiguo 06-09-2006
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
Es cierto... cometí el error de castear a TObject, cuando en realidad debí castear a TComponent... un pequeño desliz..

Funcionaría sin mayores cambios si sustituyes

Sender as Tobject

por

Sender as TComponent.

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: 06-09-2006 a las 00:08:16.
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
ventajas de componentes en tiempo de ejecución Johnny Q OOP 9 22-09-2005 10:30:31
componentes en tiempo de ejecución Maga84 OOP 13 21-05-2005 19:49:06
Componentes en Tiempo de Ejecucion Caro Varios 2 16-05-2005 16:49:01
mover componentes en tiempo de ejecución Dantael OOP 3 06-02-2005 12:29:46
Creación de componentes en tiempo de ejecución jymy788 Varios 2 27-01-2005 17:22:20


La franja horaria es GMT +2. Ahora son las 21:10:51.


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