Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.11.12;
Скачать: [xml.tar.bz2];

Вниз

А как узнать количество дочерних окон в SDI приложении?   Найти похожие ветки 

 
mmms   (2006-10-29 20:00) [0]

Заранее благодарю.


 
Ketmar ©   (2006-10-29 20:09) [1]

TScreen.FormCount?


 
Desdechado ©   (2006-10-29 20:19) [2]

а что, в SDI есть понятие дочернего окна?


 
DrPass ©   (2006-10-29 20:23) [3]


> Desdechado ©   (29.10.06 20:19) [2]

Дочерние окна есть в любом приложении, даже диалоговом


 
MikePetrichenko ©   (2006-10-29 20:23) [4]


> А как узнать количество дочерних окон в SDI приложении?

Для начала создать хотя бы одно дочернее окно в SDI приложении.
После того, как это получится готов выплатить премию в $1000 и рассказать как посчитать их количество.


 
MikePetrichenko ©   (2006-10-29 20:25) [5]


> Дочерние окна есть в любом приложении, даже диалоговом

Давайте определимся с терминами. Что в вашем понимании дочернее окно?

P.S. Не путать с подчиненными окнами. Блин.. Вломы лезть в MSDN и заниматься copy/paste - по сему сами поищите соответствующие статьи.


 
DiamondShark ©   (2006-10-29 20:27) [6]


> MikePetrichenko ©   (29.10.06 20:23) [4]

procedure TForm1.Button1Click(Sender: TObject);
begin
 with TButton.Create(self) do begin
   Parent := self;
   Visible := true;
 end;
end;

Как мне получить мою штукобаксу?


 
DiamondShark ©   (2006-10-29 20:28) [7]


> Блин..

поздно. уже попал.


 
Gero ©   (2006-10-29 20:30) [8]

> [5] MikePetrichenko ©   (29.10.06 20:25)

Дочернее, значит основное окно ему родитель, то бишь Parent.


 
MikePetrichenko ©   (2006-10-29 20:33) [9]


> procedure TForm1.Button1Click(Sender: TObject);
> begin
>  with TButton.Create(self) do begin
>    Parent := self;
>    Visible := true;
>  end;
> end;

Не путай божий дар с яичницей.
Обшибочка вышла. Сие не есть дочернее (Child) окно. И то, что в Delphi (VCL) есть свойство Parent совсем не значит, что сие окно дочернее.
Дочерние окна имеют только MDI приложения.
RTFM MSDN.
А вот Self (Form) для данного окна не столько Parent сколько TopMost.
И различаются дочерние окна от этого примера циклом обработки сообщений.
Корочее - в сад (то есть в MSDN, RTFM, google, а потом в НадМозги).


 
MikePetrichenko ©   (2006-10-29 20:34) [10]


> Дочернее, значит основное окно ему родитель, то бишь Parent.

Еще раз - не путать божий дар с яичницей.


 
MikePetrichenko ©   (2006-10-29 20:39) [11]

Frame, Client, and Child Windows
An MDI application has three kinds of windows: a frame window, an MDI client window, as well as a number of child windows. The frame window is like the main window of the application: it has a sizing border, a title bar, a window menu, a minimize button, and a maximize button. The application must register a window class for the frame window and provide a window procedure to support it.

An MDI application does not display output in the client area of the frame window. Instead, it displays the MDI client window. An MDI client window is a special type of child window belonging to the preregistered window class MDICLIENT. The client window is a child of the frame window; it serves as the background for child windows. It also provides support for creating and manipulating child windows. For example, an MDI application can create, activate, or maximize child windows by sending messages to the MDI client window.

When the user opens or creates a document, the client window creates a child window for the document. The client window is the parent window of all MDI child windows in the application. Each child window has a sizing border, a title bar, a window menu, a minimize button, and a maximize button. Because a child window is clipped, it is confined to the client window and cannot appear outside it.

An MDI application can support more than one kind of document. For example, a typical spreadsheet application enables the user to work with both charts and spreadsheets. For each type of document that it supports, an MDI application must register a child window class and provide a window procedure to support the windows belonging to that class. For more information about window classes, see Window Classes. For more information about window procedures, see Window Procedures.

Following is a typical MDI application. It is named Multipad.


 
Ketmar ©   (2006-10-29 20:39) [12]

>[9] MikePetrichenko(c) 29-Oct-2006, 20:33
э-э-э... что-то ты не то тут сказал, по-моему.


 
Ketmar ©   (2006-10-29 20:40) [13]

выдержка ис справки по CreateWindow() (выделение -- моё):
BUTTON Designates a small rectangular child window that represents a button the user can click to turn it on or off. Button controls can be used alone or in groups, and they can either be labeled or appear without text. Button controls typically change appearance when the user clicks them.


 
Ketmar ©   (2006-10-29 20:41) [14]

так что, Майк, плати Диме денежку. жаль, я не успел первым -- мне бы тоже не помешала хотя бы половина означеной суммы...


 
MikePetrichenko ©   (2006-10-29 20:42) [15]


> э-э-э... что-то ты не то тут сказал, по-моему.

Я же написал. Определитесь в терминах. У SDI приложения по определнию Microsoft нет дочерних окон. Точнее они все "дочернии" от десктопа, но никто (даже Microsoft) в таком смысле это не употребляет.
А вот у MDI приложения окна называются именно "дочерними" по отношению к главному окну приложения.
По сему - корректная постановка вопроса, 90% ответа на него.

P.S. Я не отмазываюсь, но сей спор уже проходил.


 
Ketmar ©   (2006-10-29 20:44) [16]

>[15] MikePetrichenko(c) 29-Oct-2006, 20:42
[13]. справка -- (c) Microsoft.


 
MikePetrichenko ©   (2006-10-29 20:45) [17]


> А как узнать количество дочерних окон в SDI приложении?

Никак. Их там нет. Вопрос не про кнопку, которая контрол. Можно конечно сейчас добраться до того, что и Desktop является child windows у друго-го окна.
Еще раз. Не путать божий дар с яичницей.


 
MikePetrichenko ©   (2006-10-29 20:48) [18]


> [13]. справка -- (c) Microsoft.

Ну давай цитатами кидатся. :) Хорошо.
Особо популярно. То что имеется в виду под Child Window в приложении SDI/MDI. Это окно у которого установлен стиль MDI_CHILD. (Опять же в Microsoft). Такого окна в SDI приложении быть не может по определнию (оно SDI). В противном случае оно уже превращается в MDI.
Либо выдайте свои определения child window и тогда на основе ваших терминов можно будет строить спор. Я пользуюсь общеупотребительными терминами (теми же, которые употребляет Microsoft) в контексте вопроса темы.


 
Ketmar ©   (2006-10-29 20:49) [19]

>[17] MikePetrichenko(c) 29-Oct-2006, 20:45
>Никак. Их там нет. Вопрос не про кнопку, которая контрол.
CreateWindow() с классом BUTTON создаст окно. так справка говорит. а то, что окно является ещё и контролом -- это частности.

и мой ответ в [1] тоже некорректен поэтому. %-) тем более, что он вообще не к окнам, а к формам относится. %-)


 
Ketmar ©   (2006-10-29 20:52) [20]

>[18] MikePetrichenko(c) 29-Oct-2006, 20:48
>приложении SDI/MDI. Это окно у которого установлен стиль
>MDI_CHILD.
что имеет смысл в MDI application. в SDI нет такого понятия. зато есть дочерние окна. кнопки, например. если мне со словарём докажут, что "child window" в вышеприведённой цитате из win32.hlp обозначает "зелёный сыр" -- тогда соглашусь, что нет дочерних окон в SDI.

%-)


 
MikePetrichenko ©   (2006-10-29 20:53) [21]


> CreateWindow() с классом BUTTON создаст окно. так справка
> говорит. а то, что окно является ещё и контролом -- это
> частности.

Не совсем верно. Контрол он и есть контрол. Для него даже специальный термин введен. А вот то что он окно - детали его реализации.
А еще есть и диалоги, кторые тоже окна, но по другому. :)


> и мой ответ в [1] тоже некорректен поэтому. %-) тем более,
>  что он вообще не к окнам, а к формам относится. %-)


Верно. Все зависит от терминологии. А диалоги вообще можно из шаблона вместе с конролами создать без всяких CreateWindow. :)


 
MikePetrichenko ©   (2006-10-29 20:56) [22]


> Ketmar ©   (29.10.06 20:52) [20]

По-моему пора завести форум (Ketmar-Mike) где и будем выясняь детали реализации того или иного механизма функционирования Windows, Unix, Delphi и прочего :)
Глядишь - не прохой FAQ получится, куда можно будет посылать "НадМозги". Все ближе, чем Google.


 
Джо ©   (2006-10-29 20:57) [23]

> MikePetrichenko ©  

Скажите, а функция EnumChildWindows, по-Вашему, что делает? И не Майкрософт ее автор? И не он же автор такого текста:
The EnumChildWindows function enumerates the child windows that belong to the specified parent window by passing the handle to each child window, in turn, to an application-defined callback function. EnumChildWindows continues until the last child window is enumerated or the callback function returns FALSE.

?
:D


 
Ketmar ©   (2006-10-29 21:00) [24]

>[22] MikePetrichenko(c) 29-Oct-2006, 20:56
>По-моему пора завести форум (Ketmar-Mike) где и будем
>выясняь детали реализации того или иного механизма
>функционирования Windows, Unix, Delphi и прочего :)
можно и так. %-)

на самом деле я отлично понимаю, о чём ты говоришь. и подозреваю, что ты понимаешь, о чём я. но флэйм -- это же святое! %-)

>[23] Джо(c) 29-Oct-2006, 20:57
о! и ты к нам? welcome. %-)


 
Джо ©   (2006-10-29 21:01) [25]

> [24] Ketmar ©   (29.10.06 21:00)
> >[23] Джо(c) 29-Oct-2006, 20:57
> о! и ты к нам? welcome. %-)

Ну, где еще штукобакс, развлекаясь, получить можно? :)


 
Джо ©   (2006-10-29 21:02) [26]

Почуял я, так сказать, the smell of money и явился :)


 
Ketmar ©   (2006-10-29 21:03) [27]

>[26] Джо(c) 29-Oct-2006, 21:02
>Почуял я, так сказать, the smell of money и явился :)
изыди! Боливар не вынесет троих! %-)


 
MikePetrichenko ©   (2006-10-29 21:03) [28]

Именно это она и делает. То что написано.
Опять же. Определимся в терминах. Причем учтите, что child window действительно переводится дочернее окно, но интересно, а кто догадался перевести MDI Client window как "дочернее окно"? И почему общеупотребительным для "дочернее окно" используется именно в MDI приложениях. Это раз.
Второе, повторюсь, но если лень читать всю ветку, вопрос был исклучитесль про SDI приложение. Как получить количество ДОЧЕРНИХ окон. Не спрашивали ни про контролы, ни про диалоги. именно ДОЧЕРНИХ.
Я понимаю, что всем очень хочется денег. :)
До в данном контексте (контексте вопроса) ответ никак - вполне верен. И просьба создать там дочернее окно (в смысле, понятному 99% программистов) вызовет удивление, так как приложение превратится в MDI.
Я понимаю, что потом можно вспомнить и про кнопки и про диалоги и про ListView всякие и т.п. Можно вообще создать просто окно (без его видимости, т.е. читую оконную процедуру). Тоже вроде окно и тоже вроде дочернее.
Также жедательно вспомнить, что SDI приложение (главная его форма) само является дочерним окном от DeskTop и т.д.
Мне кажется, полемика бессмыслена...


 
MikePetrichenko ©   (2006-10-29 21:06) [29]


> на самом деле я отлично понимаю, о чём ты говоришь. и подозреваю,
>  что ты понимаешь, о чём я. но флэйм -- это же святое! %-
> )

+1


> изыди! Боливар не вынесет троих! %-)

Сто пудово. Уж штуку я могу себе позволить. Но 2 - никак. Мне же на GPRS не останется :)


 
Джо ©   (2006-10-29 21:08) [30]

Скажите, а Вы выплатите штуку, если я докажу, что эта Ваша фраза:
>> Можно вообще создать просто окно (без его видимости, т.е. читую оконную процедуру).
— бессмысленна? ;>


 
MikePetrichenko ©   (2006-10-29 21:12) [31]


> Скажите, а Вы выплатите штуку, если я докажу, что эта Ваша
> фраза:
> >> Можно вообще создать просто окно (без его видимости,
> т.е. читую оконную процедуру).
> — бессмысленна? ;>

Тьфу ты блин. Теперь цепляться будут...
ОК. Перефразирую. Что я имел в виду. А имелось в виду следующее: 1. Данное окно никогда не будет показано. 2. Задача данного окна - лишь обеспечить приложение Handle и оконной процедурой. 3. Окно не будет иметь предка (владельца).
Так понятнее?

P.S. Ну блин выходной же сегодня. Могут слова иногда путаться...


 
Джо ©   (2006-10-29 21:15) [32]

> Так понятнее?

Мне и с первого раза понятно было. Но, елки-палки, выходной же сегодня, да и запах штукобакса вскружил голову! :)


 
Ketmar ©   (2006-10-29 21:24) [33]

>[29] MikePetrichenko(c) 29-Oct-2006, 21:06
>Сто пудово. Уж штуку я могу себе позволить. Но 2 - никак.
>Мне же на GPRS не останется :)
договариваемся на пяти сотнях мне и Диме, после чего флэйм прекращаем? %-)


 
Anatoly Podgoretsky ©   (2006-10-29 21:53) [34]

> Ketmar  (29.10.2006 21:24)  [33]

А можно и мне с ними :-)


 
Джо ©   (2006-10-29 21:55) [35]

> [34] Anatoly Podgoretsky ©   (29.10.06 21:53)
> > Ketmar  (29.10.2006 21:24)  [33]
>
> А можно и мне с ними :-)

Нет уж, Анатолий, тогда после меня, я раньше Вас тут стою в очереди :)


 
Anatoly Podgoretsky ©   (2006-10-29 21:56) [36]

> MikePetrichenko  (29.10.2006 21:03)  [28]

> Я понимаю, что всем очень хочется денег. :)

Понял, что ничего не светит :-(


 
Anatoly Podgoretsky ©   (2006-10-29 21:57) [37]

> Джо  (29.10.2006 21:02)  [26]

Ой сколько вас, так скоро и по доллару не достанется, хотя я уже понял, что
и так ничего не светит.


 
Anatoly Podgoretsky ©   (2006-10-29 21:58) [38]

> Джо  (29.10.2006 21:55)  [35]

Да я согласен быть четвертным


 
Джо ©   (2006-10-29 21:58) [39]

Светит или нет, но в сад уже всех отправили и извиняться, похоже, не спешат :)


 
Ketmar ©   (2006-10-29 21:59) [40]

эк набежали! как аргументами завалить -- так никого. а как бабло делить начали -- откуда только взялась толпа...



Страницы: 1 2 3 вся ветка

Форум: "Начинающим";
Текущий архив: 2006.11.12;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.56 MB
Время: 0.213 c
2-1161959511
TIF
2006-10-27 18:31
2006.11.12
Win 98 - профессионалы по этой ОС, помогите!


4-1151082659
GrBob
2006-06-23 21:10
2006.11.12
Удаленное подключение к SCM


15-1160687510
Anatoly Podgoretsky
2006-10-13 01:11
2006.11.12
Delphi Master клиент чтения форума, сокращенно DMN


2-1156603567
Cyrax
2006-08-26 18:46
2006.11.12
Проблемы при работе с Indy


6-1150718257
Kryakozyablik
2006-06-19 15:57
2006.11.12
Подключение интернета (ADSL)





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский