Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 1 144

/ вопрос открыт /

Доброго времени суток, уважаемые эксперты!
У меня к вам такой вопрос? В проекте 4 формы, Form1, Form2, Form3 и Form4. Главная - Form1. Мне нужно чтобы
к Form4 доступ был через пароль, тоесть когда
обращаюсь к Form4, всплывало окошко введите
пароль. Как мне это сделать?
И если можно то ещё, на форме две иконки первая
включает вторую, а форма отключает вторую и
включает первую, но они у меня на самом краю
формы и когда я мышку наведу на рабочий стол
(форма у меня 200Х200), то вторая так и остаётся
включенной. Как сделать так, чобы и рабочий стол
отключал вторую иконку и включал первую?
Заранее благодарен.

Толков Геннадий Викторович Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: Толков Геннадий Викторович (статус: Посетитель)
Вопрос отправлен: 26 ноября 2007, 21:24
Состояние вопроса: открыт, ответов: 1.

Ответ #1. Отвечает эксперт: Feniks

Здравствуйте, Толков Геннадий Викторович!
Если я Вас правильно понял, то у Вас есть два варианта обработать нажатие на кнопку (например BtnShowForm4) на главной форме (форма1):
1. Вызвать функцию InputQuery('Введите пароль', 'Пароль', StrPassword) и если введеное значение совпадает с паролем, тогда открываем/показываем Форму4. Где-то так:

var 
   StrPasswprd: String;
begin
   if InputQuery('Введите пароль', 'Пароль', StrPassword) then
      if StrPassword='MyPass' then
         Form4.Show
      else
         ShowMessage('Пароль неверный !!!');
end;

2. Второй способ чуть сложней. Надо создать новую форму для ввода пароля, если хотите, чтобы окно было посимпотичней. Назавем ее ФормаПасс. Далее делаем тоже самое, только сначало показываем модально ФормуПасс и при ее успешном закрытии проверям введенный пароль. Если он совпадает, показываем Форму4.

Вот и все. И ничего тут сложного. Только не забудьте свойство Visible Формы4 поставить в false, что бы она не появлялась сразу при старте прогаммы.

Ответ отправил: Feniks (статус: Бакалавр)
Время отправки: 28 ноября 2007, 11:30
Оценка за ответ: 5


Мини-форум вопроса

Всего сообщений: 6; последнее сообщение — 28 ноября 2007, 11:33; участников в обсуждении: 3.
Мережников Андрей

Мережников Андрей (статус: Абитуриент), 26 ноября 2007, 21:41 [#1]:

Уточните, если можно. Все формы на экране находятся одновременно? Form4 тоже всегда на экране или должна появляться только после ввода пароля? И что значит форма отключает вторую и включает первую? Форма сама по себе или при каком-то действии пользователя (например,клик мышкой по форме)?
Толков Геннадий Викторович

Толков Геннадий Викторович (статус: Посетитель), 26 ноября 2007, 22:03 [#2]:

Здравствуйте Андрей.
Form4 должна появляться после ввода пароля
Feniks

Feniks (статус: Бакалавр), 27 ноября 2007, 10:03 [#3]:

"И если можно то ещё, на форме две иконки первая
включает вторую, а форма отключает вторую и
включает первую, но они у меня на самом краю
формы и когда я мышку наведу на рабочий стол
(форма у меня 200Х200), то вторая так и остаётся
включенной. Как сделать так, чобы и рабочий стол
отключал вторую иконку и включал первую?
Заранее благодарен." Вы сами та хоть поняли, что спросили ? Бо мы нет. Переформулируйте правильно Ваш вопрос с укзанием имен Ваших форм, а не "первая... вторая..." Правильно заданный вопрос - это уже почти 90% ответа на него.
Мережников Андрей

Мережников Андрей (статус: Абитуриент), 27 ноября 2007, 11:29 [#4]:

Так если Form4 должна появляться на экране только после ввода пароля,значит в какой-то из форм должна быть кнопка или пункт меню,которые собственно и вызывают появление Form4. Так поставьте в соответствующем обработчике вызов дополнительной формы для ввода пароля (модальную) до вызова Form4. а затем анализируйте значение,возвращаемое формой ввода пароля (PassForm)
Толков Геннадий Викторович

Толков Геннадий Викторович (статус: Посетитель), 27 ноября 2007, 23:02 [#5]:

Я-же написал Главная - Form1, и кнопки есть которые открывают все формы, но одну форму(Form4) мне нужно открыть через пароль. Если можно пришлите код.
Feniks

Feniks (статус: Бакалавр), 28 ноября 2007, 11:33 [#6]:

Можно еще так попробовать. Но для этого нужна отдельная форма.
const
  InputBoxMessage = WM_USER + 200;
 
type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    procedure InputBoxSetPasswordChar(var Msg: TMessage); message InputBoxMessage;
  public
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.DFM}
 
procedure TForm1.InputBoxSetPasswordChar(var Msg: TMessage);
var
  hInputForm, hEdit, hButton: HWND;
begin
  hInputForm := Screen.Forms[0].Handle;
  if (hInputForm <> 0) then
  begin
    hEdit := FindWindowEx(hInputForm, 0, 'TEdit', nil);
    { 
     // Change button text: 
     hButton := FindWindowEx(hInputForm, 0, 'TButton', nil); 
     SendMessage(hButton, WM_SETTEXT, 0, Integer(PChar('Cancel'))); 
   }
    SendMessage(hEdit, EM_SETPASSWORDCHAR, Ord('*'), 0);
  end;
end;
 
procedure TForm1.Button1Click(Sender: TObject);
var
  InputString: string;
begin
  PostMessage(Handle, InputBoxMessage, 0, 0);
  InputString := InputBox('Input Box', 'Please Enter a Password', '');
end;

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 23 октября 2017, 00:00
Выполнено за 0.06 сек.
Рейтинг@Mail.ru