Foros Club Delphi

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

superhopi 09-05-2003 14:15:02

checkbox
 
Tengo un formulario con muchos checkbox, y quiero que todos ellos me abran un mismo formulario, pero con una peculiaridad; que el caption del check sea el caption de ese nuevo formulario y ademas que pueda almacenar el nombre del check en una variable. Es un poco enreversado, pero, ¿puede hacerse?

kdetill 09-05-2003 14:31:12

Hola

Es sencillo. Tienes que hacer que todos los combos apunten al mismo procedimiento y en el poner algo asi

Código:

procedure TForm1.ComboBox1Change(Sender: TObject);
begin
    if Sender is TComboBox then
      begin
          //Llamada al siguente form
          Form1.ShowModal;
          Form1.Caption := TComboBox(Sender).Text;
          Form1.VariableEntrada := TComboBox(Sender).Name;
      end;
end;

Es un ejemplo, adaptalo mas o menos a tus necesidades.

Espero te sirva

Bacterion 09-05-2003 14:31:22

Claro que sí, pero para hacerlo desacoplado y que puedas usarlo en otras situacione s(osea no ligarlo al CheckBox por aquello de que hoy es checkbox mañana es primavera en el corte inglés :p (vamos que puede cambiar))

Supon que el formulario a crear es:
TMiMaravillosoForm

Haz, por ejemplo:
Variable o Propiedad o Función (pública) por la que le pases un string a almacenar (por ejemplo, el nombre del checkbox).

Ahora, el truco está en saber que el Sender de un evento es el objeto sobre el cual se realiza la acción (click, drag, etc...)

Llama a este form (supongamos que estamos en la función que crea el Form, por ejemplo, en el OnCheck, que tiene un parámetro Sender).

MiCheckBoxCheck(Sender: TObject);
begin
// un poner
with TMiMaravillosoForm.Create(Self)
try
Caption := TCheckBox(Sender).Text;
MiPropiedadMagica := TCheckBox(Sender).Name;
ShowModal;
finally
free;
end;
end;

Obviemente deberías declarar en TMiMaravillosoForm algo tal que:

TMiMaravillosoForm = class(TForm)
private
// solo si caso b
FNombreAGuardar: string;
public
// a
procedure AsignaNombreAGuardar(const Nombre: string);
// b
property NombreAGuardar: string read FNombreAGuardar write FNombreAGuardar;
// c
NombreAGuardar: string; // antes que esto, mejor b.
end;

Como verás, he usado b, pero con otro nombre...:D

superhopi 12-05-2003 10:32:46

ahora se me plantea otro problema, y es que desde el nuevo form que he hecho (hay muchos check y se me abre un unico form) quiero pasar el contenido de un memo al form de donde proceden los checks, y esto :
formprincipal.TDBMEMO(findcomponent('MEM'+ numero.caption).text:=formsecundario.memo.Text;
no me sirve (me da error seguido de "formprincipal.")
¿Como lo puedo hacer?:confused: :confused: :confused:


La franja horaria es GMT +2. Ahora son las 17:54:33.

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