FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Como sería ese PHP en delphi?
Hola. Quiero hacer una estructura repetitiva en la cual el nombre de un objeto vaya tomando diferentes nombres:
tengo una caja de texto con un name: textbox1 en php tendría esta forma: Código PHP:
Ese código php cómo se mostraría en lenguaje Delphi? Gracias Saludos |
#2
|
||||
|
||||
¿Exactamente dónde tienes el problema? Porque el bucle es bien simple, o eso me parece.
|
#3
|
|||
|
|||
el problema es como se escribe en delphi
|
#5
|
|||
|
|||
gracias por la respuesta, pero lo que mas me interesaría es saber como se le cambia el nombre a un objeto dentro del bucle
en php es: name='textbox.$iPos' y en delphi? |
#6
|
||||
|
||||
Hola,
Bueno. Antes de nada deja que rectifique el código del bucle que he mostrado antes, y es que, ni siquiera compilaría. Últimamente escribo más PHP que Delphi, de ahí el error que se aprecia. He aquí el bucle modificado:
La diferencia está en la condición "i <= 10", que, en Delphi, no está permitida. Otrosí, es posible indicar un entero, de forma que el bucle terminará cuando "i" alcance su valor. Respecto de cambiar el nombre de un objeto... tú sabrás para qué demonios quieres hacerlo (claro está, por otro lado), pero, en todo caso, es posible y aquí se muestra cómo:
El anterior código recorre todos los controles de un supuesto formulario. A cada paso por el bucle se comprueba si un determinado control es un "TEdit". Y, si es así, cambiamos el nombre del "TEdit", siendo dicho nombre el que ya tiene, añadiéndole el valor de "i". Dicho más pronto, el operador de concatenación de cadenas, que en PHP es un punto ".", en Delphi es un signo más "+". |
#7
|
|||
|
|||
Hola.
la palabra "self" que aparece el el codigo no la detecta. dice que una expresion no identificada.. |
#8
|
||||
|
||||
Self es el nombre del formulario que contiene los elementos de los cuales estamos hablando.
Por si acaso para que no haya confusiones.... Edit.name es el Nombre del objeto Edit.text es el valor que contiene el objeto |
#9
|
|||
|
|||
es que creo que no me comprendió bien.
Los Edits no están creador inicialmente. A medida que hace el for, van apareciendo los cajones de texto. En php, para que algo se muestre en pantalla es con "echo". Cual es su equivalente en delphi? |
#10
|
||||
|
||||
el equivalente es sería :
Código:
showmessage('Hola Mundo'); Código:
showmessage(Edit1.text) |
#11
|
|||
|
|||
Explico mi caso particular.
Se trata de un calendario. Usando un datetimepicker se selecciona una fecha (06/08/2008), por ejemplo. Cuando la fecha ha sido seleccionada, se pulsa un botón y cuando se pulsa el botón debe ejecutar este código (en PHP): Código PHP:
>Se inicia el programa. Hace el primer input y sale un cuadro que se llama 1. Como que 1 es inferior a 10 me crea otro cuadro que se llama 2... No creo que en delphi varie mucho a PHP. Algo como:
no serviría? P.D: faltan los controladores para que haga el salto de linea cuando llegue a domingo. |
#12
|
||||
|
||||
Supongo que querrás algo como esto..... dinos algo
Código:
procedure TForm1.Button1Click(Sender: TObject); var i,cizq,ctop:integer; begin cizq:=10; ctop:=10; for i:=0 to 10 do begin with TEdit.Create(Self) do begin Parent := form1; Top := ctop; Left := cizq; Width := 100; Name := 'Edit' + inttostr(i); Text := 'Dentro Edit ' + inttostr(i); ctop:=ctop +(Height+15); end; end; end; |
#13
|
|||
|
|||
with TEdit.Create(Self) do
Dice que el Self: Undeclared Indentifier |
#14
|
||||
|
||||
es muy raro que Self no te lo reconozca.... bueno cambialo por el nombre de tu formulario por ejemplo ...
Código:
with TEdit.Create(form1) do |
#15
|
|||
|
|||
Excelente! Funciona a la perfeccion!
Muchisimas gracias de nuevo amigo. Creo que te voy a contratar |
#16
|
|||
|
|||
!!!!!!!
Hola. El código funciona correctamente, pero hoy estaba haciendo el calendario para mas de un mes y me ha salido un error. Cuando se crean los Edit en el primer mes, los Name de cada cajon se quedan guardados en memoria, entonces cuando selecciono el segundo mes, me sale un error y dice que Edit1 ya existe. Los nombres se quedan grabados y no deja repetirlos. Esto se puede solucionar liberando la memoria o algo parecido? |
#17
|
||||
|
||||
Logicamente si están creados no puedes crear otros con el mismo nombre. Como realmente no se lo que haces tampoco te puedo orientar.... pero puedes hacer lo siguiente; Buscar el componente si esta creado no lo creas y si no lo está lo creas.
Para destruir un edit pues sencillo....
|
#18
|
|||
|
|||
mirar si está creado no serviría porque siempre detectaría que edit1 hasta edit31 existe y haría más codigo.
Me decanto más por la destruccion del edit. Pero donde pones "x" es el numero de componente, si es edit1, pongo: form1.controls[edit1].destroy; no? |
#19
|
||||
|
||||
No, x es el número por orden de creación del componente. aunque si quieres también puedes utilizar lo siguiente:
Dónde editx es el nombre del componente a destruir. Ya me dirás como te va.... Última edición por tcp_ip_es fecha: 07-08-2008 a las 12:34:59. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
cual seria el motherboard perfecto | kurono | Debates | 24 | 19-05-2008 15:35:14 |
¿El uso de firebird como una base seria no es tan correcto? | IVAND | Firebird e Interbase | 31 | 18-12-2007 21:42:45 |
cual seria el componente correcto? | DM2005 | Varios | 0 | 04-07-2006 21:55:39 |
Cual seria lo ideal? | Coco_jac | Gráficos | 1 | 10-06-2005 01:38:42 |
¿Qué seria el mundo sin la Microsoft? | Sasuke_Cub | Debates | 10 | 21-04-2005 07:39:43 |
|