PDA

Ver la Versión Completa : preguntar si un boton esta apretado


Isajar
07-03-2012, 22:48:14
Buenas a todos , soy nuevo en el foro , asi que primero que nada me presento , agradeciendo su aceptación.Bueno mi primera duda es el codigo para preguntar si un boton esta apretado , es decir mi intencion, es, que la persona cargue datos a traves de un edit,(pulasando un boton) en un Listbox, hasta que pulse otro boton y me pase la informacion con modificaciones a otro Listbox,
(estoy haciendo programitas sencillos hasta que agarre practica ya que es la primera vez que uso entorno grafico),
Gracias Y Saludos.

ecfisa
07-03-2012, 23:00:12
Hola Isajar y bienvenido a Club Delphi :)

En realidad cuando un TButton es presionado se dispara el evento OnClick del mismo, es decir que allí es donde deberías controlar.

Distinto es si quisieras saber si un TButton "ya" ha sido presionado, en ese caso podrías usar la propiedad Tag como bandera, fijando su valor inicial en 0 y poniendo su valor en 1 cuando fuese presionado:

procedure TForm1.Button1Click(Sender: TObject);
begin
Button1.Tag:= 1;
end;


Si quisieras que alternara los valores cada vez que fuera presionado podrías hacer:

procedure TForm1.Button1Click(Sender: TObject);
begin
Button1.Tag:= Integer(not Boolean(Button1.Tag));
end;

Pero creo que si nos explicas con más detalle para que deseas saber si el botón está apretado sería más fácil darte una idea apropiada.

Saludos.

ecfisa
07-03-2012, 23:14:30
Hola de nuevo.

No presté atencion que el foro era Builder C++ ... :o:o

Entonces sería:

void __fastcall TForm1::Button1Click(TObject *Sender)
{
Button1->Tag = 1;
}

y

void __fastcall TForm1::Button1Click(TObject *Sender)
{
Button1->Tag = !Button1->Tag;
}


Disculpas por la confusión.

Isajar
08-03-2012, 02:22:38
Muchas gracias por la respuesta , la cosa es asi , el usuario ingresa la cantidad de edades que quiera en un Edit, luego con un Button cada vez que es precionado esa edad se le suman 3 anios y se van colocando en un ListBox(1), luego con otro Button (meses) convierte todas esas edades a meses, y la pone en otro ListBox. Ahora bien como se cuantas edades coloco en ListBox(1) para que las agregue todas en el ListBox2 (convertidas a meses *12),
Otra duda que tengo , que va con el disenio es que cuando el usuario ingresa un valor en el Edit quiero que al apretar el Button (anios) se borre el contenido anterior (lo cual logre con Clear()) pero tambien quiero que quede el cursor titilando Ya en el Edit para poner otro valor , es decir , que el usuario no tenga que darle click al casillero del Edit para ingresar otro valor.

Si algo no se entiende, me dicen,
Aclaracion : Esto es un ejercicio y es en c++ Builder 6.
Muchas Gracias Nuevamente.
Saludos

ecfisa
08-03-2012, 03:02:46
Hola Isajar.

Aunque en realidad no hacemos los ejercicios por vos, veo en tus comentarios que has analizado el problema y tenés bastante código echo, así que:

void __fastcall TForm1::btnAniosClick(TObject *Sender)
{
int ed;
if(TryStrToInt(Edit1->Text, ed)) { // convertir a int, queda en ed
ListBox1->Items->Add(IntToStr(ed*3)); // ed*3 en ListBox1
Edit1->Clear(); // Limpiar Edit
}
Edit1->SetFocus(); // Foco en Edit
}

void __fastcall TForm1::btnMesesClick(TObject *Sender)
{
// La cantidad de edades las obtenes con: ListBox1->Items->Count-1
for(int i=0; i<ListBox1->Items->Count; i++)
ListBox2->Items->Add(IntToStr(StrToInt(ListBox1->Items->Strings[i])*12));
}
Sería bueno que la próxima vez incluyas el código que has escrito para poder hacerte sugerencias sobre él, de ese modo vas a sacar más provecho.

Un saludo. :)