Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   C++ Builder (https://www.clubdelphi.com/foros/forumdisplay.php?f=13)
-   -   Manipulacion de propiedades de objeto (https://www.clubdelphi.com/foros/showthread.php?t=88581)

kagua77 28-06-2015 00:34:23

Manipulacion de propiedades de objeto
 
Hola buenas tardes, me podran ayudar con lo siguiente, tengo la siguiente forma


y el siguiente codigo



quiero usar un solo codigo y no repertirlo, es decir quiero que cuando presione el numero 1, y decir al codigo que estoy en Edit1, y lo inserte ahi, igual decirle que estoy en Edit2 e insertarlo ahi

Es decir algo asi:
Código PHP:

void __fastcall TForm1::Button1Click(TObject *Sender)
{
   if(
estas usando Edit1)
      
EditGlobal Edit1;
  if(
estas usando Edit2)
      
EditGlobal Edit2;
  if(
estas usando Edit3
     
EditGlobal Edit3;
  
EditGlobal->Text=EditGlobal-Text "1";



y que la momento de presionar boton con el numero 1, lo inserte en el Edit que estoy usando(para saber cual Edit estoy usando no hay problema)

Gracias, Saludos

ecfisa 28-06-2015 02:00:13

Hola kaua77.

Si no te interpreté mal, podes aprovechar la propiedad Tag de los TButtons para almacenar el número que representan y usar el mismo evento OnClick para todos los botones.

Ejemplo:
Código PHP:

/* Asignar los números de botones a la prop. Tag */
void __fastcall TForm1::FormCreate(TObject *Sender)
{
  for ( 
int i 110i++) {
    
TButton *bt static_cast<TButton*>(FindComponent("Button" IntToStr(i)));
    if (
btbt->Tag i;
  }
}

/* Asigna este código al evento OnClick de los 9 botones */
void __fastcall TForm1::ButtonsClick(TObject *Sender)
{
  
TButton *bt static_cast<TButton*>(Sender);
  
Edit1->Text Edit1->Text IntToStr(bt->Tag);


Fijate que lo anterior tiene validez si los botones se llaman Button1, Button2,..., Button9. De otro modo tendrás que cambiar, en el evento OnCreate por los nombres que correspondan.

Saludos :)

AgustinOrtu 28-06-2015 04:59:21

Tambien podrias usar el caption de cada boton, en un evento compartido de manera similar a como comento ecfisa

ecfisa 28-06-2015 11:01:26

Hola kagua77
Cita:

Empezado por kagua77 (Mensaje 493764)
...es decir quiero que cuando presione el numero 1, y decir al codigo que estoy en Edit1, y lo inserte ahi, igual decirle que estoy en Edit2 e insertarlo ahi
...
y que la momento de presionar boton con el numero 1, lo inserte en el Edit que estoy usando

Disculpas se me pasó este punto :o.

Contemplándolo quedaría:
Código PHP:

TEdit *currEdit;  // Almacena el edit que tiene el foco actualmente

/* Asignar los números de botones a la prop. Tag */
void __fastcall TForm1::FormCreate(TObject *Sender
{
  for ( 
int i 110i++) {
    
TButton *bt static_cast<TButton*>(FindComponent("Button" IntToStr(i)));
    if (
btbt->Tag i;
  }
}

/* Asigna este código al evento OnEnter de los 4 Edits,
  CurrEdit será el Edit que tenga el foco */
void __fastcall TForm1::Edit1Enter(TObject *Sender
{
  
currEdit static_cast<TEdit*>(Sender);
}

/* Asigna este código al evento OnClick de los 9 botones */
void __fastcall TForm1::ButtonsClick(TObject *Sender
{
  
TButton *bt static_cast<TButton*>(Sender);
  
currEdit->Text currEdit->Text IntToStr(bt->Tag);


También podes asignar manualmente los valores (1-9) a la propiedad Tag de los botones en tiempo de diseño (desde el Object Inspector). De ese modo te ahorras el código del evento OnCreate y ya no tiene importancia el nombre que pudieran tener los TButton.

Saludos :)

aguml 03-07-2015 21:18:56

Un detalle eclipsa, o bien comprueba que curEdit tiene un valor correcto habiendolo inicializado a null al declarar la variable, o le asigna un valor correcto en el evento OnCreate del form para evitar que el programa lance una excepción. Sólo eso.

ecfisa 03-07-2015 23:47:37

Hola agulm.

Es correcta tu observación, olvidé escribir la línea:
Código PHP:

void __fastcall TForm1::FormCreate(TObject *Sender) {
  ...
  
currEdit Edit1;



Saludos :)


La franja horaria es GMT +2. Ahora son las 06:23:30.

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