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 05-12-2013
Avatar de richy08
richy08 richy08 is offline
Miembro
 
Registrado: may 2007
Ubicación: Bucerias, Nayarit Mexico
Posts: 529
Poder: 17
richy08 Va por buen camino
referencia de tedit en TComponentList

Buen dia, les platico un poco mi duda si yo creo un tedit y lo agrego a un tcomponentlist de esta manera

Código Delphi [-]
 product: TComponentList;

Código Delphi [-]
      
          edit:= TEdit.Create(nil);
          edit.Name:='Edt'+inttostr(Qry_lineaproductoP.fieldbyname('id').Value);
          //edit.Caption:=Qry_lineaproducto.fieldbyname('nombre').Value;
          edit.Left:= leftEdit;
          edit.Top:=top;
          edit.Width:=57;
          edit.Height:=17;
          edit.Parent:=PageControl1.Pages[tabshhet];
          edit.Tag :=Qry_lineaproductoP.fieldbyname('id').Value;
          //CheckBox.hint:=Qry_unit.fieldbyname('semail').Value;
          edit.OnExit:=DoOnExit;
          edit.text:=Qry_lineaproductoP.fieldbyname('max').Value;
          product.Add(edit);
                                           <--aqui no necesito  destruir a edit?? con edit.free;


si despues modifico alguna propiedad de ese edit en el form por medio de la funcion DoOnExit

Código Delphi [-]
procedure TFrm_POmym1.DoOnExit(Sender: TObject);    
begin
  if Sender is Tedit then
  begin
    with Tedit(Sender) do
    begin
        color:=clSkyBlue;
   .
   .
   .

si recorro el tcomponent list de esta manera, ese cambio a la propiedad text del edit esta ligado en el tcomponentlist??

Código Delphi [-]

   for i := product.Count-1 downto 0 do
    begin
             showmessage((TEdit(product[i]).text);  <--Rsultado debe de ser color clSkyBlue
    end;

gracias por anticipado
Responder Con Cita
  #2  
Antiguo 05-12-2013
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola richy08.
Cita:
si recorro el tcomponent list de esta manera, ese cambio a la propiedad text del edit esta ligado en el tcomponentlist??
Si. En este otro ejemplo, se ponen todos los edits agregados al TComponentList en color rojo:
Código Delphi [-]
...
var
  i: Integer;
begin
  for i := 0 to product.Count-1 do
    TEdit(product.Items[i]).Color := clRed;
end;

Cita:
<--aqui no necesito destruir a edit?? con edit.free;
Si no pones la propiedad OwnsObjects en False, TComponentList liberará los componentes agregados cuando se destruya la instancia del mismo.

Ejemplo:
Código Delphi [-]
procedure TForm.FormDestroy(Sender: TObject);
begin
  product.Free;
end;

Cita:
Código Delphi [-]
showmessage((TEdit(product[i]).text);  <--Rsultado debe de ser color clSkyBlue
Eso no va a suceder... El procedimiento ShowMessage recibe como parámetro el texto y no las propiedades del TEdit, por lo tanto no lo mostrará en color clSkyBlue.

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #3  
Antiguo 05-12-2013
Avatar de richy08
richy08 richy08 is offline
Miembro
 
Registrado: may 2007
Ubicación: Bucerias, Nayarit Mexico
Posts: 529
Poder: 17
richy08 Va por buen camino
gracias ecfisa por la respuesta , creo que lo ultimo fue error de dedo , pero si se pone asi, esto si lo imprimiria

Código Delphi [-]
showmessage(inttostr((TEdit(product[i]).color));

ahora me surge otra duda como puedo dibujar los componentes de producto(TComponent list) de nuevo en la forma , esto lo necesito por que en la pantalla
necesito paginar los productos, pero algunos datos puieron haber cambiado(por ejemplo el color del tedit) y al regresar a la misma pagina necesito que se repinten igual.

saludos
Responder Con Cita
  #4  
Antiguo 05-12-2013
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola richy08.

No se si entendí lo que buscas hacer, ¿ Es algo como tomar una instantánea mediante el TComponentList, modificar alguna propiedad en algún edit y luego volverlos al estado anterior ?

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #5  
Antiguo 05-12-2013
Avatar de richy08
richy08 richy08 is offline
Miembro
 
Registrado: may 2007
Ubicación: Bucerias, Nayarit Mexico
Posts: 529
Poder: 17
richy08 Va por buen camino
trato de explicarlo mejor, en la pantalla solo apareceran por ejemplo 20 productos , de un total de 100, entonces los productos se paginaran de 20 en
20(total 5 paginas ) , usare dos botones uno de atras y otro de adelante, para ir apareciendo los productos segun en la paginacion en que esten.

ejemplo:

estoy en la paginacion 1 y muevo una propiedad de un tedit por ejemplo la de color, luego presiono el boton de adelante (cambio a pagina 2) , si despues presiono el boton hacia atras (cambio a pagina 1), me gustaria volver a pintar ese tedit pero desde el TObjectList para que aparezca con su propiedad color modificada, entonces la pregunta es como pintar los objetos del TobjectList a la forma

saludos
Responder Con Cita
  #6  
Antiguo 05-12-2013
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola richy08.

De ahí mi pregunta anterior... No creo que te sea útil para ese propósito.

Lo que sucede es que las propiedades Items[n] de TComponentList y TObjectList, en realidad son apuntadores (a un TComponent y un TObject respectivamente). Por lo tanto todo cambio que se provoque en un componente asignado, se verá reflejado en el elemento de la lista y viceversa.

Por ejemplo, si tenemos asignado en la posición 10 de una lista el control "Edit11" es lo mismo hacer:
Código Delphi [-]
  (FindComponent('Edit11') as TEdit).Color := clBlak;
que:
Código Delphi [-]
  
  (Lista.Items[10] as TEdit).Color := clBlack;
Ambos códigos hacen referencia a la misma instancia, uno u otro provocan el mismo efecto.

Si deseas guardar los estados relevantes de los controles de cada TTabSheet al abandonarlo para restaurarlo al ingresar nuevamente, podrías valerte de TIniFile o TRegistry.

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
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
Referencia al formulario Kiranov OOP 15 31-01-2013 22:24:27
Parámetros por referencia a un .exe Parsec OOP 4 25-05-2012 20:19:28
Referencia a una const sleep25000 Varios 6 16-12-2011 10:55:36
Referencia circular Enan0 Varios 3 31-10-2006 22:56:26
Pasar el valor de un TEdit dentro de un StringGrid a otro TEdit que está fuera atirado Varios 4 11-09-2004 19:13:48


La franja horaria es GMT +2. Ahora son las 19:12:04.


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