Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Sobre ventana de Password (https://www.clubdelphi.com/foros/showthread.php?t=9643)

silviodp 28-04-2004 15:16:37

Sobre ventana de Password
 
Quiero que en mi aplicación me aparezca antes que la ventana principal de mi programa una form que pida nombre de usuario y contraseña, que controle la entrada de un usuario al mismo.
Que propiedades tengo que darle ha ésta para que haga lo que quiero?, en que evento?, creo que tendría que crearla de forma modal, pero la verdad es que probé varias maneras pero no funciona.
Gracias.

__cadetill 28-04-2004 15:21:01

Hola

Esto se ha preguntado en varias ocasiones en los foros

Tirando un poco de la búsqueda, he encontrado este hilo

Espero te sirva

silviodp 28-04-2004 17:11:05

Sobre ventana de Password
 
Cadetill:
estuve viendo el hilo al que te referias pero no me quedó claro la parte cuando creo el fromulario de forma modal, ya que me da error cuando ejecuto el programa.
El código que puse es el siguiente:
Código:

Begin

//otras sentencias: Creaciones de Form etc,...
...
...
...

FAcceso:=FAcceso.Create(Application);
FAcceso.ShowModal;

Application.Run;

end.

El error que me da cuando quiero compilar es el siguiente:
'Cannot make a visible windows modal'
Gracias.

Silvio.-

silviodp 28-04-2004 17:14:21

Sobre ventana de Password
 
Perdón transcribí mal ésta línea:
Código:

FAcceso:=TFAcceso.Create(Application);

roman 28-04-2004 17:16:09

Cita:

Empezado por silviodp
El error que me da cuando quiero compilar es el siguiente:
'Cannot make a visible windows modal'

Dudo que el error te lo de al compilar pero de cualquier manera asegúrate que la propiedad Visible de FAcceso sea false.

// Saludos

silviodp 28-04-2004 20:49:24

Sobre pregunta de Password
 
Román:
si la propiedad Visible está en Flase.
Lo probé de las dos formas.

Silvio.-

jachguate 28-04-2004 20:57:12

Y el FormStyle, es un fsNormal???

jachguate 28-04-2004 21:04:42

Es conveniente que revises también el código del evento OnCreate de tu form, no sea que alli lo estes poniendo visible o llamando a su método show...

Hasta luego.

;)

silviodp 28-04-2004 22:12:23

Sobre ventana de password
 
Las propiedades del Form están así:

FormStyle:=fsNormal
Visible:=True
Project -> Options -> Auto-Create Form.

Silvio.-

jachguate 28-04-2004 22:19:40

En primer lugar, quitalo de los Autocreate Forms, pues tengo entendido que las estas creando "a mano" con FAcceso:=FAcceso.Create(Application);

Ademas, pone su propiedad visible a False. Salvo que estes alterando el valor de esta propiedad, o llamando a su método Show/ShowModal mas de una vez, no tendrias porque obtener el mensaje de error.

silviodp 29-04-2004 22:55:31

Sobre ventana de Password
 
Hola, ya solucioné el problema de la ventana modal, pero ahora lo que no puedo hacer es controlar la entrada al programa ya muestro los mensajes en caso de el susuario o la pass sean incorrectas pero entra lo mismo.
El código de mi ventana modal es:
Código:

procedure TForm23.EntrarClick(Sender: TObject);
begin
  Modelodatos.TblLogin.Active:=True;
  If Modelodatos.TblLogin.Locate('Usuario',User.Text,[]) Then
  begin
    If ModeloDatos.TblLogin.FieldByName('Clave').AsString<>Pass.Text Then
    ShowMessage('Clave Inconrrecta');
    Pass.SetFocus;
  end
  else
  ShowMessage('usuario inexistente');
  User.SetFocus;
end;

Gracias.

Silvio.-

jachguate 29-04-2004 23:00:46

Pero aqui debiera quedarse en la misma ventana, y no "pasar" como vos le decis... aun cuando el usuario y password sean correctos. Otra vez creo que no estas dando la información completa. :(

__cadetill 29-04-2004 23:02:08

Pero, es que, a ver, el control de entrar o no en la app lo has de hacer desde el DPR del proyecto, NO desde el form que lanzas para capturar user/pass

Mirate nuevamente el hilo que te mencioné para ver como controlar eso

silviodp 30-04-2004 00:02:22

Sobre ventana de Password
 
Si el usuario y la pass son correctas también entra al programa..., dije que lo hacía SIEMPRE.
Y desde el proyecto como tengo que hacerlo porque al hilo donde explica lo hace igual.
Es:
Código:

var
 n:Variant;
begin
  Application.Initialize;
  Application.CreateForm(TForm1, Form1);
  Application.CreateForm(TModeloDatos, ModeloDatos);
  Application.CreateForm(TForm22, Form22);
  ModeloDatos.TblEmpresa.Active:=True;
  n:=ModeloDatos.TblEmpresa.FieldValues['Nombre'];
  Form1.Caption:='BIENES DE USO 1.0'+'  -  '+n;
  ModeloDatos.TblEmpresa.Active:=False;
  Form23:=TForm23.Create(Application);// lo creo
  Form23.ShowModal; //y lo muestro.-
  Application.Run;
end.

Gracias.

Silvio.-

__cadetill 30-04-2004 00:39:00

no se tu, pero......

Cita:

Empezado por silviodp
Código Delphi [-]
var
 n:Variant;
begin
  Application.Initialize;
  Application.CreateForm(TForm1, Form1);
  Application.CreateForm(TModeloDatos, ModeloDatos);
  Application.CreateForm(TForm22, Form22);
  ModeloDatos.TblEmpresa.Active:=True;
  n:=ModeloDatos.TblEmpresa.FieldValues['Nombre'];
  Form1.Caption:='BIENES DE USO 1.0'+'  -  '+n;
  ModeloDatos.TblEmpresa.Active:=False;
  Form23:=TForm23.Create(Application);// lo creo 
  Form23.ShowModal; //y lo muestro.-
  Application.Run;
end.

Cita:

Empezado por cadetill
Código Delphi [-]
  Application.Initialize;
  // DataModule que da acceso a la conexion
  Application.CreateForm(TBDades, BDades);

  Login := TLogin.Create(Application);
  try
     try
        Respuesta := Login.ShowModal;
     finally
            FreeAndNil(Login);
     end;
  except
       ShowMessage('error creando form');
  end;

  if Respuesta = mrOK then
   begin
        Application.CreateForm(TfmMenu, fmMenu);
        Application.Run;
   end
  else FreeAndNil(BDades);

Yo veo algo de diferencias entre tu código y el propuesto en el hilo mencionado ;)

silviodp 30-04-2004 00:47:53

Sobre ventana de Password
 
Si es cierto, no era ese el código que yo había visto, perdón.-
Voy a probar con ese.
Gracias.

Silvio.-

silviodp 30-04-2004 13:58:15

Sobre ventana de Password
 
Cadetill:
por que cuando escribo el código:
Código:

begin
  Application.Initialize;
  Application.CreateForm(TModeloDatos, ModeloDatos);
  Application.CreateForm(TForm22, Form22);
  ModeloDatos.TblEmpresa.Active:=True;
  n:=ModeloDatos.TblEmpresa.FieldValues['Nombre'];
  Form1.Caption:='BIENES DE USO 1.0'+'  -  '+n;
  ModeloDatos.TblEmpresa.Active:=False;
  Form23:=TForm23.Create(Application);
  Form23.ShowModal;
  if Form23.ShowModal=mrYes then
  begin
        Application.CreateForm(TForm1, Form1);
        Application.Run;
  end

Y quiero ejecutar me da el siguiente error: [Error] CStock.dpr(43): Undeclared identifier: 'mrYes'.
Gracias.

Silvio.-

__cadetill 30-04-2004 15:21:21

Cita:

Empezado por silviodp
Y quiero ejecutar me da el siguiente error: [Error] CStock.dpr(43): Undeclared identifier: 'mrYes'.

Si buscas un poco en la ayuda de Delphi, verás que necesitas la unit Controls

Cita:

Empezado por Delphi Help
TModalResult represents the return value from a modal dialog.

Unit

Controls


silviodp 30-04-2004 22:33:56

sobra ventana de Password
 
Podrían decirme si éste código está bien o le falta algo, está asociado al botón que tengo en mi ventana de password, el cual tiene en la propiedad ModalResult el valor mrYes;
Código:

procedure TForm23.EntrarClick(Sender: TObject);
begin
  Modelodatos.TblLogin.Active:=True;
  If Modelodatos.TblLogin.Locate('Usuario',User.Text,[]) Then
  begin
    If ModeloDatos.TblLogin.FieldByName('Clave').AsString<>Pass.Text Then
      ShowMessage('Clave Incorrecta');
      Pass.SetFocus;
  end
  else
  ShowMessage('usuario inexistente');
  User.SetFocus;
end;

Gracias.

Silvio.-

roman 30-04-2004 22:48:06

Este es el mismo código que el expuesto en el mensaje #11 (por tí) y sinceramente el compilador será más eficaz que nosotros para detectar si está bien o mal.

// Saludos

silviodp 30-04-2004 23:02:32

Sobre ventana de Password
 
Sí eso es cierto, pero mi pregunta se refiere a si el usuario es correcto y la pass también que se ejecuta?, porque compila, pero no hace lo que quiero.
Te digo lo que hace:
si el usuario y la pass son correctos: no me da ningún mensaje pero tampoco entra al programa lo hace la segunda vez que hago click en botón.
si el usuario y/o la pass no son correctos: arroja el mensaje correspondiente, pero la segunda vez que hago clik, por más que estos sigan siendo falsos entra lo mismo al programa.
No se si se explico?
Gracias.

Silvio.-

jachguate 01-05-2004 00:22:04

Hola silvio.

Aqui hay un problema fundamental. Te diré lo que yo percibo. El problema es que vos queres hacer algo que no entendes. Cómo no lo entendes, en lugar de investigar un poco y aprender el funcionamiento y comportamiento de una ventana modal, asi como la forma de manipularla desde delphi, simplemente nos estas tirando trozos de código a ver si alguien resuelve tu problema.

Estas a una sola línea de conseguirlo; pero sinceramente yo paso. No me gusta quedarme con la sensación de haber hecho el trabajo de alguien mas. Si te esforzas un poco, y lees en la ayuda de delphi sobre el método ShowModal... estoy seguro que en algunas horas vas a poder resolver vos solo tu problema... y lo mas importante: habras aprendido. Esto significa que en adelante no solo no vas a tener problemas con formas modales, sino vas a estar en capacidad de ayudar a alguien mas que los tenga.

Eso es lo que yo espero que pase. Me costaria mucho menos escupir una línea de código que todo este rollo... pero ya te dije... es una cuestión de conciencia :p

Por ahora... te dejo solo, y espero que en este mismo hilo nos informes cuando ya hayas podido resolver el problema. Tenes toda la ayuda de delphi, el histórico de los foros, los magnificos libros de Ian Marteens (por los que no tenes que gastar un solo centavo!... mas que la conexión a internet para descargarlos) y muchos otros buenos libros en el mercado.

Hasta luego.

;)

roman 01-05-2004 00:38:33

¡Ay! ¿No le puedo dar un hint chiquitito? :D

Sólo este: ¿por qué piensas que si los datos son incorrectos no se va a cerrar el formulario?

// Sorry

silviodp 02-05-2004 02:14:15

Sobre ventana de Password
 
Con respecto a los libros de Ian Marteens, de que página se pueden bajar, me decís que son gratis?
La verdad es que lo que les pregunto lo necesito urgente por eso el interés mío en tratar de hacerlo andar lo antes posible, pero bueno no hay problema voy a tratar de resolverlo solo, es cierto lo que me decís!!!
Gracias.

Silvio.-

roman 02-05-2004 02:32:58

Mira, tal como te dice mi compañero jachguate, da la impresión de que deseas que alguien te coloque el código aquí ya hecho o encontrarlo en algún lugar pero no quieres hacer el esfuerzo.

Para empezar, si te dieras a la tarea de buscar más a fondo en los foros estoy seguro de que encontrarías un código ya hecho pues el tema se ha tratado muchas veces.

Por otra parte, aunque sería recomendable que te bajases el libro de Ian Marteens (no recuerdo bien pero creo que es una versión anteriro la que se puede obtener gratuitamente pero que igual es muy buena y útil), la verdad es que tienes a tu disposición todo lo que necesitas para resolver tu problema. En la ayuda de Delphi viene perfectamente toda la información.

La sugerencia que te di en mi mensaje anterior no es una broma: tú quieres evitar que el formulario de ingreso se cierre si los datos son incorrectos. Vuelvo a preguntar, ¿cómo esperas impedir que se cierre? Para dar con la respuesta debes leer en la ayuda de Delphi qué es lo que hace ShowModal, bajo qué condiciones se cierra un formulario modal, qué papel desempeña la propiedad ModalResult tanto del formulario como del botón. Mírate la lista de eventos del formulario y verás uno o dos con nombres muy significativos, busca entonces en la ayuda de Delphi qué hacen estos eventos.

Todo esto es cuestión de media hora y llegarás finalmente a la solución de tu problema.

// Saludos

__cadetill 02-05-2004 04:48:17

Cita:

Empezado por roman
Para empezar, si te dieras a la tarea de buscar más a fondo en los foros estoy seguro de que encontrarías un código ya hecho pues el tema se ha tratado muchas veces.

Sólo hay que mirar el linck que le propuse en mi primer mensaje del hilo. Allí tiene todo el código. Sólo le falta, como bien dices, que se mire en la ayuda el funcionamiento de las ventanas modales y el funcionamiento de ModalResult :(

jachguate 02-05-2004 09:46:50

Cita:

Empezado por silviodp
Con respecto a los libros de Ian Marteens, de que página se pueden bajar, me decís que son gratis?

De la página de Ian Marteens: http://www.marteens.com

Es gratuito la cara oculta de delphi 4... si no te queres gastar la plata, pues lee ese. Por supuesto que es mejor que leas el de tu propia versión de delphi... tengo entendido que el libro te lo envian sin costo a toda españa y con algun recargo fuera de ella. En la misma página podes pedirlo.

Hasta luego.

;)

silviodp 03-05-2004 15:46:38

Sobre vetna de Password
 
Si el tema es que yo soy de Argentina, no sé será posible, que lo envién aca me imagino que no.-

silviodp 03-05-2004 22:05:49

Pregunta sobre Password
 
Me doy no puedo logar hacerlo andar, por más que busqué cual podía ser el problema o lo que falta no pude lograrlo. Voy a optar por eliminar la ventana que me controla la entrada a mi aplicación.
Gracias.

Silvio.-

jachguate 04-05-2004 08:17:47

Cita:

Empezado por silviodp
Si el tema es que yo soy de Argentina, no sé será posible, que lo envién aca me imagino que no.-

Pues entiendo que tienen envios a latinoamérica los lunes...

Ahora... el de delphi 4, llega a todas partes del mundo, pues podes descargarlo de la página.

Hasta luego.

;)


La franja horaria es GMT +2. Ahora son las 11:20:24.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi