Вверх ↑
Этот топик читают: Гость
Администрация
Ответов: 15294
Рейтинг: 1518
#76: 2009-01-23 11:57:10 ЛС | профиль | цитата
nesco писал(а):
а сделать поддержку полиморфа в среде нельзя

а это тогда что?

[Type]
Class=PoliMultiElement
Info=Полиморфный контейнер
Tab=Tools
карма: 26
1
Голосовали:nesco
Разработчик
Ответов: 26061
Рейтинг: 2120
#77: 2009-01-23 12:21:28 ЛС | профиль | цитата
Dilma, млин... спасибо, стормозил я, что-то
карма: 22

0
Разработчик
Ответов: 26061
Рейтинг: 2120
#78: 2009-01-23 13:30:47 ЛС | профиль | цитата
Добавлен новый компонент ChildPanelPoly -- полиморфная панель

Вот пример реализации статического контролера страниц на базе ChildPanelPoly


Add(TabControl,16621669,280,203)
{
Left=5
Top=5
Width=375
Height=245
Bitmaps=[]
Point(Index)
link(onChange,12611666:doWork3,[(333,209)])
link(Index,15541828:Index,[(293,191)(209,191)])
}
Add(MainForm,2953706,133,133)
{
Position=1
link(onCreate,15541828:doEnum,[])
}
Add(StrList,9880444,182,84)
{
Strings=#3:ABC|3:CDE|
}
Add(ArrayEnum,15541828,196,147)
{
link(onItem,16130605:doEvent1,[(236,153)(236,146)])
link(onEndEnum,12611666:doWork2,[])
link(Array,9880444:Array,[])
}
Add(ChildPanelPoly,2276436,357,140)
{
Childrens=#3:ABC|3:CDE|
Selected="base"
}
BEGIN_SDK
Add(EditPolyMulti,12283795,21,21)
{
WorkCount=#59:##Add=Создает дочерний контейнер по указанному имени класса|8:##select|
Point(##Add)
Point(##select)
}
Add(Panel,2901843,63,63)
{
Left=35
Top=105
Visible=1
}
END_SDK
BEGIN_SDK
Add(EditPolyMulti,9775576,21,21)
{
WorkCount=#59:##Add=Создает дочерний контейнер по указанному имени класса|8:##select|
Point(##Add)
Point(##select)
link(##Add,16309336:doSendToBack,[(64,27)(64,48)])
link(##select,16309336:doBringToFront,[(53,34)(53,55)])
}
Add(Panel,16309336,84,35)
{
Left=10
Top=40
Width=365
Height=205
BevelInner=0
Point(doSendToBack)
Point(doBringToFront)
}
Add(Edit,4252836,147,56)
{
Left=15
Top=15
Width=155
Text=""
}
Add(Edit,11224103,196,56)
{
Left=15
Top=40
Width=155
Text=""
}
Add(Edit,2821227,147,95)
{
Left=15
Top=65
Width=155
Text=""
}
Add(Edit,7485255,196,95)
{
Left=15
Top=90
Width=155
Text=""
}
END_SDK
BEGIN_SDK
Add(EditPolyMulti,14290378,21,21)
{
WorkCount=#59:##Add=Создает дочерний контейнер по указанному имени класса|8:##select|
Point(##Add)
Point(##select)
link(##Add,7947344:doSendToBack,[(56,27)(56,48)])
link(##select,7947344:doBringToFront,[(51,34)(51,55)])
}
Add(Panel,7947344,91,35)
{
Left=10
Top=40
Width=365
Height=205
BevelInner=0
Point(doSendToBack)
Point(doBringToFront)
}
Add(CheckBox,8673729,154,49)
{
Left=15
Top=15
Width=155
}
Add(CheckBox,4972076,154,84)
{
Left=15
Top=40
Width=155
}
Add(CheckBox,4963215,203,49)
{
Left=15
Top=65
Width=155
}
Add(CheckBox,1014208,203,84)
{
Left=15
Top=90
Width=155
}
END_SDK
Add(Hub,16130605,245,140)
{
link(onEvent1,2276436:##Add,[])
link(onEvent2,16621669:PageInsert,[(269,153)(269,209)])
}
Add(HubEx,12611666,329,147)
{
link(onEvent,2276436:##select,[(348,160)(348,153)])
}



карма: 22

0
Ответов: 1304
Рейтинг: 405
#79: 2009-01-24 19:27:18 ЛС | профиль | цитата
Возникло пару вопросиков по PolymorphMulti. При добавлении в список панелей на кириллице, невозможно скомпилировать проект, это временное ограничение или принципиальное? При добавлении в контейнеры более одной иконки, функция отображения иконок перестаёт работать. И что за тип данных поступает на ##index, не смог считать.
code_11565.txt

карма: 3

0
файлы: 1code_11565.txt [6.3KB] [775]
Разработчик
Ответов: 26061
Рейтинг: 2120
#80: 2009-01-24 20:02:41 ЛС | профиль | цитата
MAV, во-первых: необходимо полное обновление с SVN, включая перекомпиляцию GodeGen (и не забыть скачать еще и CGTShare.pas). Но, все что сделано в старых схемах работать не будет по причине переименовки элементов (надо правит *.sha файл)
##index содержит индекс текущей схемы, но схемы еще и создать надо (см пример выше)
MAV писал(а):
При добавлении в контейнеры более одной иконки, функция отображения иконок перестаёт работать

А зачем их туда добавлять больше Иконка должна создаватся одна в базовом классе (base)
Все, что было в пакете, было экспериментальным прототипом
карма: 22

0
Администрация
Ответов: 15294
Рейтинг: 1518
#81: 2009-01-24 21:05:36 ЛС | профиль | цитата
MAV писал(а):
При добавлении в список панелей на кириллице, невозможно скомпилировать проект, это временное ограничение или принципиальное?

это невозможность имен идентификаторов на кирилице в Delphi.

nesco, между прочим глядя на эту схему понял как надо делать PageControl. Для этого нужно создать отдельный элемент, к которому можно будет пристегнуть через менеджер твою ChildPanelPoly. Соответственно элемент сам будет создавать новые копии панелей и размещать их куда надо. Единственное чего для реализации не хватает это возможность дотянутся до самой панели имея указатель на класс, в котором она прописана...
карма: 26
0
Разработчик
Ответов: 26061
Рейтинг: 2120
#82: 2009-01-25 03:21:44 ЛС | профиль | цитата
Dilma, вкладки схем в полиморфе всегда отображаются в левом верхнем углу и нет слежения за разделением поля Hiasma по-горизонтали или вертикали. Мне так видится, что если полиморф открыт в нижней части, то и вкладки должны быть в нижней части, и, соответственно, в правой части, если открыт в правой.
карма: 22

0
Администрация
Ответов: 15294
Рейтинг: 1518
#83: 2009-01-25 14:15:28 ЛС | профиль | цитата
Добавил некий макет PageControl на основе Poly контейнера. Впринципе все отлично кроме одного но - невозможно в редакторе форм отобразить контейнер вкладок(т.е. сам элемент TabControl) поэтому видна только текущая страница. Точно спозиционировать элемент при таком ограничении будет весьма затруднительно.

Пример для проверки
code_11575.txt

карма: 26
0
файлы: 1code_11575.txt [941B] [731]
Разработчик
Ответов: 26061
Рейтинг: 2120
#84: 2009-01-25 16:36:26 ЛС | профиль | цитата
Добавил полиморфные формы ChildFormPoly

Пример для проверки:
code_11577.txt
------------ Дoбавленo:

Еще один пример:

Add(MainForm,12597692,259,154)
{
}
Add(ChildFormPoly,15088817,511,224)
{
Childrens=#5:Form1|5:Form2|
Selected="Form1"
}
BEGIN_SDK
Add(EditPolyMulti,16285341,21,21)
{
WorkCount=#5:##add|7:##clear|
Point(##add)
Point(##clear)
}
Add(MainForm,1712986,84,63)
{
Left=35
Top=105
Visible=1
Point(doVisible)
}
END_SDK
BEGIN_SDK
Add(EditPolyMulti,7399779,21,21)
{
WorkCount=#5:##add|7:##clear|
Point(##add)
Point(##clear)
link(##add,12721094:doGet,[(45,27)(45,118)])
}
Add(MainForm,2875765,126,35)
{
Left=35
Top=105
Caption="ChildForm1"
Point(doVisible)
Point(doShowModal)
Point(Handle)
}
Add(Memo,4972588,203,84)
{
Left=200
Top=105
Align=5
}
Add(MT_Get,12721094,70,112)
{
link(onData,4972588:doLoad,[])
}
END_SDK
BEGIN_SDK
Add(EditPolyMulti,7613539,21,21)
{
WorkCount=#5:##add|7:##clear|
Width=405
Point(##add)
Point(##clear)
link(##add,12721094:doGet,[(45,27)(45,104)])
}
Add(MainForm,1648667,126,35)
{
Left=35
Top=105
Caption="ChildForm2"
Point(doVisible)
Point(doShowModal)
Point(Handle)
}
Add(ListBox,7124315,224,70)
{
Left=220
Top=75
Align=5
}
Add(MT_Get,12721094,70,98)
{
link(onData,7124315:doLoad,[])
}
END_SDK
Add(Button,10771391,259,231)
{
Left=25
Top=60
TabOrder=-1
Caption="Memo"
Data=String(Form1)
link(onClick,15852624:doWork2,[])
}
Add(Button,5702506,259,274)
{
Left=25
Top=85
TabOrder=-1
Caption="ListBox"
Data=String(Form2)
link(onClick,15852624:doWork3,[(333,280)])
}
Add(HubEx,15852624,329,224)
{
Angle=3
link(onEvent,8470020:doEvent1,[(333,223)])
}
Add(ODialog,8704879,406,154)
{
link(onExecute,14936555:doValue,[])
}
Add(MT_Add,5205898,455,224)
{
link(onAdd,15088817:##add,[])
link(Data,14936555:Value,[])
}
Add(Hub,8470020,371,217)
{
link(onEvent1,8704879:doExecute,[(395,223)(395,160)])
link(onEvent2,5205898:doAdd,[])
}
Add(Memory,14936555,455,154)
{
}
Add(Button,8672782,455,259)
{
Left=250
Top=40
Caption="Close All"
link(onClick,15088817:##clear,[(499,265)(499,237)])
}

карма: 22

0
файлы: 1code_11577.txt [1.8KB] [788]
Разработчик
Ответов: 26061
Рейтинг: 2120
#85: 2009-01-27 13:42:54 ЛС | профиль | цитата
Я так понял, что появилась влзможность добавлять вкладки в полиморф, находясь в нем, но я уведел две неточности:
1. В fixes происано "слева от вкладок", на самом деле значок вставки стоит справа
2. При добавлении зачем-то остается пустая строка в списке, я понимаю base стерли, но пустая строка-то зачем осталась
карма: 22

0
Администрация
Ответов: 15294
Рейтинг: 1518
#86: 2009-01-27 20:22:25 ЛС | профиль | цитата
поправлено
карма: 26
1
Голосовали:Konst
Ответов: 1328
Рейтинг: 69
#87: 2010-04-07 02:58:29 ЛС | профиль | цитата
Перестал компилироваться проект с ChildFormPoly (даже Form+ChildFormPoly)
Подготовка к сборке проекта...
Генерация кода целевого языка
Компоновка проекта...
Command line: dcc32.exe "C:\Program Files\HiAsm4.04b182\Elements\delphi\code\Project17.dpr" "-UC:\Program Files\HiAsm4.04b182\." -Q
Borland Delphi Version 12.0 Copyright (c) 1983,98 Inprise Corporation

C:\Program Files\HiAsm4.04b182\Elements\delphi\code\WinLayout.pas(159) Warning: Variable 'd' might not have been initialized

C:\Program Files\HiAsm4.04b182\Elements\delphi\code\WinLayout.pas(176) Warning: Variable 'd' might not have been initialized

C:\Program Files\HiAsm4.04b182\Elements\delphi\code\WinLayout.pas(40) Hint: Private symbol '_onObjDestroy' declared but never used

C:\Program Files\HiAsm4.04b182\Elements\delphi\code\hiPageControl.pas(11) Error: Undeclared identifier: 'IWinLayout'

C:\Program Files\HiAsm4.04b182\Elements\delphi\code\hiPageControl.pas(72) Fatal: Could not compile used unit 'hiPagePanel.pas'
Сборка завершена.


карма: 2

0
Разработчик
Ответов: 26061
Рейтинг: 2120
#88: 2010-04-07 03:13:21 ЛС | профиль | цитата
Konst писал(а):
Перестал компилироваться проект с ChildFormPoly

Наверное, не с ChildFormPoly, а с PageControl Там действительно появилось


Error: Undeclared identifier: 'IWinLayout'

А ChildFormPoly прекрасно работает
карма: 22

0
Ответов: 1328
Рейтинг: 69
#89: 2010-04-07 22:41:00 ЛС | профиль | цитата
nesco писал(а):
Наверное, не с ChildFormPoly, а с PageControl

да, да, ошибся
------------ Дoбавленo в 22.41:
Так в PageControl ошибку
Error: Undeclared identifier: 'IWinLayout'

как то исправить можно
карма: 2

0
Разработчик
Ответов: 26061
Рейтинг: 2120
#90: 2010-04-08 00:08:38 ЛС | профиль | цитата
Konst писал(а):
как то исправить можно

Обновись, Dilma уже исправил
карма: 22

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