Вверх ↑
Этот топик читают: Гость
Ответов: 952
Рейтинг: 4
#1: 2013-06-06 23:35:05 ЛС | профиль | цитата
Понимаю что телепатов нет но может кто уже сталкивался с подобным.
При нажатии на дочерней форме кноки Применить, форма закрывается и на передний план выходит не главная форма, а окно любой проги которая открыта на заднем плане, Тотал коммандера к примеру, выходит на секунду-две и снова появляется главная форма моей проги.
Что это может быть?
Может с кнопки Применить неправильно сделал разводку хаба? Сначала может закрыть форму а потом выполнять все действия (запрос в бд, смена надписи на панели главной формы и тд.) ?
Теряюсь в догадках.
------------ Дoбавленo в 23.35:
Ладно, тогда такой вопрос.
Как в этой панели, на дочерней форме обнулять значение Календаря при открытии либо закрытии формы?
Почему-то Календарь сохраняет выбранное ранее значение, если один раз воспользовался поиском с датой, то следующий запрос к БД идет с этой датой даже когда её не выбираешь..

Add(ChildPanelEx,4112072,546,42)
{
}
BEGIN_SDK
Add(EditMultiEx,15094921,21,21)
{
WorkCount=#30:doData=Установить текст в поле|
VarCount=#19:ResRD=Значение даты|
Width=328
Height=165
link(doData,71573:doData,[(35,27)(35,48)])
link(ResRD,10375346:Result,[(27,178)(173,178)])
}
Add(DatePicker,11812122,119,56)
{
Left=5
Top=-1
Width=84
Height=21
Ctl3D=0
AlignPicker=1
SetDateOnChange=1
Point(DateTime)
link(onChange,16587198:doEvent1,[])
}
Add(Panel,9693730,301,84)
{
Left=404
Top=47
Width=111
Height=20
}
Add(HubEx,7849553,206,49)
{
link(onEvent,1346129:doWork,[])
}
Add(InlineCode,1346129,238,49)
{
WorkPoints=#6:doWork|
EventPoints=#4:Init|6:toBack|7:toFront|0:|
VarPoints=#5:ResRD|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|21:uses kol,Share,Debug;|0:|4:type|28: THiAsmClass = class(TDebug)|10: private|14: Rd:integer;|3: |9: public|36: init, toBack, toFront: THI_Event;|45: procedure ResRd(var dt:TData; Index:Word);|49: procedure doWork(var _Data:TData; Index:Word);|3: |5: end;|0:|14:implementation|0:|29:procedure THiAsmClass.doWork;|5:BEGIN|29: Rd := Trunc(toReal(_Data));|16: If Rd<>0 then |8: begin|44: _hi_onEvent(init,Rd); // установить дату|36: _hi_onEvent(toBack); // открыть|6: end|40: else _hi_onEvent(toFront); // скрыть|4:END;|0:|28:procedure THiAsmClass.ResRd;|5:BEGIN|19: dtInteger(dt,Rd);|5:END; |4:end.|
link(Init,11812122:doSetDate,[(286,55)(286,30)(100,30)(100,62)])
link(toBack,16384436:doSendToBack,[])
link(toFront,16384436:doBringToFront,[])
}
Add(Edit,16384436,301,42)
{
Left=3
Top=2
Width=65
Height=15
Color=255
Text=""
ReadOnly=0
Point(doSendToBack)
Point(doBringToFront)
}
Add(DoData,71573,42,42)
{
Data=Integer(0)
link(onEventData,7849553:doWork1,[(210,48)])
}
Add(Hub,16587198,175,56)
{
link(onEvent1,7849553:doWork2,[(198,62)(198,55)])
link(onEvent2,10375346:doConvert,[(201,69)(201,106)(155,106)(155,143)])
}
Add(Button,16325729,112,98)
{
Left=89
Top=-1
Width=20
Font=[MS Sans Serif,8,1,0,1]
TabOrder=-1
Ctl3D=0
Caption="X"
Data=Integer(0)
link(onClick,7849553:doWork3,[(210,104)])
}
Add(DateConvertor,10375346,167,137)
{
Mode=9
Format="yyyy-MM-dd"
Point(Result)
Point(Data)
link(Data,1346129:ResRD,[(173,109)(244,109)])
}
END_SDK


