Модераторы: Poseidon

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Многооконное приложение, Проблема с fsMDIChild 
:(
    Опции темы
Vladimir_K
Дата 13.12.2006, 18:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 149
Регистрация: 2.12.2006

Репутация: нет
Всего: 1



Пожалуйста, помогите разобраться с созданием многооконного приложения.
Идея такая: имеется главная форма приложения, из которой можно вызывать несколько дочерних форм с графиками.
Свойство FormStyle главной формы я установил в fsMDIForm, свойство FormStyle дочерней формы - в fsMDIChild. На гл.форме есть кнопка "График", по щелчку на которой открывается форма с графиком; если щелкнуть еще раз - открывается еще одна форма и т.д.
Дочерние формы можно упорядочивать каскадом, по вертикали и по горизонтали.
Проблема вот в чем.
1. Как сделать, чтобы главная форма при запуске разворачивалась на весь экран? WindowState устанавливал в wsMaximized - форма хоть и развернута полностью, но смещена немного вниз (нижний скрол почти не виден).
2. Когда запускается дочерняя форма, то сквозь нее видно все, что расположено на главной форме. Элементы гл. формы даже перекрывают элементы дочерней. Как этого избежать?
3. Как закрывать дочерние формы?
4. При перемещении дочерней формы по главной, на главной появляются скролы, но они мне не нужны. Как их убрать?
5. Если дочернюю форму развернуть на весь экран, то потом ее невозможно восстановить.
Есть и еще кое-какие непонятки, но с ними я попробую разобраться сам, а вот эти вопросы я сам не могу решить. Помогите кто чем может.

Это сообщение отредактировал(а) Vladimir_K - 13.12.2006, 18:46
--------------------
Судя по всему, у меня огромное количество мозгов - мне требуется уйма времени, чтобы ими пораскинуть
PM MAIL ICQ   Вверх
Guedda
Дата 13.12.2006, 18:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Подрывник
****


Профиль
Группа: Завсегдатай
Сообщений: 3137
Регистрация: 27.12.2005
Где: Ростов-на-Дону

Репутация: 6
Всего: 78



Модератор: Пожалуйста, один топик - один вопрос.
1) wsMaximized
2) покажи код
3) В FormClose дочерней формы напиши Action := caFree;
4) Отлавливай сообщения создания скроллов
5) Возможно. Покажи код.


--------------------
Ll 2
PM MAIL WWW ICQ Skype GTalk   Вверх
x77
Дата 13.12.2006, 18:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1255
Регистрация: 25.3.2002

Репутация: нет
Всего: 22



1. либо поставить Align=alClient, либо в OnCreate руками задать Top, Left, Width и Height.
2. а почему так происходит? это не стандартное поведение, смотрите, что вы ещё накрутили в дочерней форме помимо свойства FormStyle. обычно таких проблем нет smile
3. в OnClose дочерней формы надо написать Action := caFree;
4. у главной формы убрать AutoScroll := FALSE;
5. так будет происходить, пока вы не зададите для главной формы главное меню smile Альтернатива - вешать на саму форму сворачивающую кнопку.

Добавлено @ 18:48 
Guedda, я думаю, там и есть wsMaximized, и что это у автора очепютка. а я ещё я думаю, что у него стоит Position = poScreenCenter. именно в этом случае размер формы высчитывается корректно, с учётом высоты панели задач, а центрируется она - криво, залезая на эту самую панель задач. 

и здесь два выхода, либо отключить центрирование (и всё станет хорошо), либо отключить wsMaximized и юзать другие способы. тогда всё тоже будет хорошо, но центрирование при этом всё равно потеряет смысл smile


--------------------
Я никогда не сопротивлялся искушению, поскольку узнал: что мне
не нравится, то меня не искушает.
© Джордж Бернард Шоу (Ирландия)
PM MAIL ICQ   Вверх
Vladimir_K
Дата 13.12.2006, 18:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 149
Регистрация: 2.12.2006

Репутация: нет
Всего: 1



wsMaximized - разворачивает окно, но смещает немного вниз, передвинуть нельзя.
--------------------
Судя по всему, у меня огромное количество мозгов - мне требуется уйма времени, чтобы ими пораскинуть
PM MAIL ICQ   Вверх
x77
Дата 13.12.2006, 18:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1255
Регистрация: 25.3.2002

