Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Duda sobre Edits (https://www.clubdelphi.com/foros/showthread.php?t=46825)

jhonny 11-08-2007 01:35:45

Duda sobre Edits
 
No recuerdo quien pregunto algo al respecto, de ¿Como guardar en unas variables Extended, los valores que tenian en unos Edits (Eran como 20) de un Form, sin necesidad de asignarle uno por uno?:

Recuerdo que sugerimos manejar las variables como un Array de Extended, y yo presente una solución que al final quedo asi, con el argumento que explicare al final de este post:

Código Delphi [-]
var
  a :Array of Extended;
  x :Integer;
begin
  SetLength(a, 0);
  for x := 0 to ComponentCount - 1 do
    if Components[x] is TEdit then
    begin
      SetLength(a, Length(a)+1);
      a[High(a)] := StrToFloatDef(TEdit(Components[x]).Text, -1);
    end;
end;

Dije que esta función tiene como ventaja, el hecho de que no hay que tener en cuenta el nombre de los Edit, ni tampoco su cantidad, de manera que si alguien coloca un nuevo Edit (Ya sea en Diseño o ejecución) esta función lo tendra en cuenta, sin necesidad de modificar el Array(Manualmente), porque de hecho, para eso le llaman dinamico :D.

Espero que esto sirva ;) :D

ArdiIIa 11-08-2007 02:07:00

jhonny . Yo creo que ahora tenemos respuesta sin pregunta...:)
Ciertamente ayer se habló del asunto.

jhonny 11-08-2007 02:13:49

Cita:

Empezado por ArdiIIa (Mensaje 222026)
jhonny . Yo creo que ahora tenemos respuesta sin pregunta...:)
Ciertamente ayer se habló del asunto.

Parece que si :D, pero es que no queria que ese codigo se quedara tan solito en mi computador, sabiendo que alguien lo necesitaba :D

Kamael 11-08-2007 11:16:01

Gracias jhonny
 
Lo dicho. Me funciona perfectamente.

ContraVeneno 11-08-2007 18:20:38

¿no hubiera sido más facil usar un TJvValidateEdit?

Viene en las Jedi y son gratis. :D

jhonny 11-08-2007 18:32:38

Cita:

Empezado por ContraVeneno (Mensaje 222189)
¿no hubiera sido más facil usar un TJvValidateEdit?

Viene en las Jedi y son gratis. :D

Parece que voy a tener que comenzar a conocer las Jedi :D :D :D

ContraVeneno 11-08-2007 19:06:26

Pues será mi mania de controlar lo más que se pueda con los controles, para evitar lo más que se pueda el tener que escribir el código.

Este componente, tiene una propiedad llamada "DisplayFormat", en donde puedes seleccionar una de 16 opciones, no las recuerdo todas, pero al seleccionar una, te ajusta automáticamente el control para que solo permita ese tipo de opción. Float, Currency (igual que el float pero le agrega el símbolo de moneda al inicio) hexadecimal, decimal, alpha, alphanumeric, boolean y mucha sotras.

Y lo mejor, es que este control te permite seleccionar el tipo de dato por código (Control.AsFloat, AsInteger, AsBoolean, AsCurrency) para que no tengas la necesidad de hacer conversiones por código.

jhonny 11-08-2007 19:22:41

Ahhh, bueno, segun lo que te entiendo es que esos controles te permiten manejar los tipos de datos que alli se trabajen tal y cual como un campo de un DataSet...

Pero lo que necesitamos es guadar en un arreglo, los datos de 20 Edit en Form sin necesidad de asignar, uno por uno.

Mejor dicho, según lo que te entendi, de todas maneras abria que hacer codigo y quedaria algo asi:

Código Delphi [-]
var
  a :Array of Extended;
  x :Integer;
begin
  SetLength(a, 0);
  for x := 0 to ComponentCount - 1 do
    if Components[x] is TJvValidateEdit then
    begin
      SetLength(a, Length(a)+1);
      a[High(a)] := TJvValidateEdit(Components[x]).AsFloat;
    end;
end;

La unica diferencia radicaria en que ya no tengo que hacer la conversión con la función StrToFloatDef, si no que aprovecho la propiedad del TJvValidateEdit para realizar el ejercicio.

ContraVeneno 11-08-2007 19:52:31

Yo entendí que quería convertir de String a Float pero sin tener que usar la función strtofloat en cada uno.

:D


La franja horaria es GMT +2. Ahora son las 09:53:44.

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