Вверх ↑
Этот топик читают: Гость
Разработчик
Ответов: 26061
Рейтинг: 2120
#16: 2020-01-25 11:51:40 ЛС | профиль | цитата
Galkov писал(а):
Но, вроде бы, апологеты этой технологии на форуме есть

На фиг, на фиг. С меня того, что есть хватило.
карма: 22

0
Главный модератор
Ответов: 2997
Рейтинг: 395
#17: 2020-01-25 20:40:19 ЛС | профиль | цитата
Galkov писал(а):
Думаю, что PageControl не должен быть контейнером

Так он и сейчас не контейнер. Реализация данного элемента в других пакетах в виде контейнера для контейнеров TabPage имеет свои недостатки в плане динамического создания панелей. Наверняка можно найти и другие проблемы. Интересным решением может быть реализация с интерфейсом полиморфного контейнера, который разрешал бы помещать внутрь визуальные элементы.
карма: 6
Дорогу осилит идущий. Install/Update HiAsm.NET
0
Ответов: 9906
Рейтинг: 351
#18: 2020-01-25 22:22:29 ЛС | профиль | цитата
Nic писал(а):
Так он и сейчас не контейнер
Он сейчас именно контейнер. И, не побоюсь этого слова - полиморфный.

Nic писал(а):
Интересным решением может быть реализация с интерфейсом полиморфного контейнера
Nic, ты видимо не понял, о чем речь.
Именно это интересное решение мы и наблюдаем в настоящий момент. И называется оно - PageControl.
И именно про эту прелесть я и сказал, что это до адекватного состояния доведено быть не может. В рамках настоящей среды.

Редактировалось 4 раз(а), последний 2020-01-25 22:24:15
карма: 9

0
Главный модератор
Ответов: 2997
Рейтинг: 395
#19: 2020-01-26 01:44:57 ЛС | профиль | цитата
Galkov писал(а):
...ты видимо не понял, о чем речь.

  Предположу, что речь идет о предложении сделать новый элемент PageControl в рамках 4-й версии среды. Реализация которого возлагается на файл, находящийся в папке \code.

Nic писал(а):
Интересным решением может быть реализация с интерфейсом полиморфного контейнера, который разрешал бы помещать внутрь визуальные элементы.

  Здесь говорю о варианте реализации элемента в редакторе среды, что по известным причинам не реализуемо в рамках 4-й версии конструктора, но вполне можно реализовать, например, в HiAsm.NET. В настоящий момент другим вариантом реализации данного элемента в редакторе среды является:
Nic писал(а):
...в виде контейнера для контейнеров TabPage

  Под контейнером здесь имеется в виду "мультиэлемент". Так сделан элемент в пакете CNET для 4-й версии среды и пакете Core проекта HiAsm.NET.

P.S. https://forum.hiasm.com/post/107990

Редактировалось 7 раз(а), последний 2020-01-26 09:55:07
карма: 6
Дорогу осилит идущий. Install/Update HiAsm.NET
0
Ответов: 9906
Рейтинг: 351
#20: 2020-01-28 17:15:50 ЛС | профиль | цитата
nesco писал(а):
На фиг, на фиг. С меня того, что есть хватило.

