Форум: "Начинающим";
Текущий архив: 2005.11.27;
Скачать: [xml.tar.bz2];
ВнизМожно ли создать приложение, в котором нет ни одной формы? Найти похожие ветки
← →
Dimon777 © (2005-11-07 12:57) [0]Мне необходимо было сделать приложение, в котором нет ни одной формы. Я попробовал использовать Service Application из хранилища объектов, в событии OnCreat которого записал процедуру которая, мне нужна (Вызов диалога открытия файла). В общем добился примерно того что мне было нужно. Но обнаружилась одна проблема: Не удаётся присвоить Application.Title := "название программы на русском языке", т.е. почему-то не отрабатывает эту строку в файле проекта, как в обычном приложении. выводит вместо этого название exe-файла, как будто этой строки не существует.
Как исправить ситуацию?
Для чего вообще предназначен этот Service Application ?
← →
Digitman © (2005-11-07 13:10) [1]
> необходимо было сделать приложение, в котором нет ни одной
> формы
это самоцель ?
> Для чего вообще предназначен этот Service Application ?
уж точно не для того чтобы "приложение не имело ни одной формы"
← →
SergP. (2005-11-07 13:22) [2]Может тебе нужно консольное приложение?
Но там нет объекта Application
← →
dimon777 © (2005-11-07 14:27) [3]Нет, это не самоцель. Цель была написать приложение, позоляющее открывать файлы отчетов FastReport (*.frp). Если интересно, ситуация такая - существует локальное приложение, в котором документы формируются с помощью FastReport. Необходимо было написать приложение позволяющее просматривать и распечатывать эти документы где-нибудь на другой машине. С задачей я в основном справился с помощью всего одной короткой процедуры, записанной в обработчике OnCreat компонента TService. Но возникла одна особенность (см.выше), на которую в общем-то можно не обращать внимание, но все таки неприятно.
← →
dimon777 © (2005-11-07 14:28) [4]Нет, это не самоцель. Цель была написать приложение, позоляющее открывать файлы отчетов FastReport (*.frp). Если интересно, ситуация такая - существует локальное приложение, в котором документы формируются с помощью FastReport. Необходимо было написать приложение позволяющее просматривать и распечатывать эти документы где-нибудь на другой машине. С задачей я в основном справился с помощью всего одной короткой процедуры, записанной в обработчике OnCreat компонента TService. Но возникла одна особенность (см.выше), на которую в общем-то можно не обращать внимание, но все таки неприятно.
← →
Digitman © (2005-11-07 14:42) [5]но при чем здесь наличие или отсутствие форм - так и осталось великим секретом ...
простейшая программаа, реализующая сабж, могла бы выглядеть так :
program Myprog;
begin
PrintReport(ReportFileName);
end.
как видишь, никаких форм здесь нет и в помине
← →
umbra © (2005-11-07 14:46) [6]2 SergP. (07.11.05 13:22) [2]
uses Forms
иApplication
есть. Дествительно, автору вопроса нужно скорее консольное приложение, а не сервис
← →
Anatoly Podgoretsky © (2005-11-07 14:46) [7]Dimon777 © (07.11.05 12:57)
Подавляющее большинство программ в мире не имеет форм, формы это особенность Дельфи.
← →
dimon777 © (2005-11-07 15:08) [8]
> Digitman © (07.11.05 14:42) [5]
> но при чем здесь наличие или отсутствие форм - так и осталось
> великим секретом ...
Попробую пояснить подробнее.
Как бы существует уже форма просмотра доукумента FastReport, я просто ставлю компонент frReport на TService и говорю при OnCreat комп. TService
frReport1.LoadPreparedReport;
frReport1.ShowPreparedReport;
И никаких дополнительных форм мне не надо.
При закрытии окна просмотра документа приложение, использующее TService автоматически закрывается, если же ставить все на форму, то приходится еще и добавлять Application.Terminate; При этом на не очень быстрых машинах заметно что появляется и быстро пропадает главная форма.
← →
dimon777 © (2005-11-07 15:10) [9]
> umbra © (07.11.05 14:46) [6]
> 2 SergP. (07.11.05 13:22) [2]
>
> uses Forms и Application есть. Дествительно, автору вопроса
> нужно скорее консольное приложение, а не сервис
Дурацкий, наверно, вопрос - А что такое "консольное приложение"?
← →
dimon777 © (2005-11-07 15:13) [10]Если честно, то я и TService не знаю что такое. Просто случайно нашел в хранилище ServiceApplication и использовал интуитивно.
← →
Digitman © (2005-11-07 15:24) [11]
> Как бы существует уже форма просмотра доукумента FastReport
вот ее и делай главной
← →
umbra © (2005-11-07 15:26) [12]консольное приложение - это прога, в которой нет ни одной формы. При его запуске появляется окно, похожее на окно cmd.exe. Но, как я понял, форма у вас в проекте все-таки есть. Что мешает сделать ее невидимой, и показать в нужный момент?
← →
Digitman © (2005-11-07 15:30) [13]
> umbra © (07.11.05 15:26) [12]
> консольное приложение - это прога, в которой нет ни одной
> формы
смелое утверждение.
надо понимать, приложение, код которого выглядит как
program MyProgram;
begin
end.
тоже является консольным ?
← →
dimon777 © (2005-11-07 15:30) [14]
> Digitman © (07.11.05 15:24) [11]
>
> > Как бы существует уже форма просмотра доукумента FastReport
>
>
> вот ее и делай главной
Она недоступна. Это окно видно только при выполнении программы, когда говорю frReport.Show;
← →
Digitman © (2005-11-07 15:43) [15]
> dimon777 © (07.11.05 15:30) [14]
ты несешь несуразицу.
с одной стороны, ты желаешь чтобы приложение не имело ни одной формы.
с другой стороны, ты желаешь чтобы в то время как "говорю frReport.Show" твое приложение визуализировало некую форму (т.е. как минимум одна форма таки присутствует в приложении).
??!!
← →
umbra © (2005-11-07 15:46) [16]2 Digitman © (07.11.05 15:30) [13]
то что ниже - является. ну, может формы там и есть, но увидеть их не удастся
program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils;
begin
end.
2 dimon777 © (07.11.05 15:30) [14]
а где находится этот самыйfrReport
?
← →
Digitman © (2005-11-07 15:52) [17]
> umbra © (07.11.05 15:46) [16]
> то что ниже
это самое "то что ниже" и [13] радикально отличаются одной-единственной. на первый взгляд непреметной строчкой
{$APPTYPE CONSOLE}
надеюсь, ты понимаешь, ЧТО эта строчка делает.
← →
umbra © (2005-11-07 15:55) [18]
> надеюсь, ты понимаешь, ЧТО эта строчка делает
не уверен, что до конца, но, скорее всего, именно она и говорит компилятору каким будет главное окно программы - GUI или консолью
← →
Digitman © (2005-11-07 16:00) [19]
> umbra © (07.11.05 15:55) [18]
ну а формы-то здесь причем ?)
← →
umbra © (2005-11-07 16:03) [20]ну, как никак в консольном приложении они отсутствуют :)
← →
dimon777 © (2005-11-07 16:03) [21]1. FastReport - сторонний компонент(или даже целая группа, следующий текст из файла Readme FastReport - это компонент для построения отчетов, представляет собой
сочетание дизайнера, генератора и Preview отчетов. FR написан на 100%
Object Pascal и может быть использован в Delphi 2-6 и C++Builder 1-6.
Также доступна версия FR CLX для Delphi 6,7, C++ Builder 6, Kylix 1,2,3.
Подробности см. на сайте.
FR является условно-бесплатным (shareware) продуктом. Ограничения и
условия приобретения см. в п.5.
----------------------------------------------------------------------------
2. ВОЗМОЖНОСТИ.
- Бэнд-ориентированный генератор отчетов;
- Встроенный мощный дизайнер, доступный и в run-time;
- Preview как в MS Word;
- Скорость работы сравнима с QuickReport;
- Компактность кода - без дизайнера меньше QR3;
- Неограниченное количество страниц сформированного отчета;
- Многостраничные отчеты; составные (композитные) отчеты; вложенные отчеты;
группы; многоколоночные отчеты; master-detail-detail отчеты;
cross-tab отчеты; двухпроходные отчеты; "живые" отчеты;
- Полный контроль над процессом печати, поддержка всех типов бумаги;
- Набор наиболее популярных компонентов: Текст, Линия, Рисунок, Фигура,
OLE объект, RichText, RX Rich 2.0, Диаграмма, Штрих-код;
- Экспорт в TXT, RTF, CSV, HTML (RTF и HTML - с картинками);
- Поиск текста в сформированном отчете;
- Add-in компонент TfrDataStorage, предназначенный для создания запросов и
таблиц в run-time - специально для т.н. enduser-отчетов (по функциональ-
ности соответствует QRDesigner). Поддерживает Interbase Express (IBX),
ActiveX Data Objects (ADO) без использования BDE;
- Редактирование сформированного отчета;
- Встроенный интерпретатор Pascal-подобного языка для управления процессом
построения отчета;
- Редактор скрипта с подсветкой синтаксиса;
- Полная поддержка вывода Bi-directional - текстов;
- Форма отчета может храниться как в DFM, так и во внешнем файле;
- Функциональность может быть расширена за счет написания собственных
компонент - визуальных объектов, мастеров, библиотек функций;
- Работа как с Database - ориентированными источниками данных, так и с
любыми данными;
- Файлы справки: справка по компоненту и справка по среде FR, распространя-
емая с конечным приложением.)
Конечно у него целая куча форм. Я просто установил его у себя в Делфи.
Кладу на TService НЕВИЗУАЛЬНЫЙ компонент frReport, этим действием подключаю в USES соответствующие файлы *.pas, некототорые из которых содержат конечно свои формы. Но у меня то в меню Project|Options они ни как не отражаются!
← →
Digitman © (2005-11-07 16:08) [22]
> umbra © (07.11.05 16:03) [20]
> ну, как никак в консольном приложении они отсутствуют
НИЧТО не мешает их созданию там и существованию.
> dimon777 © (07.11.05 16:03) [21]
к чему все это ?
← →
Digitman © (2005-11-07 16:12) [23]
> Кладу на TService
и правильно)... и "положи" ..
дался тебе этот "интуитивный сервис"
← →
Набережных С. © (2005-11-07 16:18) [24]
> umbra © (07.11.05 15:55) [18]
Подсказка:program ConsApp;
uses
Windows;
begin
AllocConsole;
Writeln("It""s console application");
readln;
FreeConsole;
end.
← →
dimon777 © (2005-11-07 16:30) [25]
> Digitman © (07.11.05 15:52) [17]
>
> > umbra © (07.11.05 15:46) [16]
>
>
> > то что ниже
>
>
> это самое "то что ниже" и [13] радикально отличаются одной-
> единственной. на первый взгляд непреметной строчкой
>
> {$APPTYPE CONSOLE}
>
> надеюсь, ты понимаешь, ЧТО эта строчка делает.
Не, вот это черное окно, которое открывается, когда я дописываю {$APPTYPE CONSOLE} мне совсем уж ни к чему.
Задача была см. [2] и [0]. Т.е. на панели задач при использовании TService не удается получить название приложения на русском языке.
← →
Digitman © (2005-11-07 16:34) [26]
> Не, вот это черное окно, которое открывается, когда я дописываю
> {$APPTYPE CONSOLE} мне совсем уж ни к чему
аминь.
> Т.е. на панели задач при использовании TService не удается
> получить название приложения на русском языке
о боже) ... теперь речь уже зашла о какой-то там хреновине в какой-то там "панели задач") ... а наличие и отсутствие форм уже не интересуют)
← →
dimon777 © (2005-11-07 16:36) [27]
> Digitman © (07.11.05 16:12) [23]
>
> > Кладу на TService
>
>
> и правильно)... и "положи" ..
>
> дался тебе этот "интуитивный сервис"
В общем ладно. Разговор зашел в дебри. Действительно не так уж это и важно. Ведь работает все и так. Надо "забить" на это дело.
Спасибо всем :)
← →
Anatoly Podgoretsky © (2005-11-07 16:53) [28]umbra © (07.11.05 15:55) [18]
А отсутствие данной директивы - что не консольное. Ты в состоянии представить такое приложение, которое не ГУИ и не консольное.
← →
Набережных С. © (2005-11-07 17:22) [29]
> Anatoly Podgoretsky © (07.11.05 16:53) [28]
GUI - обладающее графическим интерфейсом пользователя.
Консольное - осуществляющее взаимодействие с пользователем через консоль ввода-вывода.
Сервис, например, не относится ни е тем, ни к другим. Или он не приложение?
← →
Leonid Troyanovsky © (2005-11-07 17:33) [30]
> Набережных С. © (07.11.05 17:22) [29]
> Сервис, например, не относится ни е тем, ни к другим. Или
> он не приложение?
Сервисы бывают консольными или GUI. Третьего не дано.
Хотя, виноват, и MS могут быть dll.
--
Regards, LVT.
← →
Игорь Шевченко © (2005-11-07 17:39) [31]Набережных С. © (07.11.05 17:22) [29]
Вообще-то понятие консольного приложение заносится в заголовок EXE-файла, в поле Subsystem :)
То есть, к какому типу относятся сервисы, можно посмотреть, например, tdump"ом.
← →
Набережных С. © (2005-11-07 17:46) [32]
> Leonid Troyanovsky © (07.11.05 17:33) [30]
> Игорь Шевченко © (07.11.05 17:39) [31]
Видимо, я что-то не понимаю или просто не знаю. Есть какой-то четко cформулированный критерий разделения? Пример из [24] к какому типу нужно отнести? А вот это:program Project1;
{$APPTYPE CONSOLE}
uses
Windows, SysUtils;
var
k: integer;
begin
FreeConsole;
for k:=0 to 10 do Sleep(300);
end.
← →
Игорь Шевченко © (2005-11-07 17:53) [33]Набережных С. © (07.11.05 17:46) [32]
> Пример из [24] к какому типу нужно отнести? А вот это:
В заголовке EXE-файла будет все-все написано :))
[24] - к GUI
вот это - к консольным
← →
Набережных С. © (2005-11-07 17:58) [34]
> Игорь Шевченко © (07.11.05 17:53) [33]
Значит, я искренне заблуждался:)
Игорь, а ты случаем не в курсе, как то значение в заголовке используется системой?
← →
Джо © (2005-11-07 17:59) [35]Помимо всего прочего, даже не консольное приложение спокойно может создавать для своих целей консоль. Разница только в том, что для "исконно консольных" :) приложения система сама создаст окно консоли. Я так понимаю, по крайней мере.
← →
Набережных С. © (2005-11-07 18:04) [36]А ведь сейчас вспомнил, что где-то, когда-то и неоднократно встречал упоминания, что MS делит условно пользовательские приложения на эти два типа...и благополучно напрочь забыл:(
В общем, полностью признал и осознал:))
← →
Набережных С. © (2005-11-07 18:05) [37]
> Джо © (07.11.05 17:59) [35]
Да-да, уже осознал всю глубину своих заблкждений:)
← →
umbra © (2005-11-07 18:52) [38]2 Anatoly Podgoretsky © (07.11.05 16:53) [28]
нет. такого я себе представить не могу. или гуи - или консоль. третьего не дано
← →
Германн © (2005-11-07 19:11) [39]Чё то я уже запутался. :(
А тогда к чему отнести пример из Digitman © (07.11.05 15:30) [13]?
← →
umbra © (2005-11-07 19:20) [40]к ГУИ.
Страницы: 1 2 вся ветка
Форум: "Начинающим";
Текущий архив: 2005.11.27;
Скачать: [xml.tar.bz2];
Память: 0.56 MB
Время: 0.013 c