карма: 0

0
vip
#1.1контекстная реклама от партнеров
Гость
Ответов: 17029
Рейтинг: 0
#2: 2013-06-07 21:14:58 правка | ЛС | профиль | цитата


Редактировалось 6 раз(а), последний 2021-06-24 08:02:30
карма: 0

0
Гость
Ответов: 17029
Рейтинг: 0
#3: 2013-06-07 21:23:20 правка | ЛС | профиль | цитата


Редактировалось 6 раз(а), последний 2021-06-24 08:02:30
карма: 0

0
Ответов: 952
Рейтинг: 4
#4: 2013-06-09 14:00:44 ЛС | профиль | цитата
Что то у меня не выходит. Может потому что я использовал просто ChildForm а не ChildFormEx?

P.S. Пытался заменить ChildForm с помощью меню по правой кнопки мыши - Заменить - Интерфейс - .... и тут вопрос, наводишь на любой пункт, стрелочка возле него пропадает но список дальше не открывается. Это так и должно быть?
Как тогда заменить? Перебивать всю форму?
Заметил что когда в Вашем примере я закрываю дочернее окно - дата исчезает из памяти. А в моём проекте - остаётся висеть Да, точно, заменил в вашем примере ChildFormEx на ChildForm - и тогда не работает. Как сменить элемент с наименьшими трудозатратами?
карма: 0

0
Гость
Ответов: 17029
Рейтинг: 0
#5: 2013-06-09 15:11:27 правка | ЛС | профиль | цитата


Редактировалось 6 раз(а), последний 2021-06-24 08:02:28
карма: 0

0
Разработчик
Ответов: 26061
Рейтинг: 2120
#6: 2013-06-09 15:16:33 ЛС | профиль | цитата
37.45.110.220 писал(а):
он будет сбрасываться по умолчанию только в форме с свойством OnlyOnce

Нет такого режима как OnlyOnce и не было никогда, фонарь это

procedure THIMultiElementEx.SetCreateProc;
begin
FOnCreate := Value;
if _prop_Mode<>0 then exit;
FChild := CreateInstance;
FList.Add(FChild);
end;

Как мы видим, то у нас только два режима работы контейнера -- Standard=0 и Dynamic<>0. Да и Standard отличается от Dynamic только принудительным созданием одного стартового экземпляра
карма: 22

0
Гость
Ответов: 17029
Рейтинг: 0
#7: 2013-06-09 15:30:08 правка | ЛС | профиль | цитата


Редактировалось 6 раз(а), последний 2021-06-24 08:02:07
карма: 0

0
Разработчик
Ответов: 26061
Рейтинг: 2120
#8: 2013-06-09 15:34:57 ЛС | профиль | цитата
37.45.110.220 писал(а):
просто не понимаю кому и зачем вы это написали

Не надо вводить в заблуждение ни себя, ни людей. Этот режим предполагался, но не был реализован. Недавно об этом, кстати, сказал один из создателей контейнеров -- Galkov
Да еще, то что ты назвал свойством имеет вполне определенное название -- Mode, что переводится именно как "режим". Так что нет такого свойства OnlyOnce, а есть режим OnlyOnce, который не реализован
карма: 22

0
Ответов: 9906
Рейтинг: 351
#9: 2013-06-09 15:41:21 ЛС | профиль | цитата
Да ладно тебе, нашел создателя.... Может коды шерстил немного.
НЕ БОЛЕЕ ТОГО
карма: 9

0
Разработчик
Ответов: 26061
Рейтинг: 2120
#10: 2013-06-09 15:43:20 ЛС | профиль | цитата
Galkov, ну и прав я или нет
Что ты скажешь по поводу этого злощастного режима OnlyOnce
карма: 22

0
Гость
Ответов: 17029
Рейтинг: 0
#11: 2013-06-09 15:45:02 правка | ЛС | профиль | цитата


Редактировалось 6 раз(а), последний 2021-06-24 08:02:07
карма: 0

0
Ответов: 9906
Рейтинг: 351
#12: 2013-06-09 15:47:09 ЛС | профиль | цитата
nesco писал(а):
ну и прав я или нет

Как же ты можешь оказаться не прав

И как я могу сказать, что ты не прав, если ты почти повторил мою "несдержанность", не помню уже где
карма: 9

0
Разработчик
Ответов: 26061
Рейтинг: 2120
#13: 2013-06-09 15:57:18 ЛС | профиль | цитата
37.45.110.220 писал(а):
при нажатии кнопки 2 и ввода текста, закрытия и снова нажатия кнопки 2 сбрасывает текст по умолчанию

И что -- обычный режим работы в динамическом режиме. Поставь у себя в схеме вместо OnlyOnce режим Dinamic и посмотри на результат. Уверен, что ты не найдешь никакого отличия в работе
карма: 22

0
Ответов: 9906
Рейтинг: 351
#14: 2013-06-09 18:18:17 ЛС | профиль | цитата
Может следует ту же самую правду рассказать с другой стороны...
  1. Все Ex-мультики динамические по праву рождения. Т.е., экземпляров схем там может быть от нуля, до "очень много"
  2. Обращение к его методам происходит конкретно к тому экземпляру схемы, который выбран методом ##select
  3. Плюс к этому, экземпляр схемы, созданный методом ##add -- сразу становится выбранным
  4. Может приключиться такая история, что не выбран НИКТО. В этом случае происходит фокус типа OnlyOnce: создается новый экземпляр, выполняется метод, и экземпляр убивается. Типа ничего и не было.

Ну вот и все.
Все это справедливо всегда (типа от рождения), независимо от Mode.
А Mode срабатывает только в одном случае - при создании мультика. Так-то, ##Count=0, но в режиме Standart дополнительно исполняется п.3 один раз.
Вот и все хитромудрости

карма: 9

0
Ответов: 952
Рейтинг: 4
#15: 2013-06-09 19:06:11 ЛС | профиль | цитата
Никто не упомянул как же мне все таки заменить элемент ChildForm на ChildFormEx. Попробовал вручную - получил офигенную ошибку -

Exception Exception in module D:MyBD.exe at 00000000.
Access violation at address 00000000. Read of address 00000000
------------ Дoбавленo в 19.06:
Почему вот это не работает? Не идет запрос в БД.
Add(MainForm,8494981,336,469)
{
Position=1
}
Add(ChildFormEx,11099823,546,469)
{
Mode=2
AddHint(63,-24,62,13,Mode)
}
BEGIN_SDK
Add(EditMultiEx,10714414,21,21)
{
WorkCount=#11:doShowModal|
Width=650
Height=508
link(doShowModal,11543011:doEvent1,[(98,27)(98,167)])
}
Add(MainForm,4729526,259,98)
{
Left=35
Top=105
Width=382
Height=249
Position=1
Point(doShowModal)
}
Add(Hub,11543011,175,161)
{
link(onEvent1,4729526:doShowModal,[(224,167)(224,132)])
link(onEvent2,8654151:doOpen,[(210,174)(210,279)])
}
Add(SQLite_DB,8654151,231,273)
{
FileName="baze.db"
link(onOpen,14014397:doQuery,[])
link(FileName,5151217:Var,[])
}
Add(SQLite_Query,14014397,280,273)
{
SQL="select * from baze"
link(onQuery,5063734:doAdd,[])
}
Add(GlobalVar,5151217,231,238)
{
Name="Path"
Data=String()
}
Add(Edit,14230502,259,147)
{
Left=5
Top=110
Width=355
}
Add(ComboBox,5063734,413,273)
{
Left=75
Top=170
Width=280
Height=21
}
END_SDK
Add(Button,15937869,462,469)
{
Left=135
Top=110
Caption="2"
link(onClick,11099823:doShowModal,[])
AddHint(5,-18,21,13,Caption)
}


карма: 0

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