Ну предположим......
А как тебе такой колёр:
Add(MainForm,9655204,280,175)
{
Width=608
link(onCreate,4423117:doInsertPage,[])
}
Add(Memo,4888517,357,63)
{
Width=592
Height=261
Align=5
Visible=1
Strings=#10:ТЕКСТ -- 1|
ScrollBars=3
Point(PHandle)
}
Add(InlineCode,4423117,371,189)
{
WorkPoints=#12:doInsertPage|
EventPoints=#8:onInsert|
DataPoints=#10:TabControl|4:Page|4:Text|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|29:uses windows,kol,Share,Debug;|0:|4:type|29: THiAsmClass = class(TDebug)|11: private|22: oldParent:PControl;|7: public|37: TabControl,Page,Text:THI_Event;|25: onInsert:THI_Event;|53: procedure doInsertPage(var dt:TData; idx:word);|0:|5: end;|0:|14:implementation|0:|35:procedure THiAsmClass.doInsertPage;|19:var Tb,Pg:PControl;|5:begin|45: Tb := Pointer(ReadInteger(dt, TabControl));|39: Pg := Pointer(ReadInteger(dt, Page));|46: if assigned(Tb) and assigned(Pg) then begin|27: oldParent := Pg.Parent;|17: Pg.Parent := Tb;|36: SetParent(Pg.Handle, Tb.Handle);|67: Tb.TC_InsertControl(Tb.Count, ReadString(dt,Text), I_SKIP, Pg);|6: end;|33: _hi_CreateEvent(dt, @onInsert);|4:end;|0:|4:end.|
@IsLib=True
link(onInsert,1427058:doInsertPage,[])
link(TabControl,2156777:Var2,[])
link(Page,4888517:PHandle,[])
link(Text,4414776:Text,[])
}
Add(Memo,6253851,504,63)
{
Width=592
Height=261
Align=5
Visible=1
Strings=#10:ТЕКСТ -- 2|
ScrollBars=3
Point(PHandle)
}
Add(VisualStrings,4414776,385,154)
{
Lines=#6:Text-1|
Width=39
}
Add(GetDataEx,2156777,371,140)
{
Angle=3
link(Data,11505487:PHandle,[(293,145)])
}
Add(VisualStrings,15695429,532,154)
{
Lines=#6:Text-2|
Width=39
}
Add(ChildGroupBox,4969142,434,63)
{
}
BEGIN_SDK
Add(EditMulti,8198241,21,21)
{
VarCount=1
HOffset=35
link(Var1,14669713:PHandle,[])
}
Add(GroupBox,14669713,56,105)
{
Width=592
Height=261
Align=5
Caption="AAAAAAAAA"
Point(PHandle)
}
END_SDK
Add(InlineCode,1427058,427,189)
{
elink(4423117)
link(onInsert,10295576:doInsertPage,[])
link(TabControl,12571956:Var2,[])
link(Page,4969142:Var1,[])
link(Text,8776546:Text,[])
}
Add(InlineCode,10295576,518,189)
{
elink(4423117)
link(onInsert,11043078:doInsertPage,[])
link(TabControl,9574882:Var2,[])
link(Page,6253851:PHandle,[])
link(Text,15695429:Text,[])
}
Add(GetDataEx,12571956,427,140)
{
Angle=3
link(Data,2156777:Var3,[])
}
Add(VisualStrings,8776546,441,154)
{
Lines=#8:GroupBox|
Width=60
}
Add(VisualStrings,14634919,595,154)
{
Lines=#5:Panel|
Width=39
}
Add(InlineCode,11043078,581,189)
{
elink(4423117)
link(onInsert,12023615:doInsertPage,[])
link(TabControl,13050075:Var2,[])
link(Page,5428157:Var1,[])
link(Text,14634919:Text,[])
}
Add(ChildPanel,5428157,588,63)
{
}
BEGIN_SDK
Add(EditMulti,613220,21,21)
{
VarCount=1
HOffset=35
link(Var1,10232013:PHandle,[])
}
Add(Panel,10232013,56,105)
{
Width=592
Height=261
Align=5
BorderWidth=5
BevelInner=1
BevelWidth=2
Point(PHandle)
}
END_SDK
Add(GetDataEx,9574882,518,140)
{
Angle=3
link(Data,12571956:Var3,[])
}
Add(TabControl,11218400,665,63)
{
Width=592
Height=261
Align=5
Bitmaps=[]
Point(PHandle)
}
Add(VisualStrings,994346,679,154)
{
Lines=#10:TabControl|
Width=67
}
Add(InlineCode,12023615,665,189)
{
elink(4423117)
link(onInsert,13135766:doInsertPage,[])
link(TabControl,13050075:Var3,[(671,145)])
link(Page,8881055:Var2,[])
link(Text,994346:Text,[])
}
Add(GetDataEx,13050075,581,140)
{
Angle=3
link(Data,9574882:Var3,[])
}
Add(Memo,7814126,819,63)
{
Width=592
Height=261
Align=5
Visible=1
Strings=#10:ТЕКСТ -- 3|
ScrollBars=3
Point(PHandle)
}
Add(VisualStrings,10406498,847,154)
{
Lines=#6:Text-3|
Width=39
}
Add(ChildGroupBox,4064777,749,63)
{
}
BEGIN_SDK
Add(EditMulti,10376674,21,21)
{
VarCount=1
HOffset=35
link(Var1,8844343:PHandle,[])
}
Add(GroupBox,8844343,56,105)
{
Width=592
Height=261
Align=5
Caption="BBBBBBBBB"
Point(PHandle)
}
END_SDK
Add(InlineCode,13135766,742,189)
{
elink(4423117)
link(onInsert,11049714:doInsertPage,[])
link(TabControl,986791:Var2,[])
link(Page,4064777:Var1,[])
link(Text,12614182:Text,[])
}
Add(InlineCode,11049714,833,189)
{
elink(4423117)
link(TabControl,986791:Var3,[(839,145)])
link(Page,7814126:PHandle,[])
link(Text,10406498:Text,[])
}
Add(VisualStrings,12614182,756,154)
{
Lines=#8:GroupBox|
Width=60
}
Add(GetDataEx,8881055,672,140)
{
link(Data,11218400:PHandle,[])
}
Add(GetDataEx,986791,742,140)
{
Angle=3
link(Data,8881055:Var3,[])
}
Add(TabControl,11505487,280,63)
{
Width=592
Height=261
Align=4
Bitmaps=[]
Bottom=0
Point(PHandle)
}
Имеется в виду некоторое "обрезание" TabControl (может и с названием TabControlEx). Он, по определению, создает только пустышку (через NewTabEmpty), а страницы пристегиваются только через некоторый элемент (может и -- PageConnector).
Заготовка для которого в IC. Там еще надо с иконками работать, Remove приделать, и т.п..

Ну и

Редактировалось 3 раз(а), последний 2020-01-28 18:04:05
карма: 9

0
Разработчик
Ответов: 26061
Рейтинг: 2120
#21: 2020-01-28 18:34:35 ЛС | профиль | цитата
Galkov писал(а):
А как тебе такой колёр:

А вот пока никак. Ошибка компиляции у меня

S:\HiAsm_b184\Elements\delphi\code.\hiInlineCode_4E4FC40.pas(29) Error: Undeclared identifier: 'TC_InsertControl'
И где мне этот TC_InsertControl искать?
карма: 22

0
Ответов: 9906
Рейтинг: 351
#22: 2020-01-28 18:53:24 ЛС | профиль | цитата
KOL

Попал он туда еще в те незапамятные времена, когда я Align правил.
И в официальный KOL попал... Вместе с New_Align
((Собственно, это я его и сделал... Как, впрочем, и NewTabEmpty... Да и WndProcTabControl - тоже в моей редакции... вроде бы))

Ну уже очень давно...

--- Добавлено в 2020-01-28 18:57:26

В общем, удивляюсь я на тебя
Ну здесь-то -- уж точно есть.

Редактировалось 9 раз(а), последний 2020-01-28 19:11:51
карма: 9

0
Разработчик
Ответов: 26061
Рейтинг: 2120
#23: 2020-01-28 22:39:00 ЛС | профиль | цитата
Galkov писал(а):
В общем, удивляюсь я на тебя

Твой KOL у меня есть. Но в официальном KOL этой функции нет, ты что-то попутал. У меня специально стоит официальный компилятор, именно для проверки работоспособности некоторых вопросов. Я вынужденно отказался от исправленного KOL в пользу официального.
Спасибо подсказал, а то из головы вылетело, что у меня есть компилятор с правленым KOL, но вот к сожалению этой функции нет в официальном FPC. Те твоя схема под FPC без переделанного KOL работать не будет. Ну нельзя это дело будет добавлять в стандартный пакет, даже доведя до ума. Но задумка интересная

Редактировалось 1 раз(а), последний 2020-01-28 22:39:52
карма: 22

0
Ответов: 9906
Рейтинг: 351
#24: 2020-01-29 05:16:31 ЛС | профиль | цитата
nesco писал(а):
Но в официальном KOL этой функции нет, ты что-то попутал

Под официальным KOL я понимал тот, который выпускает Кладов.

nesco писал(а):
Ну нельзя это дело будет добавлять в стандартный пакет

Мое дело - предложить

Редактировалось 1 раз(а), последний 2020-01-29 05:17:44
карма: 9

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