Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   optimizar el codigo en menos lineas (https://www.clubdelphi.com/foros/showthread.php?t=83707)

darkbits 18-07-2013 05:15:59

optimizar el codigo en menos lineas
 
este codigo me funciona perfectamente
lo utilizo para actualizar el valor utilizo, el mismo codigo utilizo en mas de 10 formularios. y tengo que copiarlos 1x1 para que funcione.

mi consulta es como puedo tener este codigo una sola vez, y que cada vez que lo necesite lo llame como una funcion o mejor como precedure
sin estar copiando 1x1 en cada form q necesito

es para optimizar el codigo en menos lineas nada mas.
ojo el sql y el codigo me funciona de pelo. lo unico quiero optimizar para que no sea pepetitivo mas de 10 veces en el proyecto.


Código Delphi [-]
procedure T_Sisterna.FormClose(Sender: TObject; var Action: TCloseAction);
begin
   _DM.consulta1.SQL.Text:='select * From sisterna Where op_sis='''+operador+'''';
   _DM.consulta1.Open;
    SpeedButton1.caption:= _DM.consulta1.FieldByName('e10').text +' TARJETAS 10BS';
    SpeedButton2.caption:= _DM.consulta1.FieldByName('e20').text +' TARJETAS 20BS';
    SpeedButton3.caption:= _DM.consulta1.FieldByName('e30').text +' TARJETAS 30BS';
    SpeedButton4.caption:= _DM.consulta1.FieldByName('e50').text +' TARJETAS 50BS';
    SpeedButton5.caption:= _DM.consulta1.FieldByName('e100').text +' TARJETAS 100BS';
    SpeedButton6.caption:= _DM.consulta1.FieldByName('e100c').text +' CABINAS 100BS';
 
end;

ElKurgan 18-07-2013 07:56:39

Hombre, si todos los formularios tienen los mismmos botones y los mismos nombres no es difícil. Te creas una unit que contenga la función a compartir de este modo:

Código Delphi [-]
 
procedure ActualizarBotones(Formulario: TForm; operador: string );
begin
   _DM.consulta1.SQL.Text:='select * From sisterna Where op_sis='''+operador+'''';
   _DM.consulta1.Open;
    Formulario.SpeedButton1.caption:= _DM.consulta1.FieldByName('e10').text +' TARJETAS 10BS';
    Formulario.SpeedButton2.caption:= _DM.consulta1.FieldByName('e20').text +' TARJETAS 20BS';
    Formulario.SpeedButton3.caption:= _DM.consulta1.FieldByName('e30').text +' TARJETAS 30BS';
    Formulario.SpeedButton4.caption:= _DM.consulta1.FieldByName('e50').text +' TARJETAS 50BS';
    Formulario.SpeedButton5.caption:= _DM.consulta1.FieldByName('e100').text +' TARJETAS 100BS';
    Formulario.SpeedButton6.caption:= _DM.consulta1.FieldByName('e100c').text +' CABINAS 100BS';
end;

Y la llamarías, por ejemplo, así:

Código Delphi [-]
 
procedure T_Sisterna.FormClose(Sender: TObject; var Action: TCloseAction);
var
  Formulario: TForm;
begin
  Formulario := TForm(Sender);
  ActualizarBotones(Formulario, operador); // Supongo que "operador" es alguna variable de todos los formularios
end;

Lo escribo de cabeza, no lo he probado, pero debería funcionar (más o menos)

saludos

gatosoft 19-07-2013 03:41:52

Otra posibilidad, si los botones hacen lo mismo en cada formulario, podría ser utilizar un TFrame para definir allí los botones una sola vez e "incrsutar" el TFrame donde corresponda. De ésta manera, el mantenimeinto lo tendrías que ahecr en un solo sitio.

ElKurgan 19-07-2013 07:45:21

Muy cierto, no había caído en los Frames. Alguna vez los he usado y la verdad, son muy potentes.

Gracias por la aclaración

ozsWizzard 19-07-2013 13:12:12

Casi mejor crear un formulario padre con esa parte y que el resto de formularios hereden de ahí. No sé si lo habrán arreglado ya, pero hay un bug en la programación de los Frames (yo he trabajado con Delphi 7 y XE2 y en ambos pasa) y a veces los componentes pierden los eventos programados.

Saludos

Casimiro Notevi 19-07-2013 13:32:40

Cita:

Empezado por ozsWizzard (Mensaje 464139)
Casi mejor crear un formulario padre con esa parte y que el resto de formularios hereden de ahí. No sé si lo habrán arreglado ya, pero hay un bug en la programación de los Frames (yo he trabajado con Delphi 7 y XE2 y en ambos pasa) y a veces los componentes pierden los eventos programados. Saludos

Pues nunca me ha pasado y los uso habitualmente en todos los proyectos, desde delphi 4 :)


La franja horaria es GMT +2. Ahora son las 07:37:54.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi