Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.11.27;
Скачать: CL | DM;

Вниз

Можно ли создать приложение, в котором нет ни одной формы?   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.59 MB
Время: 0.029 c
2-1131722329
Fostr
2005-11-11 18:18
2005.11.27
Запись/чтение массива типа Recored в/из файла через TFileStream


14-1131356808
diwww
2005-11-07 12:46
2005.11.27
Документация на русском к EhLib


1-1130929570
BobbyDigital
2005-11-02 14:06
2005.11.27
SaveDialog


2-1131599978
paule
2005-11-10 08:19
2005.11.27
Перенос строки в Memo


2-1131447206
lionmen
2005-11-08 13:53
2005.11.27
MAC address