PDA

Ver la Versión Completa : Abrir form acorde a contraseña


Demarck
12-03-2012, 18:30:12
Bueno mi duda es esta:

Tengo 2 Fomularios (Form1, Form2), en el Formulario1 tengo un Edit y un Botón, y en formulario 2 no tengo nada xD !

Pero bueno la cosa es así, yo le puse una Contraseña al boton para que al Escribir esa contraseña dentro del Edit1 me salga un MessageBox que diga, "Contraseña Correcta" y me abra el Form2.

Y si la Contraseña no es Correcta que me salga un MessageBox que dia, "Contraseña Incorrecta" y que regrese al Form1 hasta que no atine la Contraseña Correcta.


Y bueno yo estuve intentando y si me sale, pero al poner una Contraseña Incorrecta si me sale ese mensaje pero se abre el Form2 y eso no quiero yo, sino que si no es la Contra que se quede en el Form1 y si es la correcta abrir el form2, eso si, ocultando el Form1.

implementation

uses Unit2;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
if edit1.Text = ('') then
messagebox(0,
PChar('Contraseña Incorrecta'),
PChar('Aviso'),
MB_OK)

else
if edit1.Text = ('Esta es la Contraseña') then
messagebox(0,
PChar('Contraseña Correcta'),
PChar('Bienvenido'),
MB_OK);
form1.Hide;
Form2.Show;
end;

Edit:

Verdad, también quier que al poner un messagebox me salga con un estilo de mensaje, osea por ejemplo un Estilo Critical ...
Si la contraseña esta mal que Diga, "Contraseña Incorrecta" pero con Estilo de Error o Critical como se llame :$

ecfisa
12-03-2012, 18:45:07
Hola Demark y bienvenido a Club Delphi. :)

Como a todo recién ingresado te invitamos a que leas nuestra guía de estilo (http://www.clubdelphi.com/foros/guiaestilo.php). (en especial el punto 1)

Saludos.

ElDioni
12-03-2012, 18:53:27
Hola,

bienvenido al club.

Con respecto a lo que preguntas, si el form1 es el formulario principal de la aplicación no puedes hacerlo desaparecer a no ser que lo destruyas y pases el testigo de formulario principal al Form2, creo que es así sino ya me corregirán, te faltan los begin-end en el if y en el else y para poner iconos de advertencia, o exclamación, etc. haz lo siguiente.


application.messagebox('Hola','Saludo',MB_OK+MB_ICONWARNING);


MB_ICONEXCLAMATION, MB_ICONERROR, MB_ICONQUESTION son algunos de los que puedes poner.

Saludos.

ecfisa
12-03-2012, 18:58:34
Hola de nuevo.

Para que funcione tu código tendrías que salir del procedimiento si se cumple la condición Edit1.Text = '' :

procedure TForm1.Button1Click(Sender: TObject);
begin
if Edit1.Text = '' then
begin
messagebox(0,
PChar('Contraseña Incorrecta'),
PChar('Aviso'),
MB_OK);
Exit; // <- Salir
end
else if Edit1.Text = ('Esta es la Contraseña') then
begin
messagebox(0,
PChar('Contraseña Correcta'),
PChar('Bienvenido'),
MB_OK);
Hide;
Form2.Show;
end;
end;


Aunque creo que sería mejor:

procedure TForm1.Button1Click(Sender: TObject);
begin
if Edit1.Text <> 'Esta es la Contraseña' then
messagebox(0,
PChar('Contraseña Incorrecta'),
PChar('Aviso'),
MB_OK)
else
begin
messagebox(0,
PChar('Contraseña Correcta'),
PChar('Bienvenido'),
MB_OK);
Hide;
Form2.Show;
end;
end;


Saludos.

Chris
12-03-2012, 19:03:03
Un punto a agregar, que creo que estaba en la Guía de Estilo pero ya no lo está: Aquí no hacemos tareas.

Sin dudarlo, creo que esta es una tarea que tienes que presentar en unas horas, por eso de tu urgencia.

No te expondré el código que solucionaría tu problema. Si lo hiciera realmente no te estuviera ayudando. Pero te voy a decir cuál es el problema porque sé que estos dolores de cabeza al iniciarte en la programación son muy molestos.

Solución: La condicional no está cumpliendo con lo esperado porque cierto código no está dentro de ella.

Demarck
12-03-2012, 19:05:46
Hola Demark y bienvenido a Club Delphi. :)

Como a todo recién ingresado te invitamos a que leas nuestra . (en especial el punto 1)

Saludos.

Disculpa, como sabes soy nuevo y no sabía, si pudeses cambiar el Nombre a uno más Específico ya que yo no se que título poner te lo agradecería.

Hola,

bienvenido al club.

Con respecto a lo que preguntas, si el form1 es el formulario principal de la aplicación no puedes hacerlo desaparecer a no ser que lo destruyas y pases el testigo de formulario principal al Form2, creo que es así sino ya me corregirán, te faltan los begin-end en el if y en el else y para poner iconos de advertencia, o exclamación, etc. haz lo siguiente.


application.messagebox('Hola','Saludo',MB_OK+MB_ICONWARNING);


MB_ICONEXCLAMATION, MB_ICONERROR, MB_ICONQUESTION son algunos de los que puedes poner.

Saludos.
Bueno el Form1 si es el Principal, y no lo quiero desaparecer, sólo Ocultarlo con el "hide;" y por el otro lado de que me faltan begin-end, no falta nada ya que si pongo eso me salta errores.

Chris
12-03-2012, 19:06:43
Verdad, también quier que al poner un messagebox me salga con un estilo de mensaje, osea por ejemplo un Estilo Critical ...
Si la contraseña esta mal que Diga, "Contraseña Incorrecta" pero con Estilo de Error o Critical como se llame :$

A menos que un tonto profesor te lo halla pedido, una contraseña incorrecta no es un error ni mucho menos representa un estado crítico. De hecho, pocas cosas son críticas en el mundo virtual. Mi consejo: Si vas a utilizar un icono, utiliza el de información para este caso. Por estas malas prácticas es que después dicen que los programadores no sabemos de usabilidad.

Demarck
12-03-2012, 19:10:03
Hola de nuevo.

Para que funcione tu código tendrías que salir del procedimiento si se cumple la condición Edit1.Text = '' :

procedure TForm1.Button1Click(Sender: TObject);
begin
if Edit1.Text = '' then
begin
messagebox(0,
PChar('Contraseña Incorrecta'),
PChar('Aviso'),
MB_OK);
Exit; // <- Salir
end
else if Edit1.Text = ('Esta es la Contraseña') then
begin
messagebox(0,
PChar('Contraseña Correcta'),
PChar('Bienvenido'),
MB_OK);
Hide;
Form2.Show;
end;
end;


Aunque creo que sería mejor:

procedure TForm1.Button1Click(Sender: TObject);
begin
if Edit1.Text <> 'Esta es la Contraseña' then
messagebox(0,
PChar('Contraseña Incorrecta'),
PChar('Aviso'),
MB_OK)
else
begin
messagebox(0,
PChar('Contraseña Correcta'),
PChar('Bienvenido'),
MB_OK);
Hide;
Form2.Show;
end;
end;


Saludos.

Exacto justo lo que buscaba, muchas Gracias ;)

Un punto a agregar, que creo que estaba en la Guía de Estilo pero ya no lo está: Aquí no hacemos tareas.

Sin dudarlo, creo que esta es una tarea que tienes que presentar en unas horas, por eso de tu urgencia.

No te expondré el código que solucionaría tu problema. Si lo hiciera realmente no te estuviera ayudando. Pero te voy a decir cuál es el problema porque sé que estos dolores de cabeza al iniciarte en la programación son muy molestos.

Solución: La condicional no está cumpliendo con lo esperado porque cierto código no está dentro de ella.
Bueno puse de suma urgencia porque estoy empleando un proyecto y ese error me lleva desde hace 2 días y dentro de un rato tengo que ir a Estudiar y no era para un trabajo, ya que no estudio Programación.

egostar
12-03-2012, 19:10:59
A menos que un tonto profesor te lo halla pedido, una contraseña incorrecta no es un error ni mucho menos representa un estado crítico. De hecho, pocas cosas son críticas en el mundo virtual. Mi consejo: Si vas a utilizar un icono, utiliza el de información para este caso. Por estas malas prácticas es que después dicen que los programadores no sabemos de usabilidad.

Coincido con tu comentario amigo Chris, es más yo sostengo que en sistemas no hay errores, sólo requerimientos incompletos :D :D :D

Saludos

Demarck
12-03-2012, 19:20:05
A menos que un tonto profesor te lo halla pedido, una contraseña incorrecta no es un error ni mucho menos representa un estado crítico. De hecho, pocas cosas son críticas en el mundo virtual. Mi consejo: Si vas a utilizar un icono, utiliza el de información para este caso. Por estas malas prácticas es que después dicen que los programadores no sabemos de usabilidad.
Bueno como te digo, no estudio progamación por ende ningún "Profesor" me ha pedido nada, y si lees bien
yo puse que me salga un Estilo de mensaje por ejemplo estilo de Error.

Chris
12-03-2012, 20:58:43
Bueno como te digo, no estudio progamación por ende ningún "Profesor" me ha pedido nada, y si lees bien
yo puse que me salga un Estilo de mensaje por ejemplo estilo de Error.

No, no te ofendas compañero. Me imaginé que estabas empezando en esto por el problema que planteaste y por el código sin identación que compartiste. Además de ser tu primer mensaje. Pero bueno, bien dicen que todo no es lo que parece :p

Según leí bien, querías mostrar el mensaje junto a un icono de error o icono crítico. Es por eso que te sugerí que evitarás hacer esto porque una contraseña incorrecta no es un error ni algo crítico. Es simplemente, una contraseña incorrecta.

Saludos!

ElDioni
13-03-2012, 09:58:15
Bueno el Form1 si es el Principal, y no lo quiero desaparecer, sólo Ocultarlo con el "hide;" y por el otro lado de que me faltan begin-end, no falta nada ya que si pongo eso me salta errores.

Si te fijas en el código que has cogido de ecfisa y que dices que te funciona, verás que si que tienen los begin y los end en las condiciones del if y del else que son los que yo te indicaba que te faltaban en tu código, no se porque dices que te daban error si los ponías.

Saludos.