Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Como se hace (https://www.clubdelphi.com/foros/showthread.php?t=3571)

omy 11-09-2003 19:26:03

Como se hace
 
Hola a todos estaba trabajando y me tope con un error a ver si alguien me pidiera ayudar




procedure TForm3.FormClose(Sender: TObject; var Action: TCloseAction);
var i,o:integer;
control,nombre,resul :string;
com:Tobject;
com2:Tedit;
com3:tcontrol;
begin
// ---------------------------------------------------
o := form3.ComponentCount;
for i := 0 to form3.ComponentCount-1 do
begin
control := form3.Components[i].ClassName;
if control = 'TEdit' then
begin
resul := form3.Components[i].Name + '.text';
// aqui lo que no pude hace es que el valor de
resul concatenado con .text, lo convirtiera en
una macro, esto para poder saber el valor de
campo.

end;
end;
end;



Espero averme dado a enender, se trata de hacer macros, o algo como en php: eval , o con los signos $$, una solucion parecida
nota. Ejecutar codigo en tiempo de ejecucion.

Ruben_Cu 12-09-2003 04:07:27

Hola omy, tu pregunta está un poco confusa, creo que por eso no te han contestado.
Si lo que quieres es tener en la variable resul el contenido del edit debes ubicar la propiedad text donde tienes la propiedad name, si el resto de lo que tienes hecho está bien tendras en resul el string contenido en el edit.
Creo que confundes el Name de la componente que es un string con la componente en sí que es un TComponent.
Debes profundizar un poco en OOP.
Espero haberte ayudado
Saludos

Rudi 12-09-2003 05:15:54

Hola, a ver si entiendo basandome en tu pregunta y en la aclaratoria de Ruben.

1.- Tienes un solo Tedit en tu Form y Quieres saber que contiene ese edit?

o

2.-Tienes varios Tedit en tu form y quieres que resul guarde algo como:

Resul = 'Edit1=hola;Edit2=algo; ...Editn=noseque;'

siendo 'hola' el texto que contiene Edit1 y 'algo' el texto que contiene Edit2 y asi hasta tener el nombre y contenido de cada edit.

si es la primera sigue la sugerencia de Ruben

si es la segunda:

procedure TForm3.FormClose(Sender: TObject; var Action: TCloseAction);
var
i : integer;
resul :string;
begin
Resul := '';
for i := 0 to form3.ComponentCount-1 do
if form3.Components[i].ClassName = 'TEdit' then
with form3.Components[i] as Tedit do
resul := Resul + Name + '=' + text + ';';
{haces lo que hagas con resul}
end;

espero que te sirva

omy 12-09-2003 19:14:19

Gracias a los dos, la verdad es que no encantraba.


with ...... as ..... do


este era el que necesitaba, muchas gracias me salvastes de dejar un codigo extenso un amigo me dijo que si hay pero no sabia como se llamaba o como era, lo busque como eval...

bueno gracias......

como referencia el problema era que tengo mas de 30 tedit y necesitaba saber cual de ellos tienen valor y cuales no, ademas los valores se concatenaban junto con el nombre del boton

Rudi 12-09-2003 20:02:03

Que bueno que te ayudó.

Cita:

Mensaje original por omy
with ...... as ..... do
Solo como aclaratoria ya que me parece que estas muy claro con sentencias del lenguaje pascal/objectpascal.
la sentencia with es: with....do, el 'AS' lo utilizo como un typecast para tener acceso a los metodos del edit.
haciendo una equivalencia, seria igual decir:
form3.Components[i] as Tedit

que decir

Tedit(form3.Components[i])

por tanto seria igual:

with form3.Components[i] as Tedit do

que decir

with Tedit(form3.Components[i]) do

en dos palabras el 'AS' no pertenece al with...


La franja horaria es GMT +2. Ahora son las 22:47:29.

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