Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Go Back   Foros Club Delphi > Principal > Varios
Register FAQ Members List Calendar Guía de estilo Today's Posts

Coloboración Paypal con ClubDelphi

Reply
 
Thread Tools Search this Thread Display Modes
  #1  
Old 28/03/2007
santiago14's Avatar
santiago14 santiago14 is offline
Miembro
 
Join Date: Sep 2003
Location: Cerrillos, Salta, Argentina
Posts: 585
Poder: 23
santiago14 Va por buen camino
Question matriz de controles

Tengo una duda, estoy haciendo unas ventanas que tienen una cantidad considerable de componentes. ¿Cómo hago una matriz de controles? Sería algo como:
Tengo 100 Edits y quiero ponerles el mismo nombre y diferenciarlos por algún número... a ver..
caja(1)
caja(2)
...
caja(100)

y poder poner los valores correspondientes en sus propiedades text solamente localizandolos por el número en la matriz.
No quiero ser comparativo pero en Visual Basic los componentes tienen una propiedad index la cual me permite armar esa matriz de controles y luego puedo encontrarlos a través de ese índice. Bien, supongo que delphi tiene algo similar pero por desgracia aún no lo encontré. Saludos.
__________________
Uno es responsable de lo que hace y de lo que omite hacer.
Reply With Quote
  #2  
Old 29/03/2007
roman's Avatar
roman roman is offline
Moderador
 
Join Date: May 2003
Location: Ciudad de México
Posts: 20,269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Hola,

Quote:
Originally Posted by santiago14
No quiero ser comparativo pero en Visual Basic los componentes tienen una propiedad index la cual me permite armar esa matriz de controles
De cuando alguna vez programé en VB, recuerdo que esa es una de las pocas cosas que se extrañan en Delphi. No obstante, no es difícil ingeniárselas para hacer algo similar.

Declara un arreglo de TEdit en tu formulario:

Código Delphi [-]
type
  TForm1 = class(TForm)
    (* Panel contenedor de los edits *)
    Panel1: TPanel;

    (* Edits insertados en el formulario *)
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Edit4: TEdit;
    ...

    private
      Edits: array of TEdit;
  end;

Coloca todos los Edit dentro de un mismo Panel que no contenga ningún otro control. Esto no es estrictamente necesario pero facilita el llenado del arreglo.

En el constructor del formulario pon:

Código Delphi [-]
procedure TForm1.FormCreate(Sender: TObject);
var
  I: Integer;

begin
  (* Asignas memoria para el arreglo *)
  SetLength(Edits, Panel1.ControlCount);

  (* Asignas los Edits del formulario al arreglo *)
  for I := 0 to Panel1.ControlCount - 1 do
    Edits[i] := TEdit(Panel1.Controls[i]);
end;

Con esto ya puedes manipular las propiedades de los edits del formulario através del arreglo Edits, por ejemplo:

Código Delphi [-]
var
  I: Integer;

begin
  for I := 0 to Panel1.ControlCount - 1 do
    Edits[i].Text := Format('Cuadro de edición %d', [i]);
end;

// Saludos
Reply With Quote
  #3  
Old 29/04/2007
anubis's Avatar
anubis anubis is offline
Miembro
 
Join Date: Mar 2007
Posts: 863
Poder: 20
anubis Va por buen camino
si, me pasa casi igual, tengo 4 edits que meti en un panel, imagino que los otros edits que estan fuera del panel tambien estan en el array.

la pregunta es, tengo esos 4 edits dentro del panel pero tambien tengo otros edits qu eno me interesa que esten fuera, hasta ahi es correcto la procedure que pusiste, pero a la hora de editar cada uno de esos edit, me usa el edit[i].text o edit1.text, porque en pantalla me sigue usando los edit originales y tampoco se como usar los edit[i] para ir cambiando de uno a otro sin usar un for y que valgan los onexit.

Perdon si no me explique bien.....
Reply With Quote
  #4  
Old 29/04/2007
roman's Avatar
roman roman is offline
Moderador
 
Join Date: May 2003
Location: Ciudad de México
Posts: 20,269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Quote:
Originally Posted by anubis
Perdon si no me explique bien
Estás perdonado. Ahora por favor explícate bien , que al menos yo, no entiendo lo que quieres hacer.

// Saludos
Reply With Quote
  #5  
Old 29/04/2007
anubis's Avatar
anubis anubis is offline
Miembro
 
Join Date: Mar 2007
Posts: 863
Poder: 20
anubis Va por buen camino
si gracias. A ver. Tengo un formulario con varios controles, entre ellos tedit, labels etc.
tal y como sugerias, genere un array con los tedit, y luego agrupe en un panel algunos edit, porque me interesa hacer calculos con ellos. los edit se siguen llamando precio, debe, y haber, y se siguen llamando asi aunque haya creado el array porque en las propiedades del objeto no puedo poner en el nombre edit[1]. Como manipulo entonces los eventos onexit, onkeypressed o simplemente cambio de un edit a otro para que se este usando el edit[i] en vez del edit precio, debe o haber?.

es un poco enrevesada la pregunta...

gracias
Reply With Quote
  #6  
Old 30/04/2007
roman's Avatar
roman roman is offline
Moderador
 
Join Date: May 2003
Location: Ciudad de México
Posts: 20,269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
La verdad es que sigo sin entender lo que buscas pero vamos a aclarar algunos puntos, y quizá de ahí puedas partir.

El colocar los edits dentro de un panel es nada más para facilitar la inicialización del arreglo mediante un ciclo for, pero si tienes varios controles mezclados y no todos ellos han de formar parte del arreglo, siempre puedes optar por hacer la asignación directa:

Código Delphi [-]
Edits[0] := UnEdit;
Edits[1] := OtroEdit;
Edits[2] := UnEditMas;

Ahora, para efectos de eventos asociados a estos edits, te conviene, además, asignar a cada edit el índice que ocupa en el arreglo. Esto puedes hacerlo en la propiedad Tag del edit.

Código Delphi [-]
(* Este ciclo se hace después de inicializar el arreglo *)
for J := 0 to Length(Edits) - 1 do
begin
  Edit[J].Tag := J;

  Edit[J].OnExit := EditExit;
  Edit[J].OnKeyPressed := EditKeyPressed;
  ...
end;

EditExit y EditKeyPressed son métodos que declaras manualmente con los mismos parámetros que los eventos normales:

Código Delphi [-]
type
  TForm1 = class(TForm)
  private
    procedure EditExit(Sender: TObject);
    procedure EditKeyPressed(Sender: TObject; var Key: Char);
  end;

Nota que los pones en la sección private, porque no los genera el IDE sino tú mismo.

Entonces, todos los edits del arreglo comparten los mismos manejadores de eventos, así que en éstos, debes distinguir cuál es el que está generando el evento, y para ello usas el Tag que asignaste:

Código Delphi [-]
procedure TForm1.EditExit(Sender: TObject);
var
  Edit: TEdit;

begin
  Edit := Sender as TEdit;
  case Edit.Tag of
    0: ...;
    1: ...;
    2: ...;
    ...
  end;
end;

// Saludos
Reply With Quote
  #7  
Old 30/04/2007
[egostar] egostar is offline
Registrado
 
Join Date: Feb 2006
Posts: 6,572
Poder: 27
egostar Va camino a la fama
Quote:
Originally Posted by anubis
si gracias. A ver. Tengo un formulario con varios controles, entre ellos tedit, labels etc.
tal y como sugerias, genere un array con los tedit, y luego agrupe en un panel algunos edit, porque me interesa hacer calculos con ellos. los edit se siguen llamando precio, debe, y haber, y se siguen llamando asi aunque haya creado el array porque en las propiedades del objeto no puedo poner en el nombre edit[1]. Como manipulo entonces los eventos onexit, onkeypressed o simplemente cambio de un edit a otro para que se este usando el edit[i] en vez del edit precio, debe o haber?.

