Форум: "Начинающим";
Текущий архив: 2009.06.28;
Скачать: [xml.tar.bz2];
ВнизПриложение не отображается в панели задач Найти похожие ветки
← →
AntonioPermskiy © (2009-05-10 09:13) [0]Здравствуйте, мастера.
Создаю приложение, в котором сначала появляется форма(MainForm) с 4 кнопками BtnRun, B, C, D.
При нажатии на кнопку BtnRun выполняется код:procedure TMainForm.BtnRunClick(Sender: TObject);
var
lSysForm: TSysForm;
begin
Self.Visible := False;
lSysForm := TSysForm.Create(nil);
try
lSysForm.ShowModal;
finally
lSysForm.Free;
end;
Self.Close;
end;
Основная форма(lSysForm) приложения появляется и работает, НО в панели задач приложение не отображено(добраться реально только через alt+tab).
Подскажите, как организовать такое приложение с отображением в панели задач. Спасибо.
← →
Юрий Зотов © (2009-05-10 17:30) [1]Приведенный Вами код на отображение приложения в панели задач не влияет. Поэтому, если Вы не делали ничего другого, то приложение должно нормально отображаться.
Если нужно, чтобы в панели задач отображалась форма TSysForm, то заместите у нее метод CreateParams и в нем, после вызова inherited добавьте стиль WS_EX_APPWINDOW. Примеры см. в исходниках VCL.
← →
AntonioPermskiy © (2009-05-10 18:37) [2]Спасибо, Юрий.
Добавил в TSysForm.Create строчку
SetWindowLong(Self.Handle, GWL_EXSTYLE, WS_EX_APPWINDOW);
В TaskBar-е появляется закладка(кнопка).
← →
Юрий Зотов © (2009-05-10 20:10) [3]> AntonioPermskiy © (10.05.09 18:37) [2]
Это не совсем правильно. Вы проставляете стиль WS_EX_APPWINDOW, но при этом затираете остальные и поэтому могут возникнуть проблемы.
Тогда уж так:
SetWindowLong(Handle, GWL_EXSTYLE,
GetWindowLong(Handle, GWL_EXSTYLE) or WS_EX_APPWINDOW);
← →
Германн © (2009-05-11 01:07) [4]
> AntonioPermskiy © (10.05.09 18:37) [2]
>
> Спасибо, Юрий.
> Добавил в TSysForm.Create строчку
>
Ну а зачем в панели задач нужна именно кнопка формы "TSysForm"?
Пользователь хотел открыть приложение/документ приложения и ему было бы понятно, если бы на панели задач появилась бы кнопка самого приложения.
← →
AntonioPermskiy © (2009-05-11 07:47) [5]
> Ну а зачем в панели задач нужна именно кнопка формы "TSysForm"
Программа работает так:
0. Открытие формы с 4 кнопками("Run", "Settings", "Help", "Exit")
-"Run"(см.1)
-"Settings" открывает модально форму с настройками системы
-"Help" открывает не модально форму с хелпом
-"Exit" он и в афри...
1. Нажав "Run" открываем главную форму системы - теперь форма с 4 кнопками не нужна
2. Если ее просто закрыть MainForm.Close, то закрывается приложение.=> Я делаю модальное появление формы системы
> procedure TMainForm.BtnRunClick(Sender: TObject);var lSysForm:
> TSysForm;begin Self.Visible := False; lSysForm := TSysForm.
> Create(nil); try lSysForm.ShowModal; finally lSysForm.
> Free; end; Self.Close;end;
Возможно, я изобретаю велосипед.
С удовольствием прочитаю Ваши решения для задачи.
Спасибо.
← →
Anatoly Podgoretsky © (2009-05-11 08:51) [6]> AntonioPermskiy (11.05.2009 7:47:05) [5]
Пункт 0. и все связаное с ним выбросить.
← →
{RASkov} © (2009-05-11 09:25) [7]> [5] AntonioPermskiy © (11.05.09 07:47)
> Я делаю модальное появление формы системы
Просто нужно сделать "форму системы" - главной. А форму с четырьмя кнопками не нужно делать главной, а сделать ее по типу Splash
← →
AntonioPermskiy © (2009-05-11 12:12) [8]
> Просто нужно сделать "форму системы" - главной
Какой смысл инициализироать "форму системы"(это требует ресурсов), если пользователь зашел, чтобы только настроить, например, соединения с БД?.
← →
{RASkov} © (2009-05-11 13:32) [9]> [8] AntonioPermskiy © (11.05.09 12:12)
А и не нужно ничего инициализировать без надобности, я тебе про другое говорю.....
Главная форма создается в коде проекта первой строчкой Application.CreateForm(); Но перед этой строкой можно еще кода написать...
Повторяюсь, посмотри примеры Сплэш Окон - самое то для тебя.
← →
Application (2009-05-11 15:17) [10]Удалено модератором
Примечание: Не путай начинающих
← →
Palladin © (2009-05-11 15:23) [11]
> Application (11.05.09 15:17) [10]
Через час не аргументируешь - будет удалено.
← →
{RASkov} © (2009-05-11 17:14) [12]Вот возможный пример. Создай новый проект и замени код проекта(*.dpr) на этот:
program Project1;
uses Forms, Windows, StdCtrls,
Unit1 in "Unit1.pas" {Form1};
{$R *.res}
var F: TForm;
begin
F:=TForm.Create(nil);
with F do try
Caption:="Параметры запуска";
BorderStyle:=bsDialog;
Position:=poScreenCenter;
Width:=220; Height:=100;
with TButton.Create(F) do begin
Caption:="Exit";
ModalResult:=IDCANCEL;
Top:=20; Left:=115;
Parent:=F;
end;
with TButton.Create(F) do begin
Caption:="Start";
ModalResult:=IDOK;
Top:=20; Left:=20;
Parent:=F;
end;
if ShowModal<>IDOK then Exit;
finally
Free;
end;
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
F9
Можно для контроля инициализации главной формы(а она будет Form1) вставить в OnCreate какой-нибудь ШоуМессадж()...
← →
{RASkov} © (2009-05-11 17:18) [13]> [10] Application (11.05.09 15:17)
Попробуй создать новый проект и добавить несколько форм.
Затем пробуй выбирать в опциях проекта (в IDE) главную форму и следом проверяй что делает IDE с кодом проекта, т.е. какой становится первая строчка(т.н. первый вызов Application.CreateForm). Думай, зачем делфи меняет там строки...)
Кстати обратное тоже верно.... т.е. редактирование dpr и изменения в опциях...
← →
AntonioPermskiy © (2009-05-11 20:18) [14]
> Попробуй создать новый проект
Я уже после сообщения
> {RASkov} © (11.05.09 13:32) [9]
начал эксперименты с кодом dpr. Спасибо за пример и участие в решении вопрося RASkov.
← →
Юрий Зотов © (2009-05-11 20:22) [15]> AntonioPermskiy © (11.05.09 20:18) [14]
Это хорошее решение, но Help Вам тоже придется либо тоже показывать модально, либо перенести эту кнопку в SysForm.
← →
AntonioPermskiy © (2009-05-11 20:56) [16]
> Help Вам тоже придется либо тоже показывать модально, либо
> перенести эту кнопку в SysForm.
В SysForm-е вызов Help-а уже есть. Так как за Help отвечает одна форма(о ее стиле я еще думаю - стоит ли отображать ее в TaskBar-е), модальность не требуется.
Если уж на то пошло то Help в этой системе не настолько наворочен, чтобы так называться - через неделю буду "ваять" chm.
Как заключение, спасибо Всем большое за участие. Увидел новую сторону создания приложения(а пытался ведь даже через консольное - без application). Предлагаю закрыть ветку - ведь ответ на основной вопрос получен. Спасибо.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2009.06.28;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.005 c