Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 15.08.2007, 18:00   #1
Diogo
Пользователь
 
Аватар для Diogo
 
Регистрация: 15.08.2007
Сообщений: 17
Печаль Сворачивание формы.

Есть 2 формы - Form1 и Form2.

При запуске программы запускается Form1, в которой пользователь выбирает свой профиль и после этого вызывается Form2, которая и является "основной" формой программы, всю работу с программой пользователь производит именно в ней.

Теперь о проблеме: При попытке свернуть Form2 она сворачивается как MDIChild (или по другому как в Word-e документ) в левый нижний угол экрана. Как заставить ее сворачиватся в панель задач? При нажатии на программу в панели задач она нормально сворачивается, при попытке свернуть ее щелчком по иконке "Свернуть" она сворачивается в левый угол экрана?
Пробовал вызывать окна и при помощи ShowModal и Show (скрывая другую форму) - результат одинаковый? Я понимаю, что Form1 является "главной" формой проекта, но как обойти можно данную проблему?
Diogo вне форума
Старый 15.08.2007, 18:29   #2
UnD)eaD)Snake
Форумчанин Подтвердите свой е-майл
 
Аватар для UnD)eaD)Snake
 
Регистрация: 07.07.2007
Сообщений: 241
По умолчанию

Child нельзя сворачивать в панель задач. Сделай form2 главной, при form2.create напиши
begin
form1.show;
form2.alphablendvalue:=0;
end;
Когда пользователь выберет профиль:
begin
form2.alphablendvalue:=255;
form1.close;
end;
UnD)eaD)Snake вне форума
Старый 15.08.2007, 18:41   #3
Andr
Пользователь
 
Аватар для Andr
 
Регистрация: 11.04.2007
Сообщений: 75
По умолчанию

AlphaBlend надо поставить True
Andr вне форума
Старый 15.08.2007, 18:47   #4
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

Diogo, еще как вариант не закрывай форму пароль, а скрой (Hide) или сделай невидимой (Visible:=false). Надо будет завершить приложение вызови Form1.Close, например при закрытии другой формы.

P.S. А кто-то знает как сделать программу с двумя независимыми окнами, но процесс чтоб был один?
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог
mutabor вне форума
Старый 15.08.2007, 18:58   #5
Квэнди
Старожил
 
Аватар для Квэнди
 
Регистрация: 13.12.2006
Сообщений: 3,859
По умолчанию

alphablend.... опять... да пожалейте вы пользователя... вы в курсе сколько ресурсов необходимо для этого ?
ответ...

type
TForm = class(TForm)
{...}
protected
procedure CreateParams(var Params: TCreateParams); override;
end;

implementation

{...}

procedure TForm2.CreateParams(var Params: TCreateParams);
begin
inherited CreateParams(Params);
Params.ExStyle := Params.ExStyle or WS_EX_APPWINDOW;
Params.WndParent := GetDesktopWindow;
end;
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи
Квэнди вне форума
Старый 15.08.2007, 20:49   #6
Diogo
Пользователь
 
Аватар для Diogo
 
Регистрация: 15.08.2007
Сообщений: 17
По умолчанию

Цитата:
Сообщение от mutabor Посмотреть сообщение
Diogo, еще как вариант не закрывай форму пароль, а скрой (Hide) или сделай невидимой (Visible:=false). Надо будет завершить приложение вызови Form1.Close, например при закрытии другой формы.
Ну я так и пробовал, после выбора профиля в Форм1, я ее делал невидимой и вызывл Форм2. Но и в такой ситуации Форм2 нормально не сворачивается..


Сейчас попробую предложенные варианты
Diogo вне форума
Старый 15.08.2007, 21:38   #7
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

Квэнди а не подскажешь для чего эта строка
Params.WndParent := GetDesktopWindow;
я пробовал без нее, тот же результат.

p.s. не надо, уже разобрался
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог

Последний раз редактировалось mutabor; 15.08.2007 в 21:42.
mutabor вне форума
Старый 15.08.2007, 21:47   #8
Diogo
Пользователь
 
Аватар для Diogo
 
Регистрация: 15.08.2007
Сообщений: 17
По умолчанию

Цитата:
Сообщение от Квэнди Посмотреть сообщение
alphablend.... опять... да пожалейте вы пользователя... вы в курсе сколько ресурсов необходимо для этого ?
ответ...

type
TForm = class(TForm)
{...}
protected
procedure CreateParams(var Params: TCreateParams); override;
end;

implementation

{...}

procedure TForm2.CreateParams(var Params: TCreateParams);
begin
inherited CreateParams(Params);
Params.ExStyle := Params.ExStyle or WS_EX_APPWINDOW;
Params.WndParent := GetDesktopWindow;
end;
Сделал как советовали. Вот что получилось...

TfrmMain = class(TForm)
pc: TPageControl;
tsPers: TTabSheet;
tsLogs: TTabSheet;
{...}
procedure DeleteDublicateLogs;
procedure btnAddClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure btnAddLogClick(Sender: TObject);
procedure LogsDrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
{...}

protected
procedure CreateParams(var Params: TCreateParams); override;
private
{ Private declarations }
public

{ Public declarations }
end;

{...}

implementation

uses Unit2, Unit3, Unit4, Unit5;

{$R *.dfm}

procedure TfrmMain.CreateParams(var Params: TCreateParams);
begin
inherited CreateParams(Params);
Params.ExStyle := Params.ExStyle or WS_EX_APPWINDOW;
Params.WndParent := GetDesktopWindow;
end;
{... Дальше очень много строк программы...}

Результат получается следующий:
После запуска Form1 и нажатия на кнопочку загрузки профиля эта форма себя скрывает Form1.Hide и вызывает frmMain.ShowModal;
После отображения на экране frmMain в панели задач появляется 2 кнопки программы. Клики на первую не приводят ни к чему, а второй нормально сворачивается/разворачивается.. При нажатии на кнопочку свернуть в заголовке окна, форма нормально сворачивается нормально, как я и хотел, но как убрать 2-е окошко?
Diogo вне форума
Старый 15.08.2007, 21:48   #9
Diogo
Пользователь
 
Аватар для Diogo
 
Регистрация: 15.08.2007
Сообщений: 17
По умолчанию

Цитата:
Сообщение от mutabor Посмотреть сообщение
p.s. не надо, уже разобрался
Наверное один я криворукий?
Diogo вне форума
Старый 16.08.2007, 00:25   #10
Master-Skull
Пользователь
 
Регистрация: 10.08.2007
Сообщений: 43
По умолчанию

Держи сёрс. Главная фиха там в том что мы до запуска приложения вызываем показ второй формы. Загляни в Project -> View Source и всё поймёшь
Вложения
Тип файла: rar Simple.rar (2.2 Кб, 89 просмотров)
Комьютер не поддаётся законам физики:
Глюки появляются из неоткуда, файлы пропадают в никуда...
Объём диска называется весом и измеряется в метрах...

---------------------------------------------------
Дрова для модема находятся на диске, а дрова для дисковода - в интернете...
Master-Skull вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сворачивание окон Blackmore Общие вопросы Delphi 1 19.05.2008 18:27
Возможно ли пауза Music XM при сворачивание формы ? Volkogriz Общие вопросы Delphi 3 13.10.2007 15:04
Сворачивание окон Legat Win Api 2 08.10.2007 16:36
Сворачивание формы s-force Общие вопросы Delphi 1 29.08.2007 19:52