PDA

Ver la Versión Completa : Problemas con Create(Self)


camiz
17-02-2014, 05:56:44
nuevamente por aqui quisiera que me ayudaran con este codigo

with TfrmCrearClave.Create(Self) do
try
if ShowModal = mrCancel Then
Self.Close;
finally
Free;
end;

cuando llamo este formulario hay restricciones como : el caption del form no se puede borrar o cambiar no puedo guardar datos de los edit a la base de datos


frmCrearClave.Caption := '';


pero cuando cambio a

frmCrearClave.ShowModal;
si funciona perfecto. pero esta no es la manera que necesito. algun aporte .

ElKurgan
17-02-2014, 07:21:39
Todo depende de el sitio donde intentas inicializar la variable caption. Además, si estás utilizando la variable frmCrearClave, ¿para que estás creando el formulario al vuelo?

Yo haría lo siguiente:


with TfrmCrearClave.Create(nil) do
try
Caption := '';
if ShowModal = mrCancel Then
Close;
finally
Free;

end;end;



Saludos

camiz
17-02-2014, 16:39:58
ElKurgan gracias por contestar
lode el caption del formulario era solo un ejemplo de lo que no se puede hacer al crear el formulario, lo que pasa es que mi aplicacion se inicia y compueba si existen registros en una tabla de mi base de datos y si no hay me crear este formulario para crear un registro en este caso un usuario de acceso a la aplicacion lo que pasa es para guardar los datos ingresados en los edit los guarda en blanco mas claro no toma el texto del edit para guardar a la bd.

pero si a este formulario lo llamo de esta manera frmCrearClave.ShowModal; guarda perfecto la informacion de los edit en la base de datos. espero encontrar el problema

ElKurgan
18-02-2014, 12:55:51
Yo lo decía por que hay un tema claro: Si el objeto (el formulario) no está creado no se puede acceder a sus propiedades.
Cuando creas el form con la instrucción


with TfrmCrearClave.Create(nil) do



Estás creando un nuevo formulario, y hasta que no termine de crearse no se puede acceder a sus propiedades.
No es el caso de la línea


frmCrearClave.ShowModal;


En este caso, la variable está apuntando a un objeto QUE YA HA SIDO CREADO, seguramente en el código del proyecto (archivo DPR), donde tendrás una línea más o menos como esta antes de llamar al método "Run":


Application.CreateForm(TfrmCrearClave, frmCrearClave);


En este caso, el objeto ya existe y se puede acceder a todos sus métodos normalmente. Espero haberte aclarado este punto

Saludos

camiz
18-02-2014, 18:30:19
ElKurgan, Gracias por tu aporte ahora si ya entendi porque el problema ahora si puedo buscarle una solucion.^\||/