Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.57 MB
Время: 0.019 c
6-1124122565
Vasiliy
2005-08-15 20:16
2005.11.27
idFTP + Proxy = Любовь и согласие :-(


6-1124024764
NikNet
2005-08-14 17:06
2005.11.27
Как отправить/принять через WinSock свыше 1gb?


1-1130779279
Wolfram
2005-10-31 20:21
2005.11.27
Как правильно отслеживать перемещение курсора в Memo?


14-1131256484
WebSQLNeeder
2005-11-06 08:54
2005.11.27
Почему не работает раздел "Сайты" http://www.delphimaster.ru/link


2-1131352457
DevMaster
2005-11-07 11:34
2005.11.27
Что внутри?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский