Вверх ↑
Этот топик читают: Гость
Разработчик
Ответов: 26305
Рейтинг: 2146
#46: 2011-10-19 17:23:36 ЛС | профиль | цитата
Tad писал(а):
Вот это считается оптимизацией ?

Ты неправильно понял -- сделать сначала на Label, окончательный вариант перевести на DT, я же так и сделал
карма: 22

0
Ответов: 16884
Рейтинг: 1239
#47: 2011-10-19 17:28:35 ЛС | профиль | цитата
nesco писал(а):
Ты неправильно понял -- сделать сначала на Label, окончательный вариант перевести на DT
Я ЛОДЫРЬ!
Если я сделаю сначала на Label, то меня уже никто не заставит никуда переводить.
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Разработчик
Ответов: 26305
Рейтинг: 2146
#48: 2011-10-19 17:37:36 ЛС | профиль | цитата
Tad писал(а):
Если я сделаю сначала на Label, то меня уже никто не заставит никуда переводить.

Это уже твои проблемы. Но не надо свои проблемы категорически проецировать на других. Пути оптимизации есть, и пусть кто захочет, тот пусть для себя и делает.
На данный момент делается попытка сделать программирование текстовых полей DT списком. Тогда список шаблона можно будет сохранять и считывать
карма: 22

0
Гость
Ответов: 17029
Рейтинг: 0
#49: 2011-10-19 17:59:45 правка | ЛС | профиль | цитата


Редактировалось 2 раз(а), последний 2025-01-09 21:54:01
карма: 0

0
Ответов: 5227
Рейтинг: 587
#50: 2011-10-19 18:01:31 ЛС | профиль | цитата
Во бля, ещё и свеже зарегоного выкинуло, ну бля форум капитально глючит andrestudio
карма: 4
Мой форум - http://hiasm.bbtalk.me/ схемы, компоненты...
0
Разработчик
Ответов: 26305
Рейтинг: 2146
#51: 2011-10-19 18:02:10 ЛС | профиль | цитата
[offtop]
andrestudio писал(а):
ну бля форум капитально глючит

[/offtop]
карма: 22

0
Гость
Ответов: 17029
Рейтинг: 0
#52: 2011-10-19 18:03:02 правка | ЛС | профиль | цитата


Редактировалось 2 раз(а), последний 2025-01-09 21:54:01
карма: 0

0
Гость
Ответов: 17029
Рейтинг: 0
#53: 2011-10-19 18:04:21 правка | ЛС | профиль | цитата


Редактировалось 2 раз(а), последний 2025-01-09 21:54:01
карма: 0

0
Ответов: 3889
Рейтинг: 362
#54: 2011-10-19 19:26:16 ЛС | профиль | цитата
nesco, я кое-что допилил и подклеил в базовом юните контроллеров печати, как только пройду тесты, выложу.
------------ Дoбавленo в 19.26:
Наконец-то поумнели менеджеры печати и могут брать как объект (правда, пока взять-то его негде) сверху, так и текстовое имя компонента в текущем шаблоне, с которым необходимо работать. Для этого необходимо доработать PrintController.pas примерно так:


#pas
procedure TPrintController.InitItem(var Data:TData);
var dt:TData;
begin
// if FItem = nil then
if _prop_ItemName = ' then
begin
dt := ReadData(Data, _data_Object);
if _IsObject(dt,DocItem_GUID) then
FItem := TDocItem(ToObject(dt));;
if _IsStr(dt) then
FItem := _prop_Document.getItem(ToString(dt));;
end
else FItem := _prop_Document.getItem(_prop_ItemName)//;
end;


И сразу заработают интересные схемы типа:


Add(MainForm,959703,126,154)
{
link(onCreate,13010429:doEvent1,[])
}
Add(PaintBox,15542754,210,133)
{
Left=165
Top=165
Align=5
Point(onDblClick)
link(onBeforeDraw,11240925:doDraw,[])
}
Add(DocumentTemplate,11240925,252,133)
{
Name="test"
link(Bitmap,15542754:Bitmap,[(258,121)(244,121)(244,177)(216,177)])
}
BEGIN_SDK
Add(Print_Text,2882565,-3,-3)
{
Name="editme0"
Width=100
Text="шаблон"
Font=[MS Sans Serif,8,1,0,1]
BackStyle=1
BackColor=15793151
}
Add(Print_Text,5079081,102,39)
{
Name="editme1"
X=105
Y=42
Width=100
Text="шаблон"
Font=[MS Sans Serif,8,1,0,1]
BackStyle=1
BackColor=15793151
}
Add(Print_Text,11683960,214,81)
{
Name="editme2"
X=217
Y=84
Width=100
Text="шаблон"
Font=[MS Sans Serif,8,1,0,1]
BackStyle=1
BackColor=15793151
}
END_SDK
Add(ChildPanelEx,16511796,392,168)
{
Mode=1
link(Data,11396245:CurrentX,[])
link(Data1,11396245:CurrentY,[])
link(Data2,1:CurrentWidth,[])
link(Data3,1:CurrentHeight,[])
}
BEGIN_SDK
Add(EditMultiEx,14079536,21,21)
{
WorkCount=#8:doEvent1|5:##add|
DataCount=#4:Data|5:Data1|5:Data2|5:Data3|
Point(##add)
link(##add,2726262:doEvent1,[(35,34)(35,55)])
}
Add(Panel,13922443,287,49)
{
Left=35
Top=105
Point(doLeft)
Point(doTop)
Point(doWidth)
Point(doHeight)
}
Add(DoData,3226830,112,56)
{
link(onEventData,13922443:doLeft,[])
link(Data,14079536:Data,[(118,38)(27,38)])
}
Add(DoData,3323393,119,63)
{
link(onEventData,13922443:doTop,[])
link(Data,14079536:Data1,[(125,42)(34,42)])
}
Add(DoData,1582180,126,70)
{
link(onEventData,13922443:doWidth,[])
link(Data,14079536:Data2,[(132,46)(41,46)])
}
Add(DoData,8203846,133,77)
{
link(onEventData,13922443:doHeight,[])
link(Data,14079536:Data3,[(139,49)(48,49)])
}
Add(Hub,2726262,49,49)
{
OutCount=5
link(onEvent2,3226830:doData,[])
link(onEvent3,3323393:doData,[])
link(onEvent4,1582180:doData,[])
link(onEvent5,8203846:doData,[])
}
Add(Edit,2916654,231,154)
{
Width=60
Height=30
}
END_SDK
Add(PC_Position,11396245,392,84)
{
Document="test"
Point(Object)
link(Object,5278453:Var2,[])
}
Add(PC_Size,1,406,126)
{
Document="test"
Point(Object)
link(Object,5278453:Var3,[(426,73)])
}
Add(For,10376004,266,175)
{
End=2
link(onEvent,7508605:doStrCat,[])
}
Add(GetDataEx,5278453,406,68)
{
Angle=3
link(Data,7508605:Result,[(369,73)(369,219)(328,219)])
}
Add(Hub,13010429,168,168)
{
link(onEvent1,15542754:doRefresh,[(196,174)(196,139)])
link(onEvent2,10376004:doFor,[])
}
Add(StrCat,7508605,322,175)
{
Str1="editme"
link(onStrCat,16511796:##add,[])
}


nesco, это только у меня одного в ChildPanelEx не работает Align для вложенных элементов интерфейса?
карма: 1

0
Разработчик
Ответов: 26305
Рейтинг: 2146
#55: 2011-10-19 19:31:15 ЛС | профиль | цитата
1nd1g0 писал(а):
примерно так

А если имени нет, что брать-то будет
карма: 22

0
Ответов: 3889
Рейтинг: 362
#56: 2011-10-19 19:42:51 ЛС | профиль | цитата
nesco писал(а):
А если имени нет, что брать-то будет

Это тест, доказавший работоспособность, потом, в финале, можно убрать объект нафиг и поставить один большой и толстый ReadString с несколькими источниками. Кому он сдался этот объект, которого никто в глаза не видел и взять его штатно негде
------------ Дoбавленo в 19.37:
На совместимость никак не повлияет т.к. более нигде эта процедура юнита, кроме контроллеров печати, не задействована. Ради совместимости можно разве что имя Object оставить, всю остальную нестрочную логику с лёгкой совестью снести.
------------ Дoбавленo в 19.42:
Кстати, если имени нет в поле, то теперешняя версия компонента вылетает с фатальной ошибкой, так что никаких отклонений от "штатного" поведения даже в такой поделке на скорую руку нет, сохранили, так сказать, совместимость Конечно, надо бы защиту от дурака прикрутить. Когда основной функционал реализуем.
карма: 1

0
Разработчик
Ответов: 26305
Рейтинг: 2146
#57: 2011-10-19 19:54:17 ЛС | профиль | цитата
Че-то я твою мысль пока не уловил. Доделывай, на готовом решении будет более понятно
карма: 22

0
Ответов: 355
Рейтинг: 2
#58: 2011-10-20 02:35:53 ЛС | профиль | цитата
Ого, как тема разошлась. А я уже давным-давно сделал то, что мне нужно было.
карма: 1

0
Разработчик
Ответов: 26305
Рейтинг: 2146
#59: 2011-10-20 08:43:35 ЛС | профиль | цитата
nickware писал(а):
Ого, как тема разошлась

Ну, дык -- пришли к выводу, что что-то у нас еще не допилено
карма: 22

0
Ответов: 3889
Рейтинг: 362
#60: 2011-10-20 10:37:38 ЛС | профиль | цитата
Обработки ситуации с несуществующим объектом ни в одном компоненте на данный момент никем не реализовано, Нужно в каждой процедуре каждого "контроллера печати" (то есть простая правка их родителя тут не поможет) просто делать выход при FItem = nil. Это должно исправить заодно существующую на данный момент проблему фатальной ошибки при незаполненности или неправильном заполнении каких-либо полей в свойствах контроллеров. В таких случаях InitItem, (потому я его и начал править в первую очередь), не может выдать ничего вразумительного (что понятно - он не знает, что от него просят инициализировать) и выдаёт недействительную структуру FItem, при работе с которой сейчас (в штатных компонентах) вылетает фатальная ошибка. То есть исправлять компоненты контроллеров однозначно нужно. За одно в их родителя (а точнее - в PrintController.InitItem) добавить работу с пришедшими с верхней точки именами искомых объектов печати внутри шаблона. Полностью отказаться от _data_Object и от экземпляра TDocItem, на который эта точка была изначально расчитана, на данный момент не получается как раз из-за отсутствия правильной обработки не инициализированного объекта. Если статически, вручную прописанные объекты печати кое-как работали (хотя опечатка в одной букве приводит к фатальной ошибке во время работы приложения), то при динамической "подаче" их "сверху" в наши кубики крайне желательно предупредить грозящие фатальным вылетом ситуации ненахождения имени в списке печати.
карма: 1

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