Form como parámetro para otro form
Publicado por Ciclope (29 intervenciones) el 18/07/2020 12:08:41
Hola,
Lo que pretendo es mostrar mensajes personalizados con un form.
Estoy intentando que un procedure me sirva para todos los forms de altas, modificaciones, etc, cuando se han introducido o dejado datos erróneos, y evitar así tener que repetir el código en todos los forms de altas... (unos 40).
El problema es que al enviar el propio form y un panel como parámetros al procedure, para verificar que los datos son correctos me da errores.
El nombre de los ficheros, por ejemplo, en diseño y en el edit, por defecto llevan 2 equis (Edit.Text: [NombreFichero]XX), para indicar que en el lugar de las equis hay que poner un número.
Así: procedure ShowMSG(fForm: TForm; oContainer: TPanel);
Llamada en el evento OnClick de button "Guardar": ShowMSG(MiForm,MiPanel);
He probado con varias opciones pero no lo consigo.
Muchas gracias y un saludo.
Lo que pretendo es mostrar mensajes personalizados con un form.
Estoy intentando que un procedure me sirva para todos los forms de altas, modificaciones, etc, cuando se han introducido o dejado datos erróneos, y evitar así tener que repetir el código en todos los forms de altas... (unos 40).
El problema es que al enviar el propio form y un panel como parámetros al procedure, para verificar que los datos son correctos me da errores.
El nombre de los ficheros, por ejemplo, en diseño y en el edit, por defecto llevan 2 equis (Edit.Text: [NombreFichero]XX), para indicar que en el lugar de las equis hay que poner un número.
Así: procedure ShowMSG(fForm: TForm; oContainer: TPanel);
Llamada en el evento OnClick de button "Guardar": ShowMSG(MiForm,MiPanel);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
procedure ShowMSG(fForm: TForm; oContainer: TPanel);
var i: Integer;
begin
// for i := 0 to (fForm.oContainer.ControlCount - 1) do begin {Error de oContainer no identificado}
{Error de Missing operator or semicolon en las 4 primeras líneas siguientes}
for i := 0 to fForm(oContainer).ControlCount - 1 do begin {Lo he probado con ComponentCount pero tampoco funciona}
if (fForm(oContainer).Controls[i] is TEdit) then begin
if ContainsText(TEdit(fForm(oContainer).Controls[i]).Text,'XX') then begin {Si hay 2 equis seguidas, el nombre es incorrecto}
TEdit(fForm(oContainer).Controls[i]).SetFocus;
cKeyMSG := 'FileErrorXX'; {Al crear el form de abajo, para mostrar mensaje personalizado, busca este valor en una table}
{Los valores string de los distintos campos muestran y describen el/los error/es}
Application.CreateForm(TF_ShowMSG,F_ShowMSG);
try
F_ShowMSG.ShowModal;
finally
FreeAndNil(F_ShowMSG);
end;
end;
end;
end;
end;
He probado con varias opciones pero no lo consigo.
Muchas gracias y un saludo.
Valora esta pregunta


0