FTP | CCD | Buscar | Trucos | Trabajo | Foros |
#1
|
|||
|
|||
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.
__________________
omar velazquez |
#2
|
|||
|
|||
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 |
#3
|
|||
|
|||
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 |
#4
|
|||
|
|||
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
__________________
omar velazquez |
#5
|
|||
|
|||
Que bueno que te ayudó.
Cita:
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... |
|
|
|