Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Como limitar ingreso de l 1 al 10 en un edit (https://www.clubdelphi.com/foros/showthread.php?t=72975)

pnsd_89 23-03-2011 20:25:49

aaa si el valor es mayor que 10 sacas el mensaje en el OnExit del edit

oscarac 23-03-2011 20:36:05

el uso del SpinEdit seria una buena solucion, pero.. creo yo... que el inefable profesor de la Republica Dominicana pretende enseñar a los alumnos a tener algo de creatividad y a usar la materia gris para solucionar problemas que aparentemente son faciles, pero como veran... dependen de ciertas variables y que al mismo tiempo todos tenemos una solucion diferente y similar sobre un mismo problema

ecfisa 23-03-2011 22:13:56

Hola Chino150.

Sumo otra alternativa a las que ya te han sugerido los compañeros:
Código Delphi [-]
...
interface

(* Inicializar TEdit's, asignar eventos *)
procedure TForm1.FormShow(Sender: TObject);
var
  i: Integer;
begin
  for i:= 0 to ComponentCount -1 do
    if Components[i] is TEdit then
    begin
      TEdit(Components[i]).Text:= ''; // aca poné lo que el profesor quiera que se visualice
      TEdit(Components[i]).OnKeyPress:= EditKeyPress;
      TEdit(Components[i]).OnChange:= EditChange;
    end;
end;

(* Verificar sólo números *)
procedure TForm1.EditKeyPress(Sender: TObject; var Key: Char);
begin
  if not (Key in [#8,'0'..'9']) then
  begin
    MessageBeep(MB_ICONERROR);
    Key:= #0;
  end;
end;

(* Verificar rango 1-10 *)
procedure TForm1.EditChange(Sender: TObject);
var
  v: Integer;
  s: string;
begin
  s:= TEdit(Sender).Text;
  if TryStrToInt(TEdit(Sender).Text, v)and(v < 1) or (v > 10)  then
  begin
    ShowMessage('Valor máximo/minimo permitidos: 1-10');
    TEdit(Sender).OnChange:= nil;
    Delete(s,Length(s),1);
    TEdit(Sender).Text:= s;
    TEdit(Sender).SelStart:= Length(s);
    TEdit(Sender).OnChange:= EditChange;
  end;
end;

Y coincido también que la petición es un poquito rebuscada...

Un saludo.

Caral 23-03-2011 22:20:14

Hola
Me gusta mucho.
Muy legible, facil, hecho especialmente para el profe de Chino150 que le gusta el codigo.
Saludos

ecfisa 23-03-2011 22:30:39

Cita:

Empezado por Caral (Mensaje 394451)
Hola
Me gusta mucho.
Muy legible, facil, hecho especialmente para el profe de Chino150 que le gusta el codigo.
Saludos

:D:D:D

Yo también experimento ese sentimiento de ContraVeneno...
Cita:

No se porque me dieron ganas de darle un zape a tu maestro
(Aunque no se lo que es un 'zape' creo que pensamos en lo mismo)

Un saludo.:)

ContraVeneno 23-03-2011 23:16:00

Cita:

Empezado por oscarac (Mensaje 394424)
el uso del SpinEdit seria una buena solucion, pero.. creo yo... que el inefable profesor de la Republica Dominicana pretende enseñar a los alumnos a tener algo de creatividad y a usar la materia gris para solucionar problemas ...

a la hora de "los trancazos", o dicho de otra forma, cuando hay que entregar el trabajo, la manera más "creativa", siempre será la más sencilla y rápida, la de menos esfuerzo. Y el spinedit es eso, la solución más sencilla de menor esfuerzo y mucho más funcional que cualquier código que me digas. Si, el código es muy bonito y puede funcionar, pero deja que el profe le diga: "a ver... ¿qué pasa cuando le doy cortar y pegar a un texto en ese Edit?". Usar la materia gris no quiere decir escribir mucho código.

SpinEdit: modifcar dos o tres propiedades.
Edit: ¿cuantas líneas de código llevan ya?, ¿que pasa si le doy cortar y pegar a un texto?


Cita:

Empezado por ecfisa (Mensaje 394452)
:D:D:D

Yo también experimento ese sentimiento de ContraVeneno...


(Aunque no se lo que es un 'zape' creo que pensamos en lo mismo)

Un saludo.:)

Acción de dar un zape:

oscarac 23-03-2011 23:24:24

Cita:

Empezado por chino150 (Mensaje 394396)
El ejecicio dise que debe ser edits normales

no quiero iniciar un debate ni nada parecido...

pero hay veces en que debemos usar solo lo que tenemos para luego entender su uso y ver que otras potencialidades podemos utilizar de los recursos que poseemos

y si dice que deben ser edits normales... pues ni modo... que sean normales...

ContraVeneno 23-03-2011 23:47:28

totalmente de acuerdo, mi buen oscarac, debemos saber lo que tenemos y lo que podemos y no podemos hacer con eso que tenemos.

Y en este momento, tenemos un Edit que no fue diseñado para manejar solo números y tenemos un spinedit que fue diseñado específicamente para manejar solo números. Si el profe de nuestro amigo Chino, no conoce los spinedits, seguramente tendrá muchos dolores de cabeza cuando quiera manejar solo números. Pero su falta de conocimiento no debe implicar que transmita sus mismos dolores de cabeza a sus alumnos.

Sería diferente si te dijera que existe un TjvValidateEdit (que no viene "de fábrica" en Delphi) , que es mucho mejor que el spinedit.

Simplemente no entiendo porque debo tomar el camino más largo, cuando se que puedo resolver mi problema de la manera más sencilla. O tal vez será que a mi no me gusta escribir código (porque yo no cobro por líneas de código, cobro por lo que he aprendido... y se que el spinedit es mucho más sencillo y más elegante que utilizar un edit en este caso).

Y como dije antes, si lo quieren hacer por código, háganlo por código. Pero discutan si realmente hacer todo por código es la mejor opción, cuando sabes que existe el spinedit.

ecfisa 23-03-2011 23:49:34

Hola.

Cita:

¿qué pasa cuando le doy cortar y pegar a un texto en ese Edit?
Hay que teclear en el evento OnExit, complicando más el código que ya lo es bastante...

Y vista la explicación de 'zape', si, efectivamente pensamos en lo mismo ( aca 'coscorron' ). Aunque me avergüenza confesar que también me cruzaron peores ideas... :)

Un saludo.

ContraVeneno 24-03-2011 00:01:09

no bueno, es que el zape aquí es con la mano abierta y en la parte posterior de la cabeza... igualito que en la imagen...

y el coscorrón es con la mano cerrada, generalmente en la parte frontal, de la cabeza, pero puede ser en cualquier parte de la cabeza.... pero que mejor que una imágen para que se vea claramente; Coscorrón:


como veras, en mi pueblo el zape y el coscorrón son diferentes. :D
el zape es más despectivo y el coscorrón es más doloroso.

ecfisa 24-03-2011 00:13:10

Cita:

Empezado por ContraVeneno (Mensaje 394477)
no bueno, es que el zape aquí es con la mano abierta y en la parte posterior de la cabeza... igualito que en la imagen...

Entonces no vi bién la imagen...

Aca 'coscorrón' es un golpe en la cabeza generalmente con los nudillos. Creo que no tenemos un término para dar un 'sopapo' en la coronilla, al menos yo no conozco uno. ( 'sopapo' generalmente se aplica al golpe mano abierta en la cara y 'chirlo' los dados en la cola a los niños idem al anterior)

Así que podríamos incorporar 'zape'... :)


Un saludo.

Caral 24-03-2011 01:42:13

Hola
Por cierto, nunca he usado el spinedit, donde esta?, es un componente de terceros, por que no lo encuentro en mi delphi 6.
Saludos

ecfisa 24-03-2011 02:09:54

Hola Carlos.

En Delphi 7 está en la pestaña Samples, desconozco si lo trae la versión 6...

Un saludo.

Caral 24-03-2011 02:21:46

Hola
Ya lo vi amigo, tienes razón.
Pero tengo varias dudas:
1. Tiene flechitas para los números, esto no se lo pidio el profe.
2- Tiene un 0 de inicio, esto tampoco lo pidio.
No se si se podran quitar, pero no es un edit (normal) que es lo que le pidieron.
No estoy en contra de vuestra apreciación del uso de este componente de hecho lo veo muy practico, pero CREO que lo que plantea el profesor de chino150 es el aprendizaje de código no del uso de componentes y no creo que este del todo equivocado.
Saludos

Delphius 24-03-2011 15:41:34

Hola,
No he visto el hilo desde el comienzo,

Amigo ContraVeneno no necesariamente la imposición del profesor es por ser una persona falta de neuronas. Es más yo diría que su imposición se debe a que los estudiantes recién están comenzando y es un ejercicio por demás de habitual el condicionarlos a una pequeña cantidad de controles y "obligar" a los estudiantes a que usen la cabeza, a que piensen... desarrollen la lógica, traten de encarar sus ideas y expresarlas en código. ESE ES EL PUNTO. ;)

Yo, será que vengo de una etapa de transición de la vieja escuela a la nueva, tengo la visión de que prefiero que "sufran" con un lenguaje nada visual que los distraiga y no los ayude a pensar en código. Vamos, el Turbo Pascal... de hace unos tantos años.
¡Sabes como se le abre la cabeza a los chicos con eso!
Pero claro, hoy en día es tan visual las cosas que buscan que al comienzo se aprendan un IF cuando en realidad en lo primero y lo único que ven es una pantallita hermosa pero que por dentro no saben ni tienen la más paupérrima idea de como "programarla".

Si se comenzara con algo que no los distraiga visualmente, el estudiante dedicará más tiempo a pensar, analizar y canalizar mejor sus ideas.

No logro entender el porqué se busca saltar etapas en la enseñanza...

Saludos,

oscarac 24-03-2011 15:56:11

Cita:

Empezado por Delphius (Mensaje 394544)
Es más yo diría que su imposición se debe a que los estudiantes recién están comenzando y es un ejercicio por demás de habitual el condicionarlos a una pequeña cantidad de controles y "obligar" a los estudiantes a que usen la cabeza, a que piensen... desarrollen la lógica, traten de encarar sus ideas y expresarlas en código. ESE ES EL PUNTO. ;)
Si se comenzara con algo que no los distraiga visualmente, el estudiante dedicará más tiempo a pensar, analizar y canalizar mejor sus ideas.

No logro entender el porqué se busca saltar etapas en la enseñanza...

Esto es basicamente... lo que trate de explicar en mis comentarios anteriores

En mi Pais se dice "Cocacho" al coscorron y "lapo" al zape... y podria citar al buen Nicomedes Sant Cruz

a cocachos aprendi mi labor de colegial... si desean pueden buscarlo en google

rgstuamigo 24-03-2011 17:03:58

Cita:

Extraido de la guía de estilo>
Cita:

En cuanto a los modismos propios de cada país, pedimos que no hagas uso de ellos, ten en cuenta que es posible que sólo te entiendan los de tu país y la ayuda que buscas puede venir de cualquier otro.

Amigos creo que debemos respetar eso, y tratemos en lo posible utilizar palabras netas en el propio catellano; aquí en mi pais hay infinidad de modismo, pero personalmente yo no los utilizo al postear,por respeto a la guía de estilo y para que la gran comunidad me pueda entender mejor.;)

En cuanto al profesor de nuestro amigo chino150, puedo decir que lo comprendo, por que yo mismo en la universidad he tenido (especialmente en las primeras materias de la carrera de ingeniería informática) profesores que han hecho exactamente los mismo que el profesor de chino150; aún recuerdo aquella vez cuando en un examen preguntaron:
¿Haga una funcion que verifique si un número es par, sin utilizar los operadores Mod, Div y sin recurrir a funciones propias del lenguaje?:eek::confused:
Para serles franco no puede resolverla:o,era un principiante, no conocía nada ni mucho menos assembler, aunque eso me llevo a pensar miles formas de resolverlo, y de verdad que la creatividad se dispara.:D

Bueno no quiero irme sin proponer tambien otra alternativa para que un Edit solo acepte número, usando algunas APIs de windows:
Código Delphi [-]
SetWindowLong(Edit1.Handle, GWL_STYLE,GetWindowLong(Edit1.Handle, GWL_STYLE) or ES_NUMBER);
Dicho código podemos ponerlo en el evento OnCreate del formulario por ejemplo...;)
Lógicamente habrá que adicionar códico para que valide que el número esté entre el rango de 1 y 10, para lo cuál ya se han posteado muchas alternativas...;)
Saludos....:)

bulc 29-03-2011 20:30:20

Contador
 
Cita:

Empezado por chino150 (Mensaje 394386)
hola a todos
mi problema es el siguiente teng varios edit donde el usuario sol debe insertar los valores del 1 al 10 si insertar valores mas alto debe salir un mensaje informandole al usario.

como logro esto.

gracias de antemano

Pues lo puedes conectar a un contador de flecha arriba-flecha abajo. O recoger la pulsación con el evento OnEditChange. Vas comparando los valores que tendrás que cambiar de String a Integer.... ¿Se entiende?
Saludos.

roman 29-03-2011 21:29:07

Vaya, no había visto este hilo. Debo decir que estoy de acuerdo cien por ciento con Delphius y oscarac, y, sinceramente creo, ContraVeneno, que deberías repensar un poco el asunto. Seguir la filosofía de para qué pienso si ya hay componentes hechos es lo que lleva (o trae) a algunas personas a venir con preguntas del estilo de ¿dónde encuentro un componente que dibuje figuras en tres dimensiones? Es que quiero hacer una aplicación tipo AutoCad.

Claro que uno debe aprender a no reinventar la rueda, pero en un curso básico de programación de lo que se trata es de aprender ciclos, condicionales, funciones, etc. y no simplemente a incrustar componentes.

// Saludos


La franja horaria es GMT +2. Ahora son las 22:33:20.

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