|
|
|
Выход из toolbar
|
|||
|---|---|---|---|
|
#18+
Как закрыть форму, при нажатии определенной кнопки в тулбаре. я записала код: rr32=AINSTANCE(a_formname, "Form") FOR m_cikl= 1 to rr32 m_form = a_formname(m_cikl)+".release" &m_form ENDFOR он срабатывает во время отладки программы, ф окне фокспра. а в exeшнике при нажатии на кнопку закрытие, ничего не происходит форма продолжает висеть С уважением, Ольга. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2006, 16:57 |
|
||
|
Выход из toolbar
|
|||
|---|---|---|---|
|
#18+
пробуй закрывать через колекцию _SCREEN.Forms(). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2006, 18:34 |
|
||
|
Выход из toolbar
|
|||
|---|---|---|---|
|
#18+
Проблема в том, ЧТО ИМЕННО возвращает функция AINSTANCE(). А возвращает она, в данном случае, список переменных, содержащих ссылки на формы. Заметь, реально существующих переменных . Но вся проблема в том, что команда DO FORM, по умолчанию, создает переменную, содержащую ссылку на форму с областью видимости PRIVATE. Т.е. такая переменная будет автоматически уничтожена по завершении той процедуры или метода, в котором была дана команда DO FORM. В результате, форма есть, но переменных, которые содержали бы ссылку на эту форму - нет. Как следствие, AINSTANCE() ничего не возвращает. Нет никаких косвенных ссылок. Соответственно, цикл не работает. Количество элементов массива равно 0. Простой пример Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. Здесь в качестве MyForm.scx укажи любую свою форму. В данном случае НЕ модальную. Запусти этот код и увидишь замечательный эффект: форма отображается, но AINSTANCE() возвращает 0 и массив gaMyArray ничем не заполнен. Следовательно, как справедливо заметил Hel!Riser , AINSTANCE() для получения ссылок на все открытые формы просто не годится. Он не для этого предназначен. Следует использовать коллекцию _SCREEN.Forms() или _VFP.Forms(). Хотя, в общем случае, закрытие всех открытых форм это не такая тривиальная задача как кажется. Для справки имей в виду, что в коллекции _SCREEN.Forms() та форма, которая лежит сверху имеет индекс 1 и при закрытии этой формы список форм в _SCREEN.Forms() сдвинется. Т.е. простейший код будет примерно такой: Код: plaintext 1. 2. 3. 4. 5. 6. Это не опечатка. Всегда удаляется элемент с индексом 1, а не переменная m.lnI. Однако повторюсь, такой код сработает только в простейшей схеме организации вызова форм. Есть масса вариантов, когда такая схема работать не будет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.02.2006, 22:52 |
|
||
|
Выход из toolbar
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. Я хотела закрывать через коллекцию, как вы написали, но в данном случае у меня закрывается toolbar, а форма как висела, так и висит ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2006, 08:23 |
|
||
|
Выход из toolbar
|
|||
|---|---|---|---|
|
#18+
а зачем так накрутили, то зачем массивы Код: plaintext 1. 2. 3. 4. 5. есть хороший метод - вешать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2006, 10:40 |
|
||
|
Выход из toolbar
|
|||
|---|---|---|---|
|
#18+
alex11100а зачем так накрутили, то зачем массивы Код: plaintext 1. 2. 3. 4. 5. есть хороший метод - вешать да, хорошо срабатывает, только после release данные не сохраняются. а если делать на форме кнопку с thisform.release все вводимые данные сохраняются в таблице ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2006, 13:24 |
|
||
|
Выход из toolbar
|
|||
|---|---|---|---|
|
#18+
вообще то на форме должна быть кнопка <<ОК>> или я их еще обзываю <<Ладно>> вот когда на них давим - то и все ок а если релиз, то это уж релиз полный определитесь с тем, что вы желаете добится можно у вормы завести метод SaveDataWithRelease и его уже звать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2006, 13:33 |
|
||
|
Выход из toolbar
|
|||
|---|---|---|---|
|
#18+
alex11100вообще то на форме должна быть кнопка <<ОК>> или я их еще обзываю <<Ладно>> вот когда на них давим - то и все ок а если релиз, то это уж релиз полный определитесь с тем, что вы желаете добится можно у вормы завести метод SaveDataWithRelease и его уже звать что то я вообще запуталась с этим тулбаром. вариант1 Без него, все понятно. Есть форма, кликаю кнопку на форме , вызывается другая форма, реактируются данные, если сохранять надо, жми кнопку сохранить, иначе отмена. вариант2 С тулбаром все не так работает. Загружается главная форма, и если в тулбаре жму кнопку открыть форму для редактирования тот же самый код, что и в первом варианте т.е. (do form ******) то форма загружается, но такое ощущение что событие init не срабатывает. Может есть какие-то особенности в работе с toolbarом подскажите пожалуйста ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2006, 14:28 |
|
||
|
Выход из toolbar
|
|||
|---|---|---|---|
|
#18+
все плохо Вы желаете сделать универсальный тулбар для всех форм чтобы он перерисовывался и знал с какой формой работать???? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2006, 15:13 |
|
||
|
Выход из toolbar
|
|||
|---|---|---|---|
|
#18+
alex11100все плохо Вы желаете сделать универсальный тулбар для всех форм чтобы он перерисовывался и знал с какой формой работать???? да нет, хочу пока для каждой формы свой сделать тулбар. Но через тулбар данные обновляются как то странно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2006, 16:06 |
|
||
|
Выход из toolbar
|
|||
|---|---|---|---|
|
#18+
на взлете тулбара нужно ему передать в инит параметром саму форму и случится чудо в форме в ините пишите create("tb","library",this) в ините класса-тулбара lpara toForm this.oForm=toForm и все дальше во всех конпках тулбара пишите this.parent.oForm.release ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2006, 16:18 |
|
||
|
Выход из toolbar
|
|||
|---|---|---|---|
|
#18+
Krushinskaya Olgaда нет, хочу пока для каждой формы свой сделать тулбар. Но через тулбар данные обновляются как то странно В таком случае я не советую вообще связываться с классом toolbar! Добавьте кнопки прямо на форму. Дело в том, что при выборе кнопки из ToolBar у вас на форме будет возникать событие Deactivate, а при возврате обратно - Activate. На самом объекте формы при выборе кнопки ToolBar событие LostFocus и Valid не возникает. Это не всегда удобно. Я создал свой класс универсльного Toolbar (на основе класса Container) и, в случае необходимости, помещаю его на форму (или класс формы). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2006, 09:09 |
|
||
|
Выход из toolbar
|
|||
|---|---|---|---|
|
#18+
2 Aleksey-K В таком случае я не советую вообще связываться с классом toolbar! Добавьте кнопки прямо на форму. Дело в том, что при выборе кнопки из ToolBar у вас на форме будет возникать событие Deactivate, а при возврате обратно - Activate. На самом объекте формы при выборе кнопки ToolBar событие LostFocus и Valid не возникает. Это не всегда удобно. Я создал свой класс универсльного Toolbar (на основе класса Container) и, в случае необходимости, помещаю его на форму (или класс формы). Верное решение ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2006, 10:33 |
|
||
|
Выход из toolbar
|
|||
|---|---|---|---|
|
#18+
неверным идете путем, товарищи! посмотрите на интерфейс любого софта вы где-нить видели обилие тулбаров??? не есть хорошо, однако. и ече я буду в каждую форму чего-то пихать не. лучше один, но ууууумммммнннныыыыыыыййййййййй объект а комп, он железный и умный - пусть и сам разруливает ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2006, 10:40 |
|
||
|
Выход из toolbar
|
|||
|---|---|---|---|
|
#18+
Hi Aleksey! > Добавьте кнопки прямо на форму. Это конечно простое решение, но если интерфейс реально многооконный (т.е. ВИДИМЫ сразу много окон), то не совсем красивое - представь сколько на экране будет кнопок :) Пример - в Word есть пунктик в меню "сравнить рядом с..." И при его выборе мы видим 2 окна документа, но лишь один набор тулбаров. > Дело в том, что при выборе кнопки из ToolBar у вас на форме будет > возникать событие Deactivate, а при возврате обратно - Activate. На самом > объекте формы при выборе кнопки ToolBar событие LostFocus и Valid не > возникает. В смысле наоборот - НЕ будет возникать ни Deactivate ни LostFocus при работе с тулбаром (т.к. он не перехватывает фокус у формы), а при работе с кнопками на форме LostFocus срабатывать будет (и данные из контрола реально запишутся в соотвествующий источник данных). Впрочем это легко обходится - пара методов для ручного "увода" фокуса с реального контрола на некоторый "фиктивый", и обратно - и конечно логика работы "кнопок тулбара" не в самих этих кнопках описана, а в методах формы (или особого класса-посредника), а тулбар лишь дёргает эти методы. Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2006, 02:32 |
|
||
|
Выход из toolbar
|
|||
|---|---|---|---|
|
#18+
Igor Korolyov Это конечно простое решение, но если интерфейс реально многооконный (т.е. ВИДИМЫ сразу много окон), то не совсем красивое - представь сколько на экране будет кнопок :) Пример - в Word есть пунктик в меню "сравнить рядом с..." И при его выборе мы видим 2 окна документа, но лишь один набор тулбаров. Да, когда то я тоже так делал, но... это хорошо если вы говорите про общий, одни ToolBar, а если для форм нужны свои, уникальные действия (читай кнопки)? Тогда при мнокооконном интерфейсе на экране возникает много ToolBar, которые загромождают экран, а если их прятать и показывать при получении (потери) "родной" формой фокуса, то иногда происходит сдвижка форм, из-за того, что не все ToolBar помещаются в Doock ( как правило, это верх экрана). Причем, даже если есть место для ToolBar в первой строке, VFP упорно старался вставить его в то место, где оно появлялось (2, 3, .. строки), когда места в 1 - строке не было. Короче, года три назад я отказался от этой красивой идеи с объектами ToolBar. Может быть в VFP 9.0 теперь с позицией ToolBar все нормально, но судя по тому, как сам VFP обращается со своими ToolBar, то вряд ли. Igor Korolyov В смысле наоборот - НЕ будет возникать ни Deactivate ни LostFocus при работе с тулбаром (т.к. он не перехватывает фокус у формы), а при работе с кнопками на форме LostFocus срабатывать будет (и данные из контрола реально запишутся в соотвествующий источник данных). Ничего срабатывать не будет на форме: не Activate, не Deactivate (тут я описался) и не LostFocus и Valid (а тут Вы описались, похоже) на объектах формы при нажатии кнопки на ToolBar! А вот при нажатии кнопки на форме Activate и Deactivate, разумеется, возникать не будут (если только это таже форма :) ), а Valid (и далее LostFocus) - будут. С уважением, Алексей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2006, 07:54 |
|
||
|
Выход из toolbar
|
|||
|---|---|---|---|
|
#18+
Hi Aleksey! > Да, когда то я тоже так делал, но... это хорошо если вы говорите про > общий, одни ToolBar, а если для форм нужны свои, уникальные действия > (читай кнопки)? Ну ясное дело что речь идёт про нечто универсальное - иначе сама идея тулбара теряется - если это по сути просто кусок формы (т.к. связан ТОЛЬКО с этой формой и ни с чем более), то зачем его отрывать и выносить куда то ещё :) > Тогда при мнокооконном интерфейсе на экране возникает много ToolBar, > которые загромождают экран, а если их прятать и показывать при получении > (потери) "родной" формой фокуса, то иногда происходит сдвижка форм, из-за > того, что не все ToolBar помещаются в Doock Да такая проблема есть, но в целом она решается если указывать 2 и 3 параметры метода Dock (сами значения этих координат определять это кстати тоже отдельный и не простой вопрос - тут логика у фокса весьма "странная"). >> В смысле наоборот - НЕ будет возникать ни Deactivate ни LostFocus при >> работе >> с тулбаром (т.к. он не перехватывает фокус у формы), а при работе с >> кнопками >> на форме LostFocus срабатывать будет (и данные из контрола реально >> запишутся >> в соотвествующий источник данных). > Ничего срабатывать не будет на форме: не Activate, не Deactivate (тут я > описался) и не LostFocus и Valid (а тут Вы описались, похоже) Нет, я имел в виду что при размещении кнопок на форме они (LostFocus и Valid для "предыдущего" контрола) будут работать. Так что тут полный консенсус (если перечитать внимательно предложение и "разделить" его в том месте где запятая стоит :) ) Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2006, 02:21 |
|
||
|
|

start [/forum/topic.php?fid=41&msg=33536293&tid=1592352]: |
0ms |
get settings: |
9ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
181ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
54ms |
get tp. blocked users: |
1ms |
| others: | 214ms |
| total: | 495ms |

| 0 / 0 |
