Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 12-08-2011
jsc jsc is offline
Miembro
 
Registrado: nov 2003
Posts: 144
Poder: 21
jsc Va por buen camino
mostrar una u otra form segun boton pulsado

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
Cita:
if (sender as TButton) = form1.Button1 then form := TForm2.Create (Form2) ;
if (sender as TButton).caption = form1.Button2 then form := Tform3.Create (Form3) ;
if (sender as TButton).caption = form1.Button3 then form := Tform4.Create (Form4) ;
de manera que
Código:
form:=TForm2.Create(Form2)
valdria para todos los forms?
algo asi:
Cita:
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?

he hecho pruebas pero luego me da problemas al acceder a componentes de la form que se muestra, con el codigo que tenga dicha form
pongo ejemplo tonto:

Cita:
procedure inicializarvariables () ;
begin
//codigo
Form2.edit1.clear ;
end;

procedure TForm2.Form2.OnCreate (sender:Tobject)
begin
Form2.Button1.caption := 'hola'
end;

procedure TForm2.Form2.OnShow (sender:Tobject)
begin
//codigo cuando se muestra la form
inicializarvariables () ;
end;
gracias de antemano
Archivos Adjuntos
Tipo de Archivo: rar pruebaprog.rar (11,6 KB, 3 visitas)
Responder Con Cita
  #2  
Antiguo 12-08-2011
jsc jsc is offline
Miembro
 
Registrado: nov 2003
Posts: 144
Poder: 21
jsc Va por buen camino
si sustituyo el codigo por este otro:
Cita:
procedure TForm2.Form2.OnCreate (sender:Tobject)
begin
Button1.caption := 'hola'
end;

procedure TForm2.Form2.OnShow (sender:Tobject)
begin
edit1.clear ;
end;
no me da problemas; ahora bien si llamo a una funcion es donde vienen los problemas
Cita:
procedure inicializarvariables () ;
begin
Form2.edit1.clear ; {claro esta que no puedo poner edit1.clear porque no reconoce el edit1}
end;

procedure TForm2.Form2.OnShow (sender:Tobject)
begin
inicializarvariables () ;
end;
por lo tanto deduzco que el problema esta cuando accedo a los componentes de la form, haciendo referencia con su propio nombre;
Cita:
Form2."nombre componente" etc...
pero a la hora de programarlo si lo compilo no da problemas

espero estar explicandome
alguna ayuda ? en t
Responder Con Cita
  #3  
Antiguo 12-08-2011
jsc jsc is offline
Miembro
 
Registrado: nov 2003
Posts: 144
Poder: 21
jsc Va por buen camino
bueno,
finalmente lo he conseguido con este codigo:
Cita:
unit Unit2;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm2 = class(TForm)
Button1: TButton;
Label1: TLabel;
Label2: TLabel;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

implementation

{$R *.dfm}

procedure inivar (form:tobject);
begin
with (form as tform2) do
begin
Label1.Caption := 'esto es label 1' ;
Label2.caption := 'esto es label 2' ;
end;
end;

procedure TForm2.Button1Click(Sender: TObject);
var form2 : tobject ;
begin
inivar (form2) ;
// label1.Caption := 'esto es label 1' ;
// label2.caption := 'esto es label 2' ;
end;

procedure TForm2.FormCreate(Sender: TObject);
begin
with (sender as tform2) do
label1.Caption := 'hola' ;
end;

end.
alguien sabria decirme si de esta manera al tener tantas referencias... el programa pudiera volverse loco en algun momento y lanzar excepciones, si consumiria más memoria... ?
gracias
adjunto el proyecto pruebas para mas detalles
Archivos Adjuntos
Tipo de Archivo: rar pruebas-ok.rar (7,5 KB, 3 visitas)
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
mostrar form segun boton pulsado jsc OOP 1 11-08-2011 12:37:22
Como saber desde que Form hemos pulsado un boton? Delphitest Varios 4 10-03-2008 18:47:04
Controlar cuando se ha pulsado un botón en otra unidad (propiedades) David OOP 9 17-11-2007 21:08:45
como se si he pulsado un boton ercrizeporta Varios 11 03-04-2007 13:56:56
he pulsado el botón enviar?? valentine API de Windows 7 02-06-2004 17:21:54


La franja horaria es GMT +2. Ahora son las 18:22:24.


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
Copyright 1996-2007 Club Delphi