Репутация: нет
Всего: 22



Vladimir_K, и не путай людей, плз. в твоём первом посту стояло wsMinimized. если ты меняешь текст своего начального вопроса после того, как тебе на него ответили, то хотя бы предупреждай остальных об этом.

Добавлено @ 18:52 
Vladimir_K, чему равен Position? 


--------------------
Я никогда не сопротивлялся искушению, поскольку узнал: что мне
не нравится, то меня не искушает.
© Джордж Бернард Шоу (Ирландия)
PM MAIL ICQ   Вверх
Vladimir_K
Дата 13.12.2006, 19:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 149
Регистрация: 2.12.2006

Репутация: нет
Всего: 1



Цитата(Guedda @  13.12.2006,  18:40 Найти цитируемый пост)
Модератор: Пожалуйста, один топик - один вопрос.

Извините, но я подумал, что эти вопросы достаточно тесно связаны, чтобы их можно было объединить под одной темой.
Цитата

Vladimir_K, и не путай людей, плз. в твоём первом посту стояло wsMinimized. если ты меняешь текст своего начального вопроса после того, как тебе на него ответили, то хотя бы предупреждай остальных об этом.

Я просто не успел - настолько быстро пришли ответы. Извиняюсь.

Это сообщение отредактировал(а) Vladimir_K - 13.12.2006, 19:05
--------------------
Судя по всему, у меня огромное количество мозгов - мне требуется уйма времени, чтобы ими пораскинуть
PM MAIL ICQ   Вверх
x77
Дата 13.12.2006, 19:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1255
Регистрация: 25.3.2002

Репутация: нет
Всего: 22



Цитата(Vladimir_K @  13.12.2006,  19:03 Найти цитируемый пост)
Я просто не успел - настолько быстро пришли ответы. Извиняюсь.


так извинятся не за что, вам же хуже, если из-за  путаницы вам неправильно ответят ;)


--------------------
Я никогда не сопротивлялся искушению, поскольку узнал: что мне
не нравится, то меня не искушает.
© Джордж Бернард Шоу (Ирландия)
PM MAIL ICQ   Вверх
Vladimir_K
Дата 13.12.2006, 19:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 149
Регистрация: 2.12.2006

Репутация: нет
Всего: 1



Цитата(Guedda @  13.12.2006,  18:40 Найти цитируемый пост)
1) wsMaximized
2) покажи код
3) В FormClose дочерней формы напиши Action := caFree;
4) Отлавливай сообщения создания скроллов
5) Возможно. Покажи код. 

wsMaximized в Win'98 работает нормально, пробовал в 'XP - там окно сдвинуто вниз.
Action := caFree; - помогло, спасибо.
Код выложу.
--------------------
Судя по всему, у меня огромное количество мозгов - мне требуется уйма времени, чтобы ими пораскинуть
PM MAIL ICQ   Вверх
x77
Дата 13.12.2006, 19:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1255
Регистрация: 25.3.2002

Репутация: нет
Всего: 22



Vladimir_K, дубль три, чему равно свойство Position у главной формы?

wsMaximized нормально работает везде. и только если Position = poScreenCenter - то окно будет сдвинуто вниз на панель задач, причём передвинуть его будет невозможно. и это, в принципе, не глюк.


--------------------
Я никогда не сопротивлялся искушению, поскольку узнал: что мне
не нравится, то меня не искушает.
© Джордж Бернард Шоу (Ирландия)
PM MAIL ICQ   Вверх
Vladimir_K
Дата 13.12.2006, 19:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 149
Регистрация: 2.12.2006

Репутация: нет
Всего: 1



Цитата(x77 @  13.12.2006,  18:42 Найти цитируемый пост)
я ещё я думаю, что у него стоит Position = poScreenCenter. именно в этом случае размер формы высчитывается корректно, с учётом высоты панели задач, а центрируется она - криво, залезая на эту самую панель задач. 

poDesktopCenter
--------------------
Судя по всему, у меня огромное количество мозгов - мне требуется уйма времени, чтобы ими пораскинуть
PM MAIL ICQ   Вверх
x77
Дата 13.12.2006, 19:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1255
Регистрация: 25.3.2002

