Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Error: Sobreescribir Formulario ? (https://www.clubdelphi.com/foros/showthread.php?t=29756)

Jesús Pena 31-01-2006 20:50:41

Error: Sobreescribir Formulario ?
 
Resulta que tengo la siguiente estructura de código creada

Código Delphi [-]
 frmClientes := nil;
frmClientes := TfrmClientes.Create(Self);
try
frmClientes.pCliente := DBECliente.EditText; //pCliente una propiedad del formulario
frmClientes.ShowModal;
finally
frmClientes.Free;
end;

dicha propiedad está definida de la siguiente forma
Código Delphi [-]
 
bCliente : String;
procedure SetCliente(const Cliente : String);
public
{ Public declarations }
property pCliente:String read bCliente write SetCliente;
.........
.........
.........
procedure TfrmClientes.SetCliente(const Cliente: String);
begin
with dmClientes.IBTClientes do
begin
Insert;
FieldByName('TELEFONO').AsString := Cliente;
Post;
Edit;
end;
end;

La intención es que cuando muestre el formulario si la propiedad tiene algún valor actue en consecuencia (es decir que inserte un registro y el formulario actue en consecuencia). Otra manera que se me ocurre es sobreescribir el métod ShowModal del tipo frmxxxxxx.Showmodal(cliente) pero no sé como hacerlo dado que como lo estoy haciendo me dá un error diciendo que no puede sobreescribir una ventana que está oculta (o algo parecido)

roman 31-01-2006 22:06:32

La verdad es que no me queda claro cuál es el problema. Según describes, quieres que se inserte un registro al momento de mostrar el formulario en caso de que la propiedad tenga algún valor. Entonces no es SetCliente donde debes insertar el registro ya que SetCliente se ejecutará independientemente de si muestras o no el formulario. En todo caso, que SetCliente asigne el valor a un campo privado y en el evento OnShow del formulario examinas la propiedad e insertas el registro.

Por otro lado, ni siquiera entiendo cuál es el error que se produce. Dices:

Cita:

Empezado por Jesús Pena
Otra manera que se me ocurre es sobreescribir el métod ShowModal del tipo frmxxxxxx.Showmodal(cliente) pero no sé como hacerlo dado que como lo estoy haciendo me dá un error diciendo que no puede sobreescribir una ventana que está oculta (o algo parecido)

¿O sea que el error sólo ocurre cuando intentas sobreescribir el metódo ShowModal? Y entonces, en otro caso, ¿cuál es el problema?

Y una cosa más, yo creo que si pides ayuda, lo mínimo es que te esfuerces un poco. Decir "algo parecido" para describir al error que aparece no es suficiente. Si el problema es que sale en inglés y no sabes exactamente como traducirlo pues escríbelo tal cual y ya aquí veremos qué dice.

// Saludos

Jesús Pena 31-01-2006 23:32:12

Perdón por la falta de claridad en la explicación
 
:rolleyes: El mensaje que aparece es
Código:

Cannot focus a disabled or invisible window
y se producia al establecer el valor de la propiedad en
Código:

frmClientes.pCliente := DBECliente.EditText;
La solución que planteas tú ya he pensado en ella y voy a probarla ahora mismo.

Si no doy con la solución seguiré planteando mis dudas en este mismo hilo.

Aprobecho para dar las gracias por vuestra atención y por el tiempo empleado en ayudarme. Pues eso GRACIAS :rolleyes:


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

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