Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   FireMonkey (https://www.clubdelphi.com/foros/forumdisplay.php?f=50)
-   -   un tButton para varios tEdit funcionando donde este el foco (https://www.clubdelphi.com/foros/showthread.php?t=93303)

Jorgeeyv 27-07-2018 02:43:04

un tButton para varios tEdit funcionando donde este el foco
 
Hola que tal amigos, podran apoyarme,
realice este tSpeedButton para que al hacer OnClick se sume un digito (+1) de mi tEdit1.

procedure TForm1.tSpeedbuttonClick(Sender: TObject);
begin
tEdit1.Text := IntToSTr (StrToIntDef (tEdit1.Text, 0) + 1)
end;
.

tengo varios tEdit, me gustaria usar un solo tSpeedButton para todos los tEdit, es decir, que funcione el boton en el tEdit que tenga foco.
es decir que se sume un +1 del tEdit que tenga foco.
de antemano gracias por sus aportes!

ecfisa 27-07-2018 07:08:42

Hola.

Código Delphi [-]
procedure TForm1.SpeedButton1Click(Sender: TObject);
var
  ed: TEdit;
begin
  if ActiveControl is TEdit then
  begin
    ed := TEdit(ActiveControl);
    ed.Text := IntToSTr(StrToIntDef(ed.Text,0)+1);
  end;
end;

Saludos :)

Jorgeeyv 27-07-2018 08:02:24

No logro nada con el codigo mi amigo, incluso hice un form nuevo con un tEdit y un speedButton y no hace nada. alguna observacion?

Cita:

Empezado por ecfisa (Mensaje 527798)
Hola.

Código Delphi [-]
procedure TForm1.SpeedButton1Click(Sender: TObject);
var
  ed: TEdit;
begin
  if ActiveControl is TEdit then
  begin
    ed := TEdit(ActiveControl);
    ed.Text := IntToSTr(StrToIntDef(ed.Text,0)+1);
  end;
end;

Saludos :)


Casimiro Notevi 27-07-2018 09:12:11

Pon tu código, no podemos adivinar, además de que no explicas nada, eso de "No logro nada con el codigo mi amigo" no nos sirve para saber qué está ocurriendo :rolleyes:

Jorgeeyv 27-07-2018 09:26:16

Lo que pasa es que el codigo:

Código Delphi [-]

procedure TForm1.SpeedButton1Click(Sender: TObject);
var
  ed: TEdit;
begin
  if ActiveControl is TEdit then
  begin
    ed := TEdit(ActiveControl);
    ed.Text := IntToSTr(StrToIntDef(ed.Text,0)+1);
  end;
end;

no me hace absolutamente nada,, la idea es hacer que con el speedbutton sume un digito ( +1) al tEdit que tenga foco, tomando en cuenta que tengo varios tEdit,
simplemente al tener seleccionado un tEdit que tiene el numero 7, al presionar el speedButton ponga 8. es un speedButton para todos mis tEdit, devera modificar solo el que tenga foco.


Este codigo me modifica solo un tEdit en este caso el tEdit1

Código Delphi [-]
procedure TForm1.tSpeedbuttonClick(Sender: TObject);
begin
  tEdit1.Text := IntToSTr (StrToIntDef (tEdit1.Text, 0) + 1)
end;

Cita:

Empezado por Casimiro Notevi (Mensaje 527802)
Pon tu código, no podemos adivinar, además de que no explicas nada, eso de "No logro nada con el codigo mi amigo" no nos sirve para saber qué está ocurriendo :rolleyes:


jafera 27-07-2018 09:44:42

Cita:

Empezado por Jorgeeyv (Mensaje 527804)
Este codigo me modifica solo un tEdit en este caso el tEdit1

procedure TForm1.tSpeedbuttonClick(Sender: TObject);
begin
tEdit1.Text := IntToSTr (StrToIntDef (tEdit1.Text, 0) + 1)
end;


Y es correcto que solo modifique tEdit1


Primero debes saber en que tEdit tienes el foco y pasar el valor a este tEdit, sino siempre ira al tEdit1, analiza bien el codigo proporcionado por Ecfisa


Saludos

Jorgeeyv 27-07-2018 09:57:09

Muchas gracias por tu aporte, exacto, pero lo que nececito es que el speedButton funcione en cada tedit que tenga foco, para no tener que poner un speedbutton para cada tEdit.
es decir solo le sume (+1) en el tEdit que presione, si cambio el foco a el tEdit9 (por asi decirlo) me modifique el tEdit9.


Cita:

Empezado por jafera (Mensaje 527805)
Y es correcto que solo modifique tEdit1


Primero debes saber en que tEdit tienes el foco y pasar el valor a este tEdit, sino siempre ira al tEdit1


Saludos


Neftali [Germán.Estévez] 27-07-2018 10:24:16

Por favor utilizad TAGs cuando añadáis código Delphi.



ecfisa 27-07-2018 17:39:45

Hola.
Cita:

Empezado por Jorgeeyv (Mensaje 527799)
No logro nada con el codigo mi amigo, incluso hice un form nuevo con un tEdit y un speedButton y no hace nada. alguna observacion?

Si mi amigo, que revises que al momento de hacer click sobre el TSpeedButton el foco esté sobre un TEdit y no sobre otro componente.

Funcionamiento del código de mi mensaje anterior:


Solo deseo agregar que tu petición funciona con un TSpeedButton por que deriva de TGraphicControl y no tiene la capacidad de captar el foco. Si usaras un TButton por ejemplo, jamás tendrías el foco sobre un TEdit ya que al momento de hacer click sobre él, este toma el foco.

Saludos :)

Jorgeeyv 27-07-2018 23:32:05

Si de hecho si tenia en cuenta eso mi amigo, encontre el problema, el codigo me sirve solo si estoy en un proyecto VCL Form Aplication y mi proyecto lo inicie en Multi Device Aplication, en esta ultima no me funciona el codigo... hay alguna manera de cambiar el tipo de form, de Miltidevice a VCL? o la otra, que funcione tu codigo en multidevice? el proyecto esta avanzado, me llevaria mucho tiempo poder inicarlo de nuevo

ecfisa 28-07-2018 21:24:17

Hola.

Cita:

y mi proyecto lo inicie en Multi Device Aplication, en esta ultima no me funciona el codigo...
Ah... no sabía que era Firemonkey, ya moví el tema al foro correspondiente.

Cita:

hay alguna manera de cambiar el tipo de form, de Miltidevice a VCL? o la otra, que funcione tu codigo en multidevice? el proyecto esta avanzado, me llevaria mucho tiempo poder inicarlo de nuevo
Así de pronto no sé, pero voy a revisar.
Lo bueno que al estar ahora en el foro correspondiente, mas expertos en cross platform te podrán responder.

Saludos :)

ecfisa 29-07-2018 07:55:22

Hola de nuevo.

Leyendo la ayuda encontré que la propiedad FMX.Forms.TCommonCustomForm.Focused es el equivalente a la propiedad ActiveControl.

Hice la siguiente prueba y funciona correctamente:
Código Delphi [-]
procedure TForm1.SpeedButton1Click(Sender: TObject);
var
  ed : TEdit;
begin
   if Self.Focused is TEdit then
  begin
    ed := TEdit( Self.Focused );
    ed.Text := IntToStr( StrToIntDef( ed.Text, 0) +1 );
  end;
end;

Saludos :)

Jorgeeyv 30-07-2018 23:05:47

Perfecto mi amigo!, justo eso nececitaba!, muchas gracias por el apoyo. saludos:D


Cita:

Empezado por ecfisa (Mensaje 527833)
Hola de nuevo.

Leyendo la ayuda encontré que la propiedad FMX.Forms.TCommonCustomForm.Focused es el equivalente a la propiedad ActiveControl.

Hice la siguiente prueba y funciona correctamente:
Código Delphi [-]
procedure TForm1.SpeedButton1Click(Sender: TObject);
var
  ed : TEdit;
begin
   if Self.Focused is TEdit then
  begin
    ed := TEdit( Self.Focused );
    ed.Text := IntToStr( StrToIntDef( ed.Text, 0) +1 );
  end;
end;

Saludos :)



La franja horaria es GMT +2. Ahora son las 09:21:02.

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