К вопросу об интерфейсе

IBX, FIBPlus, UIB, ADO, .Net и прочее-прочее-прочее, в общем все, что относится к созданию приложений, работающих с InterBase, Firebird и Yaffil - клиент-серверных, трехзвенных, консольных и т.п.

Модератор: kdv

Ответить
PROF
Сообщения: 12
Зарегистрирован: 29 ноя 2004, 05:18

К вопросу об интерфейсе

Сообщение PROF » 02 фев 2009, 17:02

Чую, должен быть какой-то простой способ показывать на экране сообщения в виде окна типа "Ждите, идет...". На вполне оправданный вопрос "Зачем тебе это?" отвечу "Нужно". Вот один из примеров: запуск приложения сосотоит из нескольких этапов загрузки. Логично, чтобы на экране в момент запуска звучали сообщения типа "Подключается база данных", "Загружаются настройки программы" и т.д. Помогите, кто может.

WildSery
Заслуженный разработчик
Сообщения: 1738
Зарегистрирован: 05 июн 2006, 16:19

Re: К вопросу об интерфейсе

Сообщение WildSery » 02 фев 2009, 21:52

Как делал, что не получилось? Или ты просишь за тебя программу написать?
Если ты подключаешь БД, так и пиши в статусе, "подключаю БД", если открываешь запрос и читаешь настройки, аналогично. Никаких сложностей не вижу.

PROF
Сообщения: 12
Зарегистрирован: 29 ноя 2004, 05:18

Re: К вопросу об интерфейсе

Сообщение PROF » 03 фев 2009, 13:53

Делал то все самым простым способом. Создал диалоговое окно WaitDlg без конпки, которое, в принципе, предлагаю назвать монологовым. Окно создается заранее при запуске приложения, и высвобождается из памяти при закрытии (создавать динамически каждый раз при обращении пробовал, не получилось). Создал функцию со входным параметром WCAPTION. WCAPTION:="Сообщение типа подождите...". Если WCAPTION:="" - окно закрывается. Проблем никаких нет, если действительно ждать и ничего не делать. Как только пользователь снимает фокус с окна (щелкнув куда-нибудь по экрану, или откроет другое окно), начинаются проблемы. Монолог-окно не закрывается, вернее закрыть можно по FREE. Для наглядности вот текст функции ShowWait(). Refresh содежимого окна - еще одна побочная проблема.

Код: Выделить всё

var
  WaitDlg: TWaitDlg; // TWaitDlg класс от TForm;

procedure ShowWait(WCaption: string);
begin
  if WCaption='' then
  begin
    if WaitDlg.CanFocus then
      if WaitDlg.Visible
        then WaitDlg.Close;
  end else
  begin
    WaitDlg.WaitLabel.Caption:=WCaption;
    if not WaitDlg.Visible then WaitDlg.Show;
    WaitDlg.Refresh; WaitDlg.WaitLabel.Refresh;
  end;
end;

WildSery
Заслуженный разработчик
Сообщения: 1738
Зарегистрирован: 05 июн 2006, 16:19

Re: К вопросу об интерфейсе

Сообщение WildSery » 03 фев 2009, 17:38

Application.ProcessMessages штоле?
Твои вопросы к IB/FB, да и вообще к СУБД не имеют никакого отношения, потому рекомендую пойти на форум по Дельфи.

Ответить