Показать сообщение отдельно
  #6  
Старый 27.11.2009, 16:21
Asinkrit Asinkrit вне форума
Местный
 
Регистрация: 29.10.2009
Сообщения: 446
Репутация: 271
По умолчанию

Цитата:
Сообщение от Rat
Asinkrit Покажи как надо.

Легко)

Вырезки из одного проекта (база ms access):

во первых, перед запуском приложения, надо вывести сплеш окно для ввода логина и пароля, и если в базе таковые имеются, то приложение стартует, иначе нет.

Файл проекта:
Код:
  Application.Initialize;
  Application.CreateForm(TDM, DM); 

  DM.DBPath:=ExtractFilePath(Application.ExeName)+'_Garanties.mdb';

  FKSplash := TFKSplash.Create(Application);
  FKSplash.Show;
  FKSplash.Update;

  while not FKSplash.Going do Application.ProcessMessages;

  if FKSplash.Stop then
    begin
    DM.Free;
    FKSplash.Hide;
    FKSplash.Free;
    end
      else
        begin
        FKSplash.Hide;
        FKSplash.Free;
        // в этом месте создание форм и модулей
        Application.Run;
        end;

В дата модуле, подключение и проверка на наличие юзера:

Код:
function TDM.ConnectToDB: boolean;
begin
  try
    ABase.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+
      FDBPath+';Mode=ReadWrite;Persist Security Info=False;Jet OLEDB:Database Password=19473396';
    ABase.Connected:=true;
  finally
    Result:=ABase.Connected;
  end;
end;

function TDM.GetUserID(const aLogin, aPassword: TStr50): Integer;
begin
  with QuerrySQL do
    try
      if active then close;
      SQL.Text:='select user_id, user_FIO, user_is_admin from users '+
        'where user_login = '+QuotedStr(aLogin)+' and user_password = '+
        QuotedStr(aPassword);
      Open;
      Last;
      First;
      if FieldByName('user_id').AsInteger > 0 then
        begin
        Result:=FieldByName('user_id').AsInteger;
        FUserFIO:=FieldByName('user_FIO').AsString;
        FIsAdmin:=FieldByName('user_is_admin').AsBoolean;
        end
          else
            begin
            Result:=0;
            FUserFIO:='';
            end;
      if active then close;
    except
      Result:=0;
      FUserFIO:='';
    end;
  FUserID:=Result;
end;

В сплеш форме, проверяем на введенные данные:
Код:
if DM.GetUserID(dxEdit1.Text,dxMaskEdit1.Text) = 0 then 
    StatusLabel.Caption:='Неверный логин или пароль...'
  else
    begin
      FGoing := true;
      FStop := false;
    end;

Или если нажата кнопка отмена, то
Код:
    FStop:=true;
    FGoing:=true;

Вообщем то все просто)
Ответить с цитированием