PDA

Ver la Versión Completa : un tButton para varios tEdit funcionando donde este el foco


Jorgeeyv
27-07-2018, 02:43:04
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.


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?

Hola.


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:



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


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


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
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.


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 (http://www.clubdelphi.com/foros/favor utilizad TAGs cuando añadáis código Delphi.)cuando añadáis código Delphi.


http://www.clubdelphi.com/images/UtilizarTAGs.png

ecfisa
27-07-2018, 17:39:45
Hola.
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:
https://s15.postimg.cc/mykr8afcr/jorgeyv.gif

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.

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.

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 (http://docwiki.embarcadero.com/Libraries/Tokyo/en/FMX.Forms.TCommonCustomForm.Focused) es el equivalente a la propiedad ActiveControl.

Hice la siguiente prueba y funciona correctamente:

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


Hola de nuevo.

Leyendo la ayuda encontré que la propiedad FMX.Forms.TCommonCustomForm.Focused (http://docwiki.embarcadero.com/Libraries/Tokyo/en/FMX.Forms.TCommonCustomForm.Focused) es el equivalente a la propiedad ActiveControl.

Hice la siguiente prueba y funciona correctamente:

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 :)