es un poco enrevesada la pregunta...

gracias
Perdón que me entrometa, pero esto no seria mejor hacerlo con un StringGrid, digo, como si fuera una hoja de excel.

Salud OS.
__________________
"La forma de empezar es dejar de hablar y empezar a hacerlo." - Walt Disney
Reply With Quote
  #8  
Old 30/04/2007
anubis's Avatar
anubis anubis is offline
Miembro
 
Join Date: Mar 2007
Posts: 863
Poder: 20
anubis Va por buen camino
se agradece roman por la explicacion, voy aprobar. Gracias de nuevo.

egostar, aqui vale todo tipo de comentarios, asi aprendemos todos, tambien voy aprobar como funciona el stringGrid a ver como funciona.

voy a intentar buscar un manual donde vengan explicados los componentes asi no doy tanto la lata .
Reply With Quote
  #9  
Old 30/04/2007
anubis's Avatar
anubis anubis is offline
Miembro
 
Join Date: Mar 2007
Posts: 863
Poder: 20
anubis Va por buen camino
gracias roman, la cosa funciona.
egostar, de momento el tstringgrid no lo uso porque me lia un poco, tengo que investigar mas a ver como funciona.

gracias de nuevo
Reply With Quote
  #10  
Old 30/04/2007
anubis's Avatar
anubis anubis is offline
Miembro
 
Join Date: Mar 2007
Posts: 863
Poder: 20
anubis Va por buen camino
gracias roman, la cosa funciona.
egostar, de momento el tstringgrid no lo uso porque me lia un poco, tengo que investigar mas a ver como funciona.

gracias de nuevo
Reply With Quote
  #11  
Old 30/04/2007
anubis's Avatar
anubis anubis is offline
Miembro
 
Join Date: Mar 2007
Posts: 863
Poder: 20
anubis Va por buen camino
gracias roman, la cosa funciona.
egostar, de momento el tstringgrid no lo uso porque me lia un poco, tengo que investigar mas a ver como funciona.

gracias de nuevo
Reply With Quote
  #12  
Old 30/04/2007
roman's Avatar
roman roman is offline
Moderador
 
Join Date: May 2003
Location: Ciudad de México
Posts: 20,269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto


¿Piensas que no lo hemos visto o tu pc manda mensajes por su cuenta



// Saludos
Reply With Quote
  #13  
Old 01/05/2007
fjcg02's Avatar
[fjcg02] fjcg02 is offline
Miembro Premium
 
Join Date: Dec 2003
Location: Zamudio
Posts: 1,418
Poder: 24
fjcg02 Va camino a la fama
Inconscientemente le he dado una ostia al pc, pensando que estaba 'rayao' - es que vamos para mayores -

Saludos
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino -
Reply With Quote
  #14  
Old 01/05/2007
anubis's Avatar
anubis anubis is offline
Miembro
 
Join Date: Mar 2007
Posts: 863
Poder: 20
anubis Va por buen camino
gracias roman, la cosa funciona.
egostar, de momento el tstringgrid no lo uso porque me lia un poco, tengo que investigar mas a ver como funciona.

gracias de nuevo
Reply With Quote
  #15  
Old 01/05/2007
anubis's Avatar
anubis anubis is offline
Miembro
 
Join Date: Mar 2007
Posts: 863
Poder: 20
anubis Va por buen camino
mil disculpas, al enviar le di y me dio error, asi que le di a actualizar, normalmente me suelo fijar por si se envio.

Sorry.
Reply With Quote
Reply



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump

Similar Threads
Thread Thread Starter Forum Replies Last Post
matriz editable jsanchez OOP 11 20/01/2006 15:28
matriz 3 dimensiones Lidia SQL 2 12/12/2005 18:59
inverza de una matriz gulder Varios 7 15/11/2005 23:40
Imprimir matriz NuncaMas Impresión 6 19/11/2003 19:05
Guardar matriz? danytorres Varios 1 27/10/2003 04:10


All times are GMT +2. The time now is 05:30.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi