Этот код был использован для вывода результатов работы программы проверки (неважно чего) чтобы не приходилось смотреть файл с результатами. Главная проблема была в том, что консоль (если запуск был из Windows) оставалась висеть позади формы до её закрытия. Вреда конечно никакого, но не приятно. Если же запуск из Нортона или т.п., то всё идёт нормально
Program
{$APPTYPE CONSOLE}
uses
Windows, Forms, Dialogs, SysUtils, StdCtrls, Controls; // и (или) т.п.
…
var
…
SH,SW: integer;
MainForm: TForm; // если нужна форма
Memo: TMemo;
// могут быть также любые другие визуальные компоненты
…
// здесь могут быть процедуры и функции, т.е всё как в обычном Паскале
Begin
… // здесь какой-то код
{ а здесь, перед выводом формы, есть два пути:}
{ так}
FreeConsole; // Отцепиться от консоли, т.е она просто исчезнет (в случае запуска из Windows) и останется только форма
{ или так}
// Handle:= GetForegroundWindow; // Получить Handle консоли
// ShowWindow(Handle, SW_HIDE); // Спрятать консоль
// а в конце, перед завершением
// ShowWindow(Handle, SW_SHOW); // Показать консоль
{ для помещения формы в центр экрана}
SH:= Screen.Height;
SW:= Screen.Width;
MainForm:= TForm.Create(nil
with
BorderStyle:= bsSizeable;
Height:= 390;
Width:= 390;
Left:= (SW - Width) div
Top:= (SH - Height) div
Caption:= 'Моя программа';
// здесь могут быть и другие компоненты
Memo:= TMemo.Create(MainForm);
with
Parent:= MainForm;
Align:= alClient;
BorderStyle:= bsNone;
Font.Name:= 'Courier New Cyr';
Font.Size:= 9;
ScrollBars:= ssVertical;
Lines.LoadFromFile('MyProgram.txt');
end
ShowModal;
finally
Free;
end
{ или можно вывести сообщение, например в случае неудачи (или наоборот)}
with
Caption := 'Заголовок';
ShowModal;
finally
Free;
end
// это для второго пути, иначе она так и останется висеть свёрнутой
// ShowWindow(Handle, SW_SHOW); // Показать консоль
End
С уважением, Михаил Чумак.
События приложения
Delphi 1
…проблема в том, что когда приложение Delphi минимизировано, десктиптор окна в этом случае совершенно другой. Объект Application в действительности дескриптор собственного окна! Application.Handle является окном, которое активно при минимизированном приложении. Когда вы минимизируете ваше приложение, все формы просто прячутся (hidden). Обратите внимание на методы Application Minimize и Restore. Также обратите внимание, что у TApplication есть два недокументированных события, OnMinimize и OnRestore. Они принадлежат приложению, поскольку в TForm нет обработчиков событий, возникающих при минимизации главного окна. Немного странно. Я думаю так сделано для поддержки SDI-приложений.
Нужны ли мне формы в сервере приложений?
Nomadic отвечает:
Да.
Необязательно, чтобы они были видимы, но должна присутствовать хотя бы одна. Чтобы сделать главную форму невидимой, установите
Application.ShowMainForm := False
в файле проекта.
Пример:
begin
Application.ShowMainForm := False;
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end
Создание формы на основе строки
В данном документе рассказывается о том, как в Delрhi можно создать экземпляр формы на основе строки, содержащей имя типа. Код примера прилагается.
Бьерн Страуструп , Бьёрн Страуструп , Валерий Федорович Альмухаметов , Ирина Сергеевна Козлова
Программирование, программы, базы данных / Базы данных / Программирование / Учебная и научная литература / Образование и наука / Книги по IT