Репутация: нет
Всего: 22



Vladimir_K, если у вас один монитор - то это тоже самое smile DesktopCenter означает, что форма находится в середине десктопа. если десктоп раздвинут на два (10) мониторов,  то форма ляжет в его центр. если монитор один, то и десктоп равен его экрану, т.е. Screen'у.

теперь смотрите. с одной стороны вы говорите форме WindowState = wsMaximized (что означает, что размер формы должен быть равен всему экрану, кроме панели задач - и форма это делает!), с другой стороны, вы говорите Position = poDesktopCenter (что заставляет форму центрироваться посередине экрана). а куда она может центрироваться? правильно, спуститься вниз, заехав ровно на половину "незанятой" панели задач.

проще всего просто отключить центрирование, т.е. поставить Position = poDesigned.


--------------------
Я никогда не сопротивлялся искушению, поскольку узнал: что мне
не нравится, то меня не искушает.
© Джордж Бернард Шоу (Ирландия)
PM MAIL ICQ   Вверх
Vladimir_K
Дата 13.12.2006, 19:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 149
Регистрация: 2.12.2006

Репутация: нет
Всего: 1



У главной формы установил AutoScroll := FALSE; не помогает - скролы появляются.

На главной форме пока всего одна кнопка.
Код:
Код

procedure TGlavnaya.BGraf1Click(Sender: TObject);
var G:TGraph;
begin
 Application.CreateForm(TGraph,G);
 G.Show;
end;


Код дочерней формы:
Код

unit Graphing;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ColorGrd, ExtCtrls;

type
  TGraph = class(TForm)
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Graph: TGraph;

implementation

{$R *.dfm}

procedure TGraph.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action := caFree;
end;

end.

--------------------
Судя по всему, у меня огромное количество мозгов - мне требуется уйма времени, чтобы ими пораскинуть
PM MAIL ICQ   Вверх
Vladimir_K
Дата 13.12.2006, 20:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 149
Регистрация: 2.12.2006

Репутация: нет
Всего: 1



Главная форма:

Action
ActiveControl
Align                               alNone
AlphaBlend                    False
AlphaBlendValue           255
Anchors                         [akLeft,akTop]
AutoScroll                      False
AutoSize                        False
BiDiMode                       bdLeftToRight
BorderIcons                   [biSystemMenu,biMinimize,biMaximize]
BorderStyle                    bsSizeable
BorderWidth                   0
Caption                          Myprog
ClientHeight                   471
ClientWidth                    647
Color                                   clBtnFace
Constraints                     (TSizeConstraints)
Ctl3D                              True
Cursor                            crDefault
DefaultMonitor               dmActiveForm
DockSite                        False
DragKind                        dkDrag
DragMode                      dmManual
Enabled                         True
Font                               (TFont)
FormStyle                       fsMDIForm
Height                            498
HelpContext                   0
HelpFile
HelpKeyword
HelpType                       htContext
Hint
HorzScrollBar                 (TControlScrollBar)
Icon                               (None)
KeyPreview                    False
Left                                363
Menu
Name                             Glavnaya
ObjectMenuItem
OldCreateOrder              False
ParentBiDiMode             True
ParentFont                     False
PixelsPerInch                 96
PopupMenu
Position                          poDesigned
PrintScale                      poProportional
Scaled                           True
ScreenSnap                   False
ShowHint                       False
SnapBuffer                     10
Tag                                0
Top                                104
TransparentColor           False
TransparentColorValue       clBlack
UseDockManager         False
VertScrollBar                  (TControlScrollBar)
Visible                            True
Width                             655
WindowMenu
WindowState                 wsMaximized

Дочерняя форма:

Action
ActiveControl
Align                               alNone
AlphaBlend                    False
AlphaBlendValue           255
Anchors                         [akLeft,akTop]
AutoScroll                      True
AutoSize                        False
BiDiMode                       bdLeftToRight
BorderIcons                   [biSystemMenu,biMinimize,biMaximize]
BorderStyle                    bsSizeable
BorderWidth                   0
Caption                          Гpaфики
ClientHeight                   306
ClientWidth                    688
Color                                   clBtnFace
Constraints                     (TSizeConstraints)
Ctl3D                              True
Cursor                            crDefault
DefaultMonitor               dmActiveForm
DockSite                        False
DragKind                        dkDrag
DragMode                      dmManual
Enabled                         True
Font                               (TFont)
FormStyle                       fsMDIChild
Height                            333
HelpContext                   0
HelpFile
HelpKeyword
HelpType                       htContext
Hint
HorzScrollBar                 (TControlScrollBar)
Icon                                None
KeyPreview                    False
Left                                199
Menu
Name                             Graph
ObjectMenuItem
OldCreateOrder              False
ParentBiDiMode             True
ParentFont                     False
PixelsPerInch                 96
PopupMenu
Position                          poDesktopCenter
PrintScale                      poProportional
Scaled                           True
ScreenSnap                   False
ShowHint                       False
SnapBuffer                     10
Tag                                0
Top                                246
TransparentColor           False
TransparentColorValue       clBlack
UseDockManager         False
VertScrollBar                  (TControlScrollBar)
Visible                            True
Width                             696
WindowMenu
WindowState                 wsNormal
--------------------
Судя по всему, у меня огромное количество мозгов - мне требуется уйма времени, чтобы ими пораскинуть
PM MAIL ICQ   Вверх
Vladimir_K
Дата 13.12.2006, 21:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 149
Регистрация: 2.12.2006

Репутация: нет
Всего: 1



Цитата(Guedda @  13.12.2006,  18:40 Найти цитируемый пост)
4) Отлавливай сообщения создания скроллов

Как отлавливать сообщения скроллов?
А отловив их, нужно как-то запрещать появление скроллов?

Это сообщение отредактировал(а) Vladimir_K - 14.12.2006, 08:25
--------------------
Судя по всему, у меня огромное количество мозгов - мне требуется уйма времени, чтобы ими пораскинуть
PM MAIL ICQ   Вверх
Vladimir_K
Дата 14.12.2006, 13:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 149
Регистрация: 2.12.2006

Репутация: нет
Всего: 1



Если развернуть полностью одно дочернее окно, то разворачиваются все. После этого пробую первое окно закрыть - закрывается, но остается следующее полностью развернутое окно. Непонятно.
--------------------
Судя по всему, у меня огромное количество мозгов - мне требуется уйма времени, чтобы ими пораскинуть
PM MAIL ICQ   Вверх
Guedda
Дата 14.12.2006, 13:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Подрывник
****


Профиль
Группа: Завсегдатай
Сообщений: 3137
Регистрация: 27.12.2005
Где: Ростов-на-Дону

Репутация: 6
Всего: 78



Цитата(Vladimir_K @  14.12.2006,  13:47 Найти цитируемый пост)
Если развернуть полностью одно дочернее окно, то разворачиваются все. После этого пробую первое окно закрыть - закрывается, но остается следующее полностью развернутое окно. Непонятно. 

Это такое свойство. Ничего здесь непонятного нет. Но эту проблему можно обойти, если тебе необходимо после закрытия сделать обычное окно, а не wsMaximized, то сделай так:
Код

procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  Form2.WindowState := wsNormal;
  Action := caFree;
end;



--------------------
Ll 2
PM MAIL WWW ICQ Skype GTalk   Вверх
Vladimir_K
Дата 14.12.2006, 14:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 149
Регистрация: 2.12.2006

Репутация: нет
Всего: 1



Еще один моментик: если свернуть все дочерние окна командой "Minimize All", то команды: "Cascade", "TileHorizontal", "TileVertically" не действуют, приходится вручную разворачивать окна, а потом уже использовать эти команды. Можно ли это исправить (чтобы, например, командой "Cascade" все окна из свернутого состояния разворачивались, и располагались каскадом)?
--------------------
Судя по всему, у меня огромное количество мозгов - мне требуется уйма времени, чтобы ими пораскинуть
PM MAIL ICQ   Вверх
Guedda
Дата 14.12.2006, 14:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Подрывник
****


Профиль
Группа: Завсегдатай
Сообщений: 3137
Регистрация: 27.12.2005
Где: Ростов-на-Дону

Репутация: 6
Всего: 78



Модератор: Пожалуйста, один топик - один вопрос.

M
Guedda
Устное предупреждение!



--------------------
Ll 2
PM MAIL WWW ICQ Skype GTalk   Вверх
Vladimir_K
Дата 14.12.2006, 14:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 149
Регистрация: 2.12.2006

Репутация: нет
Всего: 1



Цитата(Guedda @  14.12.2006,  13:53 Найти цитируемый пост)
сделай так:

код Pascal/Delphi
1:
2:
3:
4:
5:

procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  Form2.WindowState := wsNormal;
  Action := caFree;
end;

При закрытии дочернего окна вылазит ошибка:
Access violation at address 0046D9E6 in module 'PRead1.exe'. Read of address 0000022B.
Здесь PRead1 - имя моего проекта.
--------------------
Судя по всему, у меня огромное количество мозгов - мне требуется уйма времени, чтобы ими пораскинуть
PM MAIL ICQ   Вверх
Guedda
Дата 14.12.2006, 14:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Подрывник
****


Профиль
Группа: Завсегдатай
Сообщений: 3137
Регистрация: 27.12.2005
Где: Ростов-на-Дону

Репутация: 6
Всего: 78



Значит ошибка не в этом, так как у меня всё нормально работает.


--------------------
Ll 2
PM MAIL WWW ICQ Skype GTalk   Вверх
Vladimir_K
Дата 14.12.2006, 14:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 149
Регистрация: 2.12.2006

Репутация: нет
Всего: 1



Цитата(Guedda @  14.12.2006,  14:14 Найти цитируемый пост)
Модератор: Пожалуйста, один топик - один вопрос.

Я понял, но это ведь один вопрос "Проблема с fsMDIChild", а внутри уже подвопросы. smile 
--------------------
Судя по всему, у меня огромное количество мозгов - мне требуется уйма времени, чтобы ими пораскинуть
PM MAIL ICQ   Вверх
Vladimir_K
Дата 14.12.2006, 19:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 149
Регистрация: 2.12.2006

Репутация: нет
Всего: 1



Не идет у меня дело, хоть тресни!  smile 
Правильно ли я открываю дочерние окна?:
Код

procedure TGlavnaya.BGraf1Click(Sender: TObject);
var G:TGraph;
begin
 Application.CreateForm(TGraph,G);
 G.Show;
end;

Они открываются, но почему-то прозрачные...
В свойствах окон установки правильные (см. на 1стр.)?

Это сообщение отредактировал(а) Vladimir_K - 14.12.2006, 19:50
--------------------
Судя по всему, у меня огромное количество мозгов - мне требуется уйма времени, чтобы ими пораскинуть
PM MAIL ICQ   Вверх
Guedda
Дата 14.12.2006, 20:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Подрывник
****


Профиль
Группа: Завсегдатай
Сообщений: 3137
Регистрация: 27.12.2005
Где: Ростов-на-Дону

Репутация: 6
Всего: 78



Посмотри на свойство AlphaBlend  и AlphaBlendValue. Если первое false, a второе 255, то я не знаю, что это, а если что-либо из вышеперечисленного не так, то сделай так.


--------------------
Ll 2
PM MAIL WWW ICQ Skype GTalk   Вверх
Vladimir_K
Дата 14.12.2006, 20:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 149
Регистрация: 2.12.2006

Репутация: нет
Всего: 1



AlphaBlend =  false
AlphaBlendValue = 255

Для чистоты эксперимента создал новое приложение - все то же самое...

Что делать?

Добавлено @ 20:26 
Полный код обоих окон:
Главная:
Код

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

uses Unit2;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var G:TForm2;
begin
 Application.CreateForm(TForm2,G);
 G.Show;
end;

end.


Дочерняя:
Код

unit Unit2;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs;

type
  TForm2 = class(TForm)
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form2: TForm2;

implementation

uses Unit1;

{$R *.dfm}

procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action := caFree;
end;

end.


Это сообщение отредактировал(а) Vladimir_K - 14.12.2006, 20:22
--------------------
Судя по всему, у меня огромное количество мозгов - мне требуется уйма времени, чтобы ими пораскинуть
PM MAIL ICQ   Вверх
Guedda
Дата 14.12.2006, 20:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Подрывник
****


Профиль
Группа: Завсегдатай
Сообщений: 3137
Регистрация: 27.12.2005
Где: Ростов-на-Дону

Репутация: 6
Всего: 78



Значит у тебя в настройках Дельфи что-то слетело. Попытайся переустановить Delphi. И, кстати, что у тебя за версия?
И покажи скриншот этих полупрозрачных форм... Очень интересно на них посмотреть...


--------------------
Ll 2
PM MAIL WWW ICQ Skype GTalk   Вверх
Vladimir_K
Дата 14.12.2006, 20:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 149
Регистрация: 2.12.2006

Репутация: нет
Всего: 1



Подскажите, как здесь выложить рисунки?
--------------------
Судя по всему, у меня огромное количество мозгов - мне требуется уйма времени, чтобы ими пораскинуть
PM MAIL ICQ   Вверх
Guedda
Дата 14.12.2006, 20:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Подрывник
****


Профиль
Группа: Завсегдатай
Сообщений: 3137
Регистрация: 27.12.2005
Где: Ростов-на-Дону

Репутация: 6
Всего: 78



Цитата(Vladimir_K @  14.12.2006,  20:52 Найти цитируемый пост)
Подскажите, как здесь выложить рисунки? 

Выкладываешь файл на http://imageshack.us , и потом берешь ссылку, и кидаешь её сюда.


--------------------
Ll 2
PM MAIL WWW ICQ Skype GTalk   Вверх
Vladimir_K
Дата 14.12.2006, 21:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 149
Регистрация: 2.12.2006

Репутация: нет
Всего: 1



user posted image

Добавлено @ 21:33 
Form2 - пустая форма, все элементы расположены на главной форме и просвечивают...
user posted image

Это сообщение отредактировал(а) Vladimir_K - 14.12.2006, 21:35
--------------------
Судя по всему, у меня огромное количество мозгов - мне требуется уйма времени, чтобы ими пораскинуть
PM MAIL ICQ   Вверх
Vladimir_K
Дата 14.12.2006, 21:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 149
Регистрация: 2.12.2006

Репутация: нет
Всего: 1



Все-таки очень неудобно выкладывать здесь рисунки.
Второй рисунок отображается почему-то не полностью...
--------------------
Судя по всему, у меня огромное количество мозгов - мне требуется уйма времени, чтобы ими пораскинуть
PM MAIL ICQ   Вверх
Guedda
Дата 15.12.2006, 09:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Подрывник
****


Профиль
Группа: Завсегдатай
Сообщений: 3137
Регистрация: 27.12.2005
Где: Ростов-на-Дону

Репутация: 6
Всего: 78



Да и не надо, чтобы он полностью отображался! Я теперь всё понял! Слушай! Родительская форма создана для того, чтобы размещать на себе TMainMenu, TPopupMenu, TTool и TCool Bars... И, конечно же, дочерние формы!
Но у тебя же главная форма содержит странные элементы, по типу Tedit, TMemo и так далее. 

Просто совет тебе:
Создай ещё одну форму (Form3), и покидай все эти контроллы туда! А главную форму оставь пустой! Максимум, кинь туда те вещи, которые я тебе выше описал.


--------------------
Ll 2
PM MAIL WWW ICQ Skype GTalk   Вверх
Vladimir_K
Дата 15.12.2006, 19:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 149
Регистрация: 2.12.2006

Репутация: нет
Всего: 1



Цитата(Guedda @  15.12.2006,  09:05 Найти цитируемый пост)
Да и не надо, чтобы он полностью отображался! Я теперь всё понял! Слушай! Родительская форма создана для того, чтобы размещать на себе TMainMenu, TPopupMenu, TTool и TCool Bars... И, конечно же, дочерние формы!
Но у тебя же главная форма содержит странные элементы, по типу Tedit, TMemo и так далее. 

Просто совет тебе:
Создай ещё одну форму (Form3), и покидай все эти контроллы туда! А главную форму оставь пустой! Максимум, кинь туда те вещи, которые я тебе выше описал. 


А до меня пока не дошло...
А какую роль тогда будет выполнять главная форма, если на ней ничего не располагать?
Давайте по порядку. При запуске приложения первой открывается главная форма и... как дальше? Сделать ее невидимой? Запускать дочернюю Form2, которая будет выполнять роль "главной", и уже с нее остальные дочерние формы, столько сколько мне будет нужно?

Сегодня пробовал Delphi 8, там та же фигня, но 8-ая ресурсов компьютера ест не мало. Сейчас восстанавливаю 7-ую версию.
--------------------
Судя по всему, у меня огромное количество мозгов - мне требуется уйма времени, чтобы ими пораскинуть
PM MAIL ICQ   Вверх
Vladimir_K
Дата 15.12.2006, 19:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 149
Регистрация: 2.12.2006

Репутация: нет
Всего: 1



Еще. У меня на гл. форме есть и MainMenu и ToolBar... больше пока ничего не добавлял. Есть и кнопка, которая открывает дочерние окна. Окна только оказываются расположенными за элементами гл. формы!  smile  Вопрос в том, как сделать, чтобы дочернее окно открывалось поверх главного! 
Неужели с таким эффектом никто никогда не сталкивался? Не может этого быть!   smile 
--------------------
Судя по всему, у меня огромное количество мозгов - мне требуется уйма времени, чтобы ими пораскинуть
PM MAIL ICQ   Вверх
Guedda
Дата 16.12.2006, 08:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Подрывник
****


Профиль
Группа: Завсегдатай
Сообщений: 3137
Регистрация: 27.12.2005
Где: Ростов-на-Дону

Репутация: 6
Всего: 78



Отвечаю на все твои вопросы сразу!
Главная форма служит контейнером для дочерних форм! Никак дочернюю форму нельзя поместить поверх главной! Выход следующий:
Делаешь на главной форме ToolBar и mainMenu. На ToolBar Делаешь ToolButton, который будет открывать Tform2. А если необходимо сделать на главной форме ещё и Edit, и прочие контроллы, то лучше создать ещё дочернюю форму TForm3, и туда добавить все контроллы. 


--------------------
Ll 2
PM MAIL WWW ICQ Skype GTalk   Вверх
Vladimir_K
Дата 16.12.2006, 13:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 149
Регистрация: 2.12.2006

Репутация: нет
Всего: 1



Сделал так. С главной формы убрал все кроме ToolBar и mainMenu. Добавил дочернюю Form3, которая запускается сразу после главной, и макимизируется. На ней разместил дублирующую кнопку вызова дочернего окна Form2 (Form2 можно также открывать с ToolBar). Form2 имеет свойство WindowState = wsNormal. Но при открытии этого окна оно сразу же максимизируется (как до этого Form3). Да еще если передвинуть дочернее окно за пределы главного - появляются полосы прокрутки на главной форме.
Вобщем все это не то!
Меня больше устраивает если дочернее окно Form2 имеет свойство FormStyle = fsNormal. Но есть несколько "но": 
1. если несколько раз открываю Form2, то отображается только одно окно, и чтобы добраться до остальных, надо уменьшить размер главной формы.
2. если Form2 свернуть, оно исчезает с главной формы, и приходится восстанавливать главную форму (уменьшать ее), чтобы увидеть, где это там спряталось свернутое окошко. Можно ли сделать, чтобы Form2 при сворачивании отображалась на главной форме?
3. как располагать дочерние окна каскадом и т.д. если спец. кнопки для этого не действуют?
--------------------
Судя по всему, у меня огромное количество мозгов - мне требуется уйма времени, чтобы ими пораскинуть
PM MAIL ICQ   Вверх
Vladimir_K
Дата 16.12.2006, 13:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 149
Регистрация: 2.12.2006

Репутация: нет
Всего: 1



Первые два вопроса решил задав главной форме свойство FormStyle = fsNormal, а дочерним: fsStayOnTop. Теперь все отображается, ничего не просвечивает, свернутые дочерние окна доступны, полос прокрутки нет!
А как быть с вопросом №3 = как располагать дочерние окна каскадом и т.д. если спец. кнопки для этого не действуют?
--------------------
Судя по всему, у меня огромное количество мозгов - мне требуется уйма времени, чтобы ими пораскинуть
PM MAIL ICQ   Вверх
Страницы: (3) [Все] 1 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.1333 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.