Вверх ↑
Этот топик читают: Гость
Администрация
Ответов: 15295
Рейтинг: 1519
#16: 2009-05-04 13:43:06 ЛС | профиль | цитата
мне просто интересно чем не верна реализация наследования всех форм от одного аплета( Варианты с одной формой на данном этапе не рассматриваем ). Можно и дальше продолжать перебирать все варианты с главной формой в качестве аплета, но кто-нибудь будет гарантировать после этого хотя бы правильное поведение кнопки на taskbar не говоря уже про все остальное?

сегодня ситуация такова: после правки 508 строки я получаю корректно работающие формы по всем вопросам означенным выше (собственно то, что и было раньше и на что никто никогда не жаловался). Смысл в этом
Galkov писал(а):
А если никогда не делать NewApplet, а просто отождествлять нашу главную с аплетом, то это еще и 100%-ный вариант.
И возможности при этом как работы с кнопками аплета, как и комбинаций взаимо-онерства - ровно такие же как и в Kol
Если у них не заставишь, ну значит и у нас не заставишь. И наоборот...

может быть и есть - не буду спорить - но лично я его не вижу.

а значит на текущий момент единственным вариатом выхода из ситуации является прокидывание дефайна, который позволит не нарушить совместимость, но и вернуться к привычному методу наследования

#pas
{$ifdef APPLET_FORM}
if FParent = nil then
{$endif}
Control := NewForm(Applet,'Form')
{$ifdef APPLET_FORM}
else Control := NewForm(FParent,'Form');
{$else}
;
{$endif}
после чего вопрос выглядит решенным
карма: 27
0
Ответов: 9906
Рейтинг: 351
#17: 2009-05-04 14:23:20 ЛС | профиль | цитата
Этот - да, решенным.
А если кто-то потом задаст вопрос почему он не может сделать действительно дочернюю форму к одной из этих двух (подчиненных аплету), ТО - начинай все сначала.
Мне он представляется решенным в таком виде:

#pas
Control := NewForm(FParent,'Form');
if not Assigned(Applet) then begin
Applet := Control;
IsMain := true;
end;
Тут просто стилистическая разница: можно решать вопросы по мере их поступления, а можно - ДО.
Я сторонник второго, потому-что меня научили (с примерами и иллюстрациями), что и без "запланированных вопросов" без работы никто не останется. Мягко говоря.
Но, ни на чем не настаиваю.

Даже и привычка есть: "у меня работает". Дрова не исключаются, но они уберутся тихо и спокойно. После чего это уже будет работать всю жизнь.
Без вопросов, отложенных до лучших времен.
Ничего нового, так уже было.

карма: 9

0
Администрация
Ответов: 15295
Рейтинг: 1519
#18: 2009-05-04 14:53:02 ЛС | профиль | цитата
Galkov писал(а):
А если кто-то потом задаст вопрос почему он не может сделать действительно дочернюю форму к одной из этих двух

я задам ему встречный вопрос - что он подразумевает под словами "действительно дочерняя форма"? Причем "я" - это человек, который в коде ничего не понимает и которому слова "подчиненных аплету" вообще ни о чем не говорят.
карма: 27
0
Ответов: 9906
Рейтинг: 351
#19: 2009-05-04 18:51:41 ЛС | профиль | цитата
А он не будет говорить "действительно дочерняя форма", он напишет примерно такой пост:
Ребята как сделать так , щоб при активации основной формы она была активной, а дочерняя не активной, но оставалась на переднем плане
и еще сошлется на какую-нибудь любимую прогу.

Или еще хуже, спросит:
Как сделать шоб модальная форма не попадала под главную - ни у кого такого нет ведь

Вообще-то, возможны и более интересные вопросы, например: почему из двух равноправных форм одна из них вдруг называется главной... с какого перепугу...
Общая логика такая, как только мы начинаем говорить "адаптированную правду", легко получить такой вопрос, что если честно на него отвечать, то получится - мы лучше него знали его задачу, и заточили коды элементов под это знание.
Если не сегодня-завтра, то послезавтра - мы его обязательно получим.
А еще можно и самому запутаться, в этих "адаптированных правдах".

А настоящая правда в том, что форм на самом деле больше, чем мы сегодня показываем. И получается, что считаем пользователя настолько тупым, что всю правду ему говорить противопоказано.
карма: 9

0
Администрация
Ответов: 15295
Рейтинг: 1519
#20: 2009-05-04 21:58:42 ЛС | профиль | цитата
вот именно. А решить это видимо можно только создавая каждую конкретную форму со своим родителем, а это в свою очередь можно сделать только после переноса всего кода из create в init, ну а для этого надо перелопатить весь исходник формы и несколько смежных элементов (пробовал сделать это по быстрому - фиг там...). После чего решил оставить все как есть до лучших времен, ибо я согласен с тем, что существующее решение применяется чаще обратного (концепция основной формы и tool панелей к ней+диалоги все же более популярная) хоть это и не совсем верно сегодня работает.
карма: 27
0
Ответов: 9906
Рейтинг: 351
#21: 2009-05-05 08:32:34 ЛС | профиль | цитата
Dilma писал(а):
пробовал сделать это по быстрому - фиг там...

Первое бревно...
Есть такой прикол в KOL-е: для любого контрола, он первым делом запускаем onMessage апплета (потом свой onMessage, потом аттачи по списку, а потом уже общий для все default-обработчик - всякие там WM_PAINT, WM_SIZE, и т.п.)
И если MainForm становится апплетом со своим onMessage - начинаются чудеса.

Не то, чтобы легкое полено.... Но поднять - можно, вполне.
карма: 9

0
Ответов: 223
Рейтинг: 24
#22: 2009-05-05 16:28:17 ЛС | профиль | цитата
У меня просто вопрос в этом случае , какая форма должна свернуться - у меня сворачиваеться - основная
code_13139.txt
карма: 0

0
файлы: 1code_13139.txt [842B] [160]
Ответов: 4641
Рейтинг: 334
#23: 2009-05-05 16:45:56 ЛС | профиль | цитата
wasya писал(а):
У меня просто вопрос в этом случае , какая форма должна свернуться - у меня сворачиваеться - основная

все правильно. посмотри мой пример и увидешь как сворачивать дочернюю форму.
карма: 1
Время верстки: %cr_time% Текущее время: %time%
0
Ответов: 223
Рейтинг: 24
#24: 2009-05-05 16:50:12 ЛС | профиль | цитата
Ravilr, спасибо все понял
карма: 0

0
Администрация
Ответов: 15295
Рейтинг: 1519
#25: 2009-05-05 17:35:23 ЛС | профиль | цитата
тоже хороший вопрос кстате. Раньше сворачивались все формы приложения. Сегодня только главное будет свернуто. По хорошему - сворачиваться должна та форма, для которой вызван метод.
карма: 27
0
Разработчик
Ответов: 4698
Рейтинг: 426
#26: 2009-05-05 17:40:49 ЛС | профиль | цитата
Ну раз должна, почему же не сворачивается (code13139.txt)
карма: 10
0
Администрация
Ответов: 15295
Рейтинг: 1519
#27: 2009-05-05 18:00:20 ЛС | профиль | цитата
см. посты выше
карма: 27
0
Ответов: 9906
Рейтинг: 351
#28: 2009-05-05 19:40:12 ЛС | профиль | цитата
Не пойму, где вы проблемы находите...
Вот все симметрично, и одинаково сворачиваются.

Add(MainForm,2455660,245,84)
{
Left=20
Top=105
Visible=1
}
Add(ChildFormEx,4135434,133,105)
{
link(onClose,8735269:doWork2,[])
}
BEGIN_SDK
Add(EditMultiEx,15961150,21,21)
{
EventCount=#7:onClose|
Width=202
Height=130
}
Add(MainForm,13324381,91,70)
{
Left=35
Top=105
Width=281
Height=170
Caption="Form2"
Point(doPlaceInTaskBar)
Point(Close)
link(onCreate,13324381:doPlaceInTaskBar,[(136,90)(136,119)(79,119)(79,104)])
link(Close,4982265:GetData,[])
}
Add(EventFromData,4982265,91,21)
{
link(onEvent,15961150:onClose,[])
}
END_SDK
Add(ChildFormEx,9583261,133,63)
{
link(onClose,8735269:doWork1,[(193,69)])
}
BEGIN_SDK
Add(EditMultiEx,15961150,21,21)
{
EventCount=#7:onClose|
Width=202
Height=130
}
Add(MainForm,13324381,91,70)
{
Left=135
Top=205
Width=281
Height=170
Caption="Form1"
Point(doPlaceInTaskBar)
Point(Close)
link(onCreate,13324381:doPlaceInTaskBar,[(136,90)(136,119)(79,119)(79,104)])
link(Close,4982265:GetData,[])
}
Add(EventFromData,4982265,91,21)
{
link(onEvent,15961150:onClose,[])
}
END_SDK
Add(HubEx,8735269,189,98)
{
link(onEvent,2455660:doClose,[])
}
А если нет симмерии, или чего-то главнее другого -- рассуждения про "должно быть" не очень убедительны
Мы можем думать так, Бил - иначе
карма: 9

0
Разработчик
Ответов: 4698
Рейтинг: 426
#29: 2009-05-05 19:43:27 ЛС | профиль | цитата
Не сворачиваются, а закрываются, а проблема была в сворачивании(code13139)
карма: 10
0
Ответов: 9906
Рейтинг: 351
#30: 2009-05-05 19:54:07 ЛС | профиль | цитата
Assasin писал(а):
Не сворачиваются, а закрываются, а проблема была в сворачивании

Сию фразу понять крайне затруднительно.

А в doMinimaize нет никакого know how, да и связи с предыдущими постами. Просто кто-то думал, что минимизировать, иначе как главную форму - никому в голову никогда не придет. Видимо... не мне, поэтому точно не скажу.

#pas
procedure THIMainForm._work_doMinimize;
begin
Applet.WindowState := wsMinimized;
end;
карма: 9

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)