Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   mostrar form segun boton pulsado (https://www.clubdelphi.com/foros/showthread.php?t=75295)

jsc 11-08-2011 10:06:10

mostrar form segun boton pulsado
 
hola,
me estoy volviendo loco y no consigo resultado. a ver si podeis ayudarme

tengo un "panel" que utilizo en plan menu con varios botones "clientes" "facturas"... en una form (form1)

cuando pulso un boton, abre su correspondiente form dentro del form1 (el form1 actua como ventana padre)
a su vez, dimensiono la form para que se muestre correctamente en el form1

la cuestion es que estoy intentando hacer, un procedimiento comun que sirva para el evento onclick de cada boton; asi, el codigo para redimensionar la form que hay que abrir, asignar el "parent"... tendria que ponerlo solo una vez

intento esto:

Código:


procedure abreform (sender :tobject)
var form : string ;
 begin
  form := (sender as tbutton).caption ;
  application.createform ((form as tform),form) ;
  (form as tform).show ;
  (form as tform).parent := form1 ;
  (form as tform).top := form1.top-....
end;

procedure form1.clientes.onclick (sender :tobject)
begin
  abreform (sender) ;
end;

procedure form1.facturas.onclick (sender :tobjec)
begin
  abreform (sender) ;
end;

e intento evitar tener que "duplicar" para cada boton
Código:

procedure form1.clientes.onclick (sender :tobject)
begin
  application.createform(tformclientes,formclientes);
  formclientes.show ;
  formclientes.parent :=  form1 ;
  formclientes.top:= ...
end;

procedure form1.facturas.onclick (sender :tobject)
begin
  application.createform(tformfacturas,formfacturas);
  formfacturas.show ;
  formfacturas.parent :=  form1 ;
  formfacturas.top:= ...
end;

es posible hacer algo de esto?
gracias por la ayuda

jsc 11-08-2011 12:37:22

1 Archivos Adjunto(s)
he llegado a conseguir lo que quiero pero quisiera todavia reducir más código
a ver si podeis ayudarme

adjunto un ejemplo tonto para ver lo que quiero conseguir (delphi 7)

pulsando el boton 1 se muestra form2
pulsando el boton 2 se muestra form3

se podria reducir el codigo
Código:

  if (sender as TButton).caption = 'Button1' then form := TForm2.Create (Form2) ;
  if (sender as TButton).caption = 'Button2' then form := Tform3.Create (Form3) ;
  if (sender as TButton).caption = 'Button3' then form := Tform4.Create (Form4) ;

de manera que
Código:

form:=TForm2.Create(Form2)
valdria para todos los forms?
algo asi:
Código:

form := ('T'+variable).Create(variable)
donde "variable" seria por ejemplo el caption del boton; en este caso, form2, form3,form4

podria hacerse algo ó lo máximo que puede reducirse es como en el ejemplo que he puesto?

gracias de antemano


La franja horaria es GMT +2. Ahora son las 22:49:39.

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