Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 23-02-2012
Avatar de lmpadron
lmpadron lmpadron is offline
Miembro
 
Registrado: feb 2009
Ubicación: Habana, Cuba
Posts: 204
Poder: 16
lmpadron Va por buen camino
Posicionar el cursor a gusto dentro de un edit

Hola amigos
Tengo un Edit donde se inserta un numero. Despues de algunas operaciones el numero del Edit termina en la variable B y compruebo en el evento Change del edit que cada ves que se inserta que no sea mayor que uno que previamente tengo definido en la variable C.
En caso de ser mayor elimino el dígito insertado, el problema es que después de eliminarlo el cursor se posiciona al inicio del edit y quisiera poder posicionarlo al final para que el usuario pueda seguir insertando dígitos sin problemas.

Código:
if (b > c)
                  {
                          MessageDlg("B es mayor que C",mtInformation, TMsgDlgButtons() << mbOK, 0);
                          String fin, total;
                          total= Edit1->Text;
                          fin= LeftStr(total, total.Length() - 1);
                          Edit1->Text = fin;
                          //Edit1->?? aqui deberia posicionarlo al final pero ni la mas minima idea !!!
                  }
Gracias de antemano por su ayuda
__________________
Nunca esta de más volver a ver la "Guia de Estilo" o "La Otra Guia de Estilo". Recuerda siempre usar los "Tags" para una mejor legibilidad de tu código.


Cuando miras fijamente al abismo, este te devuelve la mirada


oo______ooo_____ooo_ooooooo_____ooo____oooooo____ooooooo______oooo____ooo____oo_
oo______oooo___oooo_oo____oo__oo___oo__oo____oo__oo____oo___oo____oo__oooo___oo_
oo______oo_oo_oo_oo_oo____oo_oo_____oo_oo_____oo_oo____oo__oo______oo_oo_oo__oo_
oo______oo__ooo__oo_oooooo___ooooooooo_oo_____oo_ooooooo___oo______oo_oo__oo_oo_
oo______oo_______oo_oo_______oo_____oo_oo____oo__oo____oo___oo____oo__oo___oooo_
ooooooo_oo_______oo_oo_______oo_____oo_oooooo____oo_____oo____oooo____oo____ooo_
________________________________________________________________________________
Responder Con Cita
  #2  
Antiguo 23-02-2012
Avatar de Chris
[Chris] Chris is offline
Miembro Premium
 
Registrado: abr 2007
Ubicación: Jinotepe, Nicaragua
Posts: 1.678
Poder: 19
Chris Va por buen camino
No utilice el evento OnChange. Para este caso te vendría mejor utilizar el evento OnKeyPress. El último evento trae un parámetro llamado Key. Asigna ese parámentro a 0 para no aceptar el caracter que ha ingresado el usuario. Por cuestiones de usabilidad, utiliza un medio para indicarle al usuario que ese caracter no lo aceptas, pero no lo hagas con un MessageBox porque corta el flujo mental del usuario. Un BalloonTip es lo ideal en este caso.

Lástima que no podría proporcionarte un ejemplo porque no programo en C++

Saludos!
__________________
Perfil Github - @chrramirez - Delphi Blog - Blog Web
Responder Con Cita
  #3  
Antiguo 23-02-2012
Avatar de Chris
[Chris] Chris is offline
Miembro Premium
 
Registrado: abr 2007
Ubicación: Jinotepe, Nicaragua
Posts: 1.678
Poder: 19
Chris Va por buen camino
Este sería el código Delphi para implementar lo que te digo:
Código Delphi [-]
procedure Form1.Edit1OnKeyPress(var Key: Char);
var
    BalloonTip: _tagEDITBALLOONTIP;
begin
    if (B > C) then
    begin
        Key := 0; // no aceptar el caracter ingresado
        
        // mostrar un mensaje sutíl al usuario 
        // indicandole que el problema.
        BalloonTip.cbStruct := SizeOf(BalloonTip);
        BalloonTip.pszTitle := 'B es mayor que C';
        BalloonTip.pszText := 'TODO: EXPLICAR POR QUE B NO PUEDE SER MAYOR QUE C';
        BalloonTip.ttiIcon := 4;

        SendMessage(Edit1.Handle,
                    EM_SHOWBALLOONTIP,
                    0,
                    Integer(@BalloonTip));        
    end;
end;

Tienes que agregar a la sección uses la unidad CommCtrl para hacer uso de los BalloonTips de Windows.

¿Alguien que pueda traducir este código?

Saludos!
__________________
Perfil Github - @chrramirez - Delphi Blog - Blog Web
Responder Con Cita
  #4  
Antiguo 23-02-2012
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Cita:
Empezado por lmpadron
y quisiera poder posicionarlo al final
En delphi:

Código Delphi [-]
Edit1.SelStart := Length(Edit1.Text);

No creo que sea difícil traducirlo a C.

// Saludos
Responder Con Cita
  #5  
Antiguo 23-02-2012
Avatar de lmpadron
lmpadron lmpadron is offline
Miembro
 
Registrado: feb 2009
Ubicación: Habana, Cuba
Posts: 204
Poder: 16
lmpadron Va por buen camino
Cita:
Empezado por roman Ver Mensaje
En delphi:

Código Delphi [-]
Edit1.SelStart := Length(Edit1.Text);

No creo que sea difícil traducirlo a C.

// Saludos
Código:
Edit1->SelStart = Edit1->Text.Length();
__________________
Nunca esta de más volver a ver la "Guia de Estilo" o "La Otra Guia de Estilo". Recuerda siempre usar los "Tags" para una mejor legibilidad de tu código.


Cuando miras fijamente al abismo, este te devuelve la mirada


oo______ooo_____ooo_ooooooo_____ooo____oooooo____ooooooo______oooo____ooo____oo_
oo______oooo___oooo_oo____oo__oo___oo__oo____oo__oo____oo___oo____oo__oooo___oo_
oo______oo_oo_oo_oo_oo____oo_oo_____oo_oo_____oo_oo____oo__oo______oo_oo_oo__oo_
oo______oo__ooo__oo_oooooo___ooooooooo_oo_____oo_ooooooo___oo______oo_oo__oo_oo_
oo______oo_______oo_oo_______oo_____oo_oo____oo__oo____oo___oo____oo__oo___oooo_
ooooooo_oo_______oo_oo_______oo_____oo_oooooo____oo_____oo____oooo____oo____ooo_
________________________________________________________________________________
Responder Con Cita
  #6  
Antiguo 23-02-2012
Avatar de kapcomx
kapcomx kapcomx is offline
Miembro
 
Registrado: jun 2007
Ubicación: Puebla México
Posts: 350
Poder: 17
kapcomx Va por buen camino
ballontip

En XE2 he usado un componente llamado labelededit.
tiene la propiedad Onlynumbers. si la pones en true
te indica un ballontip, cuando intentas escribie un texto o simbolo.

Responder Con Cita
  #7  
Antiguo 23-02-2012
Avatar de lmpadron
lmpadron lmpadron is offline
Miembro
 
Registrado: feb 2009
Ubicación: Habana, Cuba
Posts: 204
Poder: 16
lmpadron Va por buen camino
si, tambien lo he visto pero estoy trabajando con bcb6 y este no lo tiene !!!
__________________
Nunca esta de más volver a ver la "Guia de Estilo" o "La Otra Guia de Estilo". Recuerda siempre usar los "Tags" para una mejor legibilidad de tu código.


Cuando miras fijamente al abismo, este te devuelve la mirada


oo______ooo_____ooo_ooooooo_____ooo____oooooo____ooooooo______oooo____ooo____oo_
oo______oooo___oooo_oo____oo__oo___oo__oo____oo__oo____oo___oo____oo__oooo___oo_
oo______oo_oo_oo_oo_oo____oo_oo_____oo_oo_____oo_oo____oo__oo______oo_oo_oo__oo_
oo______oo__ooo__oo_oooooo___ooooooooo_oo_____oo_ooooooo___oo______oo_oo__oo_oo_
oo______oo_______oo_oo_______oo_____oo_oo____oo__oo____oo___oo____oo__oo___oooo_
ooooooo_oo_______oo_oo_______oo_____oo_oooooo____oo_____oo____oooo____oo____ooo_
________________________________________________________________________________
Responder Con Cita
  #8  
Antiguo 23-02-2012
Avatar de Chris
[Chris] Chris is offline
Miembro Premium
 
Registrado: abr 2007
Ubicación: Jinotepe, Nicaragua
Posts: 1.678
Poder: 19
Chris Va por buen camino
Cita:
Empezado por kapcomx Ver Mensaje
En XE2 he usado un componente llamado labelededit.
tiene la propiedad Onlynumbers. si la pones en true
te indica un ballontip, cuando intentas escribie un texto o simbolo.

Cita:
Empezado por lmpadron Ver Mensaje
si, tambien lo he visto pero estoy trabajando con bcb6 y este no lo tiene !!!
No te preocupes por eso. Se puede implementar con la API de Windows:
Código Delphi [-]
var
    EditStyle: Integer;
begin
    EditStyle := GetWindowLong(Edit1.Handle);
    EditStyle := EditStyle or ES_NUMBER
    SetWindowLong(Edit1.Text, EditStyle);
end;

Saludos.
__________________
Perfil Github - @chrramirez - Delphi Blog - Blog Web
Responder Con Cita
  #9  
Antiguo 23-02-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Cita:
Empezado por lmpadron Ver Mensaje
si, tambien lo he visto pero estoy trabajando con bcb6 y este no lo tiene !!!
Hola Impadron.

Te comento que Builder C++ 6 si trae el componente TLabeledEdit, y se encuentra en la pestaña Additional.

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
clientdataset posicionar cursor registro actual Rofocale Varios 3 27-05-2011 02:51:50
como posicionar el cursor en un RichEdit? paopao OOP 1 17-10-2008 15:47:13
Posicionar cursor en word nacho Servers 9 10-08-2006 13:30:09
Posicionar cursor en un edit JOMABRI Varios 2 29-12-2004 20:53:15
posicionar cursor en un memo Diego OOP 1 08-07-2004 02:13:57


La franja horaria es GMT +2. Ahora son las 08:22:29.


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
Copyright 1996-2007 Club Delphi