Ver Mensaje Individual
  #7  
Antiguo 03-03-2021
Avatar de aguml
aguml aguml is offline
Miembro
 
Registrado: may 2013
Posts: 885
Reputación: 14
aguml Va por buen camino
Bueno, al final lo he pensado mejor y voy a hacer que imprima solo caracteres válidos pero la cosa es que consigo filtrarlo pero me lo muestra al final de lo que pego con Ctrl + V en vez de sustituir lo que pego por lo filtrado. Tengo esto:
Código PHP:
void __fastcall TForm1::EditValue1KeyPress(TObject *Sender, System::WideChar &Key)
{
    if(
Key == 0x16){
        if(
Clipboard()->HasFormat(CF_TEXT)){
            
String CBText = Clipboard()->AsText;
            
EditValue1->Text = SuprimirCaracteresInvalidos(CBText.UpperCase());
        }
    }else if((
Key < '0' || (Key > '9' && (Key < 'A' || Key > 'F'))) && Key != '\b' && Key != 0x03 && Key != 0x18)
        
Key = NULL;
}
//---------------------------------------------------------------------------

String TForm1::SuprimirCaracteresInvalidos(String input)
{
    
int i, j;
    
String output = "";
    
String mask = "0123456789ABCDEF";

    for(
i = 1; input.Length() > 0 && i < input.Length(); i++){
        for(
j=1; j < mask.Length(); j++){
            if(
input[i] == mask[j]){
                
output += (WideString)input[i];
            }
        }
    }
    return 
output;
} 
Además también me falta que al pegar con el menú contextual tenga el mismo comportamiento. El menú contextual o popup no lo he creado yo, es el de Windows y no se como hacer eso.

Última edición por aguml fecha: 03-03-2021 a las 11:17:25.
Responder Con Cita