powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Не знаю как даже написать вопрос?
25 сообщений из 43, страница 1 из 2
Не знаю как даже написать вопрос?
    #32424961
Александр Третьяков
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не знаю как даже написать вопрос. Вопрос в следующем. Использую OleTreeView в справочнике товаров (очень большой) и во время загрузки данных задержка 2 секунды. Пришла идея сделать глобальний объект во время старта программы и загрузить в него данные. А когда вызываеш форму справочника этот объект копируеш на форму и работаеш с ним. Как это сделать ума не приложу. Может кто-то делал что-то подобное? Заранее благодарю за любые советы.
...
Рейтинг: 0 / 0
Не знаю как даже написать вопрос?
    #32425017
Alex Sheff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я делал что-то подобное для отчета:
create cursor и копировал туда данные для отчета,
но в твоем случае надо будет отслеживать изменения в cursor и синхронизировать его с базой
...
Рейтинг: 0 / 0
Не знаю как даже написать вопрос?
    #32425031
Burn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В свое время ктото предлагал, в таких случаях формировать дерево динамически - сначала толтько ветви вернехо уровня, по мере ракрытия узлов поключать новые. Тем самым избегаем перебора всей таблицы за раз
...
Рейтинг: 0 / 0
Не знаю как даже написать вопрос?
    #32425120
Александр Третьяков
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я думал над тем чтобы формировать динамически, но не знаю ... что-то не нравиться. Хотелось создать объект раз в начале программы и использовать его потом постоянно. Думали над вариантом visible=.f. visible=.t. для формы но по структуре програмы не подходит.
...
Рейтинг: 0 / 0
Не знаю как даже написать вопрос?
    #32425128
IgorProgrammer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Столкнулся с этой проблемой...
Если много данных то будет задержка и при Destroy формы...(у меня огромное дерево и когда я все подгружал... дестрой при visible=.f. проходил в течении 3 секунд... с visible=.t. 4-6 секунд...)
Нашел вариант...
Если пользователь по всем ветвям не бегает...(просто задолбется...)
Шустренькая прорисовка...
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
&&Дорисовываю если нету...
Parameters ne_nado_grida
LOCAL oNod
thisformset.form1.Enabled = .F.
thisformset.form1.tree1.object.Enabled = .F.
wait window '' timeout  0 . 05    &&Иногда появляется проблема с плавным со-
скакиванием с ветви дерева...(просто я вырезал кусок проги... у меня там 
еще куча сееков висит и разной фиг..)
oNod = thisForm.Tree1

**************строим дерево если нет дочерних**********************
if oNod.object.selecteditem.children =  0 
    sele * from knigi where knigi.kodvidrab = my_kd_vidrab and
    &my_and and &my_and2 into cursor knigi_my_vrem
    sele knigi_my_vrem
    scan
        perem_knigi = '__' + alltrim(str(knigi_my_vrem.kodknigi))
        oNod.Nodes.Add(perem_vidrab,  4 , perem_knigi, iif(lingvrus, alltrim
(knigi_my_vrem.shifrknig) + ' ' + alltrim(knigi_my_vrem.naimr), alltrim
(knigi_my_vrem.shifrknig) + ' ' + alltrim(knigi_my_vrem.naimu)),  0 )
    endscan
endif

**************раскрываем текущую ветку**********************
IF thisform.tree1.object.selecteditem.children >  0 
         thisform.tree1.selecteditem.expanded=.t.
ENDIF
thisformset.form1.Enabled = .t.
thisformset.form1.tree1.object.Enabled = .t.


Принцип работы...
создаешь курсор и до-рисовываешь дерево...
У меня 4 таблицы...
Рисую по id (тип поля: integer)
Что б в дереве коды не пересекались...
1 таблица '_' + alltrim(str(id)) &&одно подчеркивание
2 таблица '__' + alltrim(str(id)) &&два подчеркивания
и т. д.
...
Рейтинг: 0 / 0
Не знаю как даже написать вопрос?
    #32425129
Гость_xxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хоть visible, хоть !visible, все одно при загрузке прога будет слегка висеть.
И как ты ни извращайся, хоть на начальном этапе загрузки, хоть в момент вызова формы с заполнением твоего контрола, все одно.
Динамически загружать деревья - самое правильное решение. Можно конечно, извратится и засунуть загрузку в поток, ну например из FLL,
или переписать свой TreeView на основе OCX контрола в VC++ или BCC, но все одно данные там тож в потоком пихать надо.
...
Рейтинг: 0 / 0
Не знаю как даже написать вопрос?
    #32425131
IgorProgrammer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Гость_xxx:

В Инете формы у меня прорисовывается только верхушка дерева...
А дорисовка в методе:
Tree1.DblClick

А не подгрузка всех уровней дерева{:-)}...
...
Рейтинг: 0 / 0
Не знаю как даже написать вопрос?
    #32425138
Гость_xxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ты конечно герой и выжал все что можно )
Но тормоз будет .
И у тебя ) Ну предстваь себе корней так этак штук 20000 ;)
Что? юзверя заставишь жать пока фокс в списке твоих задач будет висеть как
"Приложение ни отвечает на системные запросы"
и DoEvet тебе не поможет.
...
Рейтинг: 0 / 0
Не знаю как даже написать вопрос?
    #32425144
IgorProgrammer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Гость_xxx:
У меня около 13000 запесей в 4 таблицах...
Верхушка дерева стостоит из 20 записей...(1 таблица)
Пока проблем с "Приложение ни отвечает на системные запросы" небыло...
Да и быть не могло...
Как надо быстро стучать по дереву, что б нарисовать его полностью...
Тем более что стоит задержка...
wait window '' timeout 0.05

Init формы:
Код: plaintext
1.
2.
3.
4.
5.
6.
    sele vidrab  && 20  записей
    scan
        perem_vidrab = '_' + alltrim(str(vidrab))
        oNod.Nodes.Add('',  4 , perem_knigi, iif(lingvrus, alltrim
(vidrab.nomer) + ' ' + alltrim(vidrab.naimr), alltrim
(vidrab.nomer) + ' ' + alltrim(vidrab.naimu)),  0 )
    endscan


В зависимости от того где находимся дорисовывается кусок одной из таблиц(2,3,4) по условию id_верхнего=id_текущего
2 таблица - 600 записей
3 таблица - 3500 записей
4 таблица - 8500 записей
Максимальное количество записей около 60-80

Двойной щелчок Дерева
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
&&Дорисовываю если нету...
Parameters ne_nado_grida
LOCAL oNod
thisformset.form1.Enabled = .F.
thisformset.form1.tree1.object.Enabled = .F.
wait window '' timeout  0 . 05    &&Иногда появляется проблема с плавным со-
скакиванием с ветви дерева...(просто я вырезал кусок проги... у меня там 
еще куча сееков висит и разной фиг..)
oNod = thisForm.Tree1

**************строим дерево если нет дочерних**********************
if oNod.object.selecteditem.children =  0 
    sele * from knigi where knigi.kodvidrab = my_kd_vidrab and
    &my_and and &my_and2 into cursor knigi_my_vrem
    sele knigi_my_vrem
    scan
        perem_knigi = '__' + alltrim(str(knigi_my_vrem.kodknigi))
        oNod.Nodes.Add(perem_vidrab,  4 , perem_knigi, iif(lingvrus, alltrim
(knigi_my_vrem.shifrknig) + ' ' + alltrim(knigi_my_vrem.naimr), alltrim
(knigi_my_vrem.shifrknig) + ' ' + alltrim(knigi_my_vrem.naimu)),  0 )
    endscan
endif

**************раскрываем текущую ветку**********************
IF thisform.tree1.object.selecteditem.children >  0 
         thisform.tree1.selecteditem.expanded=.t.
ENDIF
thisformset.form1.Enabled = .t.
thisformset.form1.tree1.object.Enabled = .t.
...
Рейтинг: 0 / 0
Не знаю как даже написать вопрос?
    #32425145
Гость_xxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Просто мало данных.
...
Рейтинг: 0 / 0
Не знаю как даже написать вопрос?
    #32425151
IgorProgrammer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А зачем рисовать дерево...
Где одно из ветвей более 1000 записей???

Пользователю будет удобно играться с прокруткой...(туды-сюды)
Особенно где экран 800х600 и наименования более 300 символов
Пока найдет че те надо... так вся охота пропадет работать с такой прогой...

Лучше такие таблицы запихивать в грид + едит(для больших наименований)...
...
Рейтинг: 0 / 0
Не знаю как даже написать вопрос?
    #32425164
Гость_xxxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ты у пользователей спрашивал что им лучше ? )
...
Рейтинг: 0 / 0
Не знаю как даже написать вопрос?
    #32425170
IgorProgrammer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да просто имел глупость написать...

ON ERROR DO obrob_error_kovpl WITH ERROR( ), MESSAGE( ), MESSAGE(1), PROGRAM( ), LINENO( )

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
Procedure obrob_error_kovpl
Param kod_oshibki, kakai_messaga, kakai_messaga1, gde, my_line

my_alias = alias()
*susp
*messagebox('Îøèáêà '+alltrim(str(kod_oshibki)), 64 ,'')

If kod_oshibki =  1923  or kod_oshibki =  1924  or kod_oshibki =  1001 
	Return
Endif

do case
	case kod_oshibki =  1104 
=messagebox(' Возможно, компьютер администратора был отключен или
произошел сбой в сети. ' + chr( 10 ) + ; ' Программа будет закрыта ', 64 ,' 
Ошибка ')
		Clear Events
		ON SHUTDOWN
		Quit
		
	case kod_oshibki =  1943 
		Return

	otherwise
ln=messagebox(' В процессе Вашей работы в методе(программе) ' + IIF(Type
('gde')= "C" ,gde,'') + ' (позиция: ' +; IIF(Type('my_line')= "N" ,alltrim(str(my_line)),'') 
+ '), возникла ошибка: ' + chr( 10 ) +; kakai_messaga + chr( 10 ) +; ' Мы будем 
благодарны Вам, если Вы обратитесь к разработчикам.' + chr( 10 ) +; chr( 10 ) + ' 
Рекомендуется не продолжать выполнение программы и корректно закрыть 
приложение.' +; chr( 10 ) + ' Продолжить выполнение 
программы? ', 0 + 64 + 1 ,'Ошибка') 
		IF ln #  1 
			IF TYPE( "My_form_pereindex" ) =  "O"  AND !ISNULL(My_form_pereindex)
				My_form_pereindex.Release
				My_form_pereindex = ''
			ENDIF
			FOR my_form_vis =  1  to _screen.formcount
				IF _screen.forms[my_form_vis].Visible = .T.
					_screen.forms[my_form_vis].Enabled = .T.
				ENDIF
			ENDFOR
			CANCEL
		ENDIF
endcase


Теперь приходиться бщаться {:-)}...
...
Рейтинг: 0 / 0
Не знаю как даже написать вопрос?
    #32425172
IgorProgrammer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хорошо что домашний адресс не указал...{:-)}
...
Рейтинг: 0 / 0
Не знаю как даже написать вопрос?
    #32425177
Гость_xxxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пользователь, он всегда гад )
И нечего под него ориентироваться.
Сделал так - ставить перед фактом что это работает ТАК.
Сделал по другому - значит ТАК.
Другое дело какое ты сам получаешь эстетическое удовольствие от того как
работает твоя прога.

Р.S. тех кто может сделать чтобы "это работало" много. Другое дело сделать так чтобы было правильно ) Верно ?
Это так , заключительные демагогические мысли о сути вещей в природе )
...
Рейтинг: 0 / 0
Не знаю как даже написать вопрос?
    #32425179
IgorProgrammer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Гад - не гад... А кушать хочеться всегда...{:-)}
И надо с них деньгу сбивать...
Хочь - не хочь приходится вертеться...
...
Рейтинг: 0 / 0
Не знаю как даже написать вопрос?
    #32425181
IgorProgrammer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
На Си-ном форуме есть спецы по С++...
А то я задал вопрос...

Крикнул в ответ тишина...
Сижу понимае-те ли вспоминаю этот чудейснийший язык...
А зделать все как обычно надо было на вчера...
...
Рейтинг: 0 / 0
Не знаю как даже написать вопрос?
    #32425182
Гость_xxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Пользователь умный стал )
Рычаг управления имеет. И это рычаг назывется ТЗ ))
...
Рейтинг: 0 / 0
Не знаю как даже написать вопрос?
    #32425183
IgorProgrammer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А по-поводу пользователей...
Так они захотели еще к программе чат понимае-те ли внутри сети...
Скоро потребуют игрушки в прогу засунуть{:-)}
...
Рейтинг: 0 / 0
Не знаю как даже написать вопрос?
    #32425184
IgorProgrammer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Чем больше живу тем больше понимаю...
Что в этой жизни я допустил две ОГРОМНЫЕ ошибки:...

1) Родился на свет...{:-)}
2) Выбрал эту чудесную профессию...{:-)}
...
Рейтинг: 0 / 0
Не знаю как даже написать вопрос?
    #32425186
Гость_xxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ну так сделай ты им чат )
...
Рейтинг: 0 / 0
Не знаю как даже написать вопрос?
    #32425189
Александр Третьяков
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
для IgorProgrammer спасибо за совет и кусок кода, если не найду ничего другого то прийдеться делать так, но хочу всеже при загрузке программы забить дерево данными и его мере необходимости просто класть на форму.


для Гость_xxx, под visible=.f. я имел ввиду что в начале програми вызвал форму с дервом и форму спрятал (всю форму), а когда надо показываеш ее на екране visible=.т.
...
Рейтинг: 0 / 0
Не знаю как даже написать вопрос?
    #32425192
Гость_xxxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Именно это я и понял.
...
Рейтинг: 0 / 0
Не знаю как даже написать вопрос?
    #32425194
Гость_xxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
А теперь предствь, что у тебя , для начала 10 юзеров и они что-то внесли в
таблицу которая слущит для твоего дерева одной из базовых ? Че делать-то бушь со соим курсором в памяии на каждом рабочем месте? Перегружать?
И прога висит , а пользователь ну никак не поймет от чего , ее же не видно ))
...
Рейтинг: 0 / 0
Не знаю как даже написать вопрос?
    #32425195
IgorProgrammer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Первую библу по определению кто в сети с прогой работает я уже написал...\r
Вот с сенд-мессагу проблемка вышла...(http://]/topic/77510)\r
Я Си-ники молчат...
...
Рейтинг: 0 / 0
25 сообщений из 43, страница 1 из 2
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Не знаю как даже написать вопрос?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]