Вопрос № 60509: Здравствуйте. Подскажите пожалуйсто, как сделать так называемое окно приветствия в программе, т.е. до появления и полной загрузки главной формы вывести окно с ProgressBar, в которой будет отображаться статус запуска программы.
ЗЫ естественно пос...Вопрос № 60530: как определить наличие (присутствие) компьютера с определенным IP адресом в сети ...
Вопрос № 60.509
Здравствуйте. Подскажите пожалуйсто, как сделать так называемое окно приветствия в программе, т.е. до появления и полной загрузки главной формы вывести окно с ProgressBar, в которой будет отображаться статус запуска программы.
ЗЫ естественно после полного появления главной формы окно закрывается.
Заранее спасибо.
Отправлен: 29.10.2006, 02:26
Вопрос задал: Глеб (статус: Посетитель)
Всего ответов: 4 Мини-форум вопроса >>> (сообщений: 3)
Отвечает: DeVampir
Здравствуйте, Глеб!
Добавьте в проек еще одну форму, уберите у нее границы, поставьте красивую картинку, ProgressBar и все что душе угодно. В свойствах проекта поставьте, чтоб при запуске приложения показывалась именно это форма. А основную форму делайте невидимой, пока она не загрузится. Как только это произойдет (загрузка закончится) - меняйте видимости у форм (форму приветствия можно вообще очистить, чтоб память не занимала). Вот в принципе и весь алгоритм... Удачи!!!
--------- Нам будет трудно - это терпимо! (с) М. Горшенев
Ответ отправил: DeVampir (статус: 3-ий класс)
Ответ отправлен: 29.10.2006, 06:07
Отвечает: Monah
Здравствуйте, Глеб!
Ответ DeVampir не правильный. Так как в этом случае форма, созданная первой, ассоциируется с самим приложением, если ее убрать, как советует DeVampir, то после закрытия окна приветствия, закроется и приложение. Созадете новую форму, устанавливаете на ней все что нужно. В свойствах проекта (меню Project/options) Вкладка Forms находите вашу вторую форму и двойным кликом переносите её в правое окно, форма не будет создаваться автоматически . Затем в файле *.dpr меняете см приложение.
Приложение:
Ответ отправил: Monah (статус: 6-ой класс)
Ответ отправлен: 29.10.2006, 16:20
procedure TSplashForm.FormCloseQuery(Sender: TObject;
var CanClose: Boolean);
begin
CanClose := <здесь условие выхода из окна приветствия>;
end;
procedure TSplashForm.FormHide(Sender: TObject);
begin
repeat
Application.ProcessMessages;
until SplashForm.CloseQuery;
end;
Ответ отправил: Gladiator (статус: 5-ый класс)
Ответ отправлен: 30.10.2006, 08:34
Отвечает: PaVeL_Ekt
Здравствуйте, Глеб!
Попробуй эту форму запускать так:
procedure TForm1.FormCreate(Sender: TObject);
begin
OkBottomdlg:=TOkBottomdlg.Create(nil); // окно диалога, но можно и форму
OkBottomdlg.ShowModal;
end;
Приложение:
--------- Да поможет Вам F1, да сохранит Вас F2, во имя CTRL, ALT и святого DEL
Ответ отправил: PaVeL_Ekt (статус: 5-ый класс)
Ответ отправлен: 30.10.2006, 10:07
Вопрос № 60.530
как определить наличие (присутствие) компьютера с определенным IP адресом в сети
Отправлен: 29.10.2006, 08:49
Вопрос задал: Alex_CRG (статус: Посетитель)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 1)
Отвечает: sir henry
Здравствуйте, Alex_CRG!
Единственный надежный способ - пропинговать этот IP.
У компонента Indy TIdIcmpClient есть метод Ping, который посылает эхо-сигнал в сеть по указанному адресу. В событии OnReply записывается обработчик в зависимости от того, получен сигнал ответа или нет.
Ответ отправил: sir henry (статус: Академик) Россия, Красноярск ---- Ответ отправлен: 29.10.2006, 10:07 Оценка за ответ: 5
Отвечает: Bob Johnson
Здравствуйте, Alex_CRG!
не согласен, пинг - это совсем ненадежный способ. можно запретить пинг файерволом и все...
перед тем как решать эту задачу надо убедить себя в том, что 100% надежного способа нет.
далее я бы попробовал arp (т.е. послать arp запрос на определение mac адреса по данному ip). обычно на arp отвечает только тот компьютер, чей ip ты укажешь в запросе. блокировать arp смысла нет, т.к. иначе компьютеру вообще ничего никто послать не сможет, и его наличие в сети смысла иметь не будет. но возможна ситуация, когда на arp ответит и чужой компьютер (хотя это бывает редко и требует очень специфической настройки этого компьютера и применения доп. по)
ну и конечно можно просканировать порты. только большинство файерволов воспринимают это как атаку и отключают сканирующий компьютер вообще.
так что в конечном счете необходимо сначала провести анализ компьютера, наличие которого тебя интересует на предмет служб и т.п. (например, пингуется он или нет), а затем уже использовать выбранный на основе этого метод.
Ответ отправил: Bob Johnson (статус: Академик) Россия, Калуга WWW:Программирование ---- Ответ отправлен: 29.10.2006, 14:04 Оценка за ответ: 5