Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы по Delphi

Модерирует : ShIvADeSt

ShIvADeSt (20-04-2006 01:53): http://forum.ru-board.com/topic.cgi?forum=33&topic=6679#1  Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102

   

vshersh



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Schatz
Напиши в OnFormCreate  

Код:
if not Assigned(ClientFrmMain) then
  ClientFrmMain := Self;

 
 
 
Добавлено:
А еще лучше твою процедуру StartClient; написать прямо в классе формы. Тогда не будет проблем с доступом к инстансу формы.

Всего записей: 506 | Зарегистр. 12-01-2006 | Отправлено: 11:55 23-02-2006
Schatz



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
vshersh
 
Огромное тебе спасибо, очень помог

Цитата:
А еще лучше твою процедуру StartClient; написать прямо в классе формы. Тогда не будет проблем с доступом к инстансу формы.

 
проблема решена переносом процедуры в класс формы.

Всего записей: 55 | Зарегистр. 31-05-2005 | Отправлено: 12:33 23-02-2006
BABAYKA



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Привет всем, кто несмотря на всеобщий выходной опять сидит у монитора....тем не менее с праздничком...
Тут вопрос у меня возник наивный, суть его следующая.....имеется главная форма, дополнительная (для ввода логина, пароля) и дата модуль. Обработчик появления доп. формы следующий:
 
procedure TFEmpl.FormShow(Sender: TObject);
begin
if FLogin.ShowModal=mrOK then
  begin
   while( not DataModule1.pFIBDatabase1.Connected ) do
      begin
      DataModule1.pFIBDatabase1.ConnectParams.UserName := FLogin.EdLogin.Text;
      DataModule1.pFIBDatabase1.ConnectParams.Password := FLogin.EdPassword.Text;
      try
      DataModule1.pFIBDatabase1.Connected:=True;
      DataModule1.pFIBDataSet1.Active:=True;
       Except
       ShowMessage('kgff fgfgkfl gkflg klk.');
       if FLogin.ShowModal=mrOK then
       end;
      end;
  end;
end;
 
Все работает.....кроме второй пимпы на доп. форме отвечающей за закрытие всего приложения при невозможности ввести правильные логин и пасс......я накалякал для её события клик  Application.Terminate; но естественно приложение не закрывается полностью...начинают последовательно мигать окно ошибки и доп. форма.....Может кто подскажет как корректно закрыть приложение?

Всего записей: 108 | Зарегистр. 09-10-2004 | Отправлено: 13:36 23-02-2006
vshersh



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
BABAYKA
Я не понял насчет пимпы... :-D
Но поробуй после Application.Terminate; вызвать Application.ProcessMessages;
 
а потом все дальнейшие обработки начинай с  

Код:
 
if Application.Terminated then
  Exit;
 
// тут пишешь код который выполняется в случае номального входа в систему
 

Всего записей: 506 | Зарегистр. 12-01-2006 | Отправлено: 13:47 23-02-2006
BABAYKA



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
vshersh
ссори ... про непонятную пимпу... на доп. форме есть две кнопки: первая ВХОД (подключение к БД)  другая ВЫХОД (закрытие всего приложения при невозможности входа)
Ранее я привел описание события появления главной формы (перед появлением вызывается доп. форма с обязательным вводом пароля/ логина если они е корректен выскакивает сооющение об ентом и опять висит доп. форма и так бесконечно. Оборвать этот процесс возможно по клику на кнопку ВЫХОД. Вот с этим и не понятно мне......при Application.Terminate; процесс появления доп. формы и сообщения об ошибке не пропадают , а мигают последовательно на экране.....вот их то и нужно как то убить....
может что то докалякать сюда?
while( not DataModule1.pFIBDatabase1.Connected ) do
т. е. пока не будет установленно pFIBDatabase1.Connected или не произайдет нажатие на кнопку ВЫХОД?

Всего записей: 108 | Зарегистр. 09-10-2004 | Отправлено: 14:09 23-02-2006
vshersh



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
BABAYKA
Я бы сделал отображение формы логина до отображения главной формы. А потом бы проверял: если логин прошел, то показываю главную форму -- иначе выход из приложения.  
И не надо никаких циклов, можно написать так:
 

Код:
procedure TLoginForm.OKButtonClick(Sender: TObject);
begin
  try
    // все присваиваем
    DB.User := ...
    DB.Pass := ...
 
    // проверяем коннект
    DB.Connected := True;
 
    // закрываем форму
    ModalResult := mrOk;
  except
    // говорим, что пароль или еще чего-то неверно!
    ShowError('Error connecting ...');
    ModalResult := mrNone;
  end;
end;

 
а в файле проекта пишем  

Код:
begin
  Application.Initialize;
  if ShowLoginOK then
  begin
    Application.CreateForm(TMainForm, MainForm);
    Application.Run;
  end;
end.

 
при этом процедура ShowLoginOK приблизительно будет выглядеть так:

Код:
function ShowLoginOK: Boolean;
begin
  with TLoginForm.Create(nil) do
  try
    Result := ShowModal = mrOk;
  finally
    Free;
  end;
end;

Всего записей: 506 | Зарегистр. 12-01-2006 | Отправлено: 14:35 23-02-2006
BABAYKA



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
vshersh
 
Спасибо....сейчас попробую таким путем.....только я что то не понял все таки как установить чтобы LoginForm появлялась первой, как её вызвать..?

Всего записей: 108 | Зарегистр. 09-10-2004 | Отправлено: 15:04 23-02-2006
vshersh



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
BABAYKA
ну я же написал --  ShowLoginOK

Всего записей: 506 | Зарегистр. 12-01-2006 | Отправлено: 15:14 23-02-2006
BABAYKA



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
да...да.....спасибо.......уже воткнулся и пытаюсь реализовать....
 
Добавлено:
vshersh
 
Что то не идет никак.......ругается:
 
[Error] ULogin.pas(17): Unsatisfied forward or external declaration: 'TFLogin.ShowLoginOK'
 
т.е. Неудовлетворенная передовая или внешняя декларация: 'TFLogin. ShowLoginOK'  
 
подскажи плиз как её удовлетворить???
 

Всего записей: 108 | Зарегистр. 09-10-2004 | Отправлено: 15:21 23-02-2006
Schatz



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Доброго времени суток вам.
 
Еще раз обращусь, своими силами не получилось справиться.
Есть пример от Indy  \Indy9Demos\IdTCPDemo\Client
Пытаюсь переложить этот пример на ActivX(OCX)
 
никак не получается переложить, постоянно какие то проблемы возникают, может кто уже делал нечто подобное, или может кто знает как это сделать малой кровью, посоветуйте пожалуйста.
 
Сейчас столкнулся с тем что:
Есть класс    
TClientHandleThread = class(TThread)
  private
    CB: TCommBlock;
    procedure HandleInput;
  protected
    procedure Execute; override;
  end;
Есть Событие ReadData(Data:String);
 
Вот процедуры класса:
 
procedure TClientHandleThread.HandleInput;
begin
  if CB.Command = 'GetClients' then
    MessageDlg ('Список подключеных клиентов'+#13+CB.Msg,
                mtInformation, [mbOk], 0)
  else
    if ??????????????.FEvents <> nil then ??????????????.FEvents.OnDataRead(CB.Msg);
end;
 
procedure TClientHandleThread.Execute;
begin
  while not Terminated do
  begin
    if not Client.Connected then
      Terminate
    else
    try
      Client.ReadBuffer(CB, SizeOf (CB));
      Synchronize(HandleInput);
    except
    end;
  end;
end;
Procedure StopClient;
 
Затык в том что я не знаю как правильно достучаться до FEvents и не совсем уверен в правильном ли направлении я изначально пошел

Всего записей: 55 | Зарегистр. 31-05-2005 | Отправлено: 16:43 23-02-2006
vshersh



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
BABAYKA
См. тестовый пример
_http://rapidshare.de/files/13946325/TestLogin.rar.html

Всего записей: 506 | Зарегистр. 12-01-2006 | Отправлено: 17:40 23-02-2006
BABAYKA



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
vshersh
 
отл. работает!.....Большое тебе человеческое спасибо!

Всего записей: 108 | Зарегистр. 09-10-2004 | Отправлено: 17:46 23-02-2006
vshersh



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Schatz

Цитата:
Затык в том что я не знаю как правильно достучаться до FEvents и не совсем уверен в правильном ли направлении я изначально пошел

Не понятно, кто такие у тебя FEvents
А насчет направления - так лучше толком объясни что надо сделать, ато много слов и мало смысла.

Всего записей: 506 | Зарегистр. 12-01-2006 | Отправлено: 17:59 23-02-2006
Vitus_Bering



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Есть текст. файл с данными хотелось бы его добавить в программный файл, и затем обращаться к нему, напр. через LoadFromStream. Как это можно сделать?

Всего записей: 936 | Зарегистр. 30-09-2005 | Отправлено: 19:01 24-02-2006
vshersh



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Vitus_Bering
Если стоят RX-компоненты то в меню Project->Resources можно добавлять данные, а читать при помощи TResourceStream

Всего записей: 506 | Зарегистр. 12-01-2006 | Отправлено: 19:06 24-02-2006
Vitus_Bering



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
vshersh
Что такое RX-компоненты ?

Всего записей: 936 | Зарегистр. 30-09-2005 | Отправлено: 19:14 24-02-2006
vshersh



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Vitus_Bering
_http://www.rx.delphiplus.org/
Можно и без них
Идея такая: запихнуть нужные тебе данные в файл ресурса проекта.

Всего записей: 506 | Зарегистр. 12-01-2006 | Отправлено: 19:18 24-02-2006
Vitus_Bering



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
vshersh
Спасибо, но как запихнтуть их туда?
 
 
Добавлено:
хотелось бы сделать это без RX.

Всего записей: 936 | Зарегистр. 30-09-2005 | Отправлено: 19:21 24-02-2006
vshersh



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Vitus_Bering
Я же говорю это можно сделать при помощи любого редактора ресурсов. Я использовал либо рх либо вижуал студию.

Всего записей: 506 | Зарегистр. 12-01-2006 | Отправлено: 19:27 24-02-2006
Vitus_Bering



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Как это можно сделать средствами Дельфи?

Всего записей: 936 | Зарегистр. 30-09-2005 | Отправлено: 19:32 24-02-2006
   

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы по Delphi
ShIvADeSt (20-04-2006 01:53): http://forum.ru-board.com/topic.cgi?forum=33&topic=6679#1


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru