powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / TreeView и меню POPUP
11 сообщений из 11, страница 1 из 1
TreeView и меню POPUP
    #34409063
psv73
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день All !!!

Вот, при возне с TreeView получается такая ерунда. Из вызванного, правой кнопкой мыши над TreeView, меню пользователь выбирает действие. В случае если он выбрал "Редактировать", получается не так, как хотелось бы... как я понимаю достаточно вызвать метод StartLabelEdit() и все... но не выходит. Т.е. появляется рамка (в которой редактируется текст элемента TreeView) и сразу же исчезает, не предоставив возможность изменить данные...
Если же добавить задержку в код ( в моем случае wait '' timeout 0.1) то редактировать можно, но не видно КУРСОРА и соответственно не видно с какой позиции будут добавляться символы.

КОД:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
LPARAMETERS lcPrompt, lnBar

DEACTIVATE POPUP _Edit_
RELEASE POPUPS _Edit_ 

DO CASE
  CASE lnBar= 1    && --- Добавить элемент
    THIS.Add_new_item()
  CASE lnBar= 2    && --- редактировать элемнт
    WAIT '' TIMEOUT  0 . 1 
    THIS.SetFocus()
    THIS.StartLabelEdit() 
  CASE lnBar= 3    && --- удалить элемнт
    THIS.DeleteItem()
ENDCASE

Если в методе DBlClick() я прописываю THIS.StartEditLabel() то все прекрасно работает!!!!
Где я перемудрил (или недомудрил) ;)

Спасибо!
...
Рейтинг: 0 / 0
TreeView и меню POPUP
    #34410028
slavadem1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Попробуй так
В методе напиши DblClick() напиши THIS.StartLabelEdit()

адалее

LPARAMETERS lcPrompt, lnBar

DEACTIVATE POPUP _Edit_
RELEASE POPUPS _Edit_

DO CASE
CASE lnBar=1 && --- Добавить элемент
THIS.Add_new_item()
CASE lnBar=2 && --- редактировать элемнт
THIS.SetFocus()
THIS.dblcick()
CASE lnBar=3 && --- удалить элемнт
THIS.DeleteItem()
ENDCASE
...
Рейтинг: 0 / 0
TreeView и меню POPUP
    #34410427
Погодин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Из приведенного примера непонятно, в каком методе вызывается код. Я использовал MSComctlLib.TreeCtrl.2. В нем нет события RightClick. Поэтому в его событии MouseUp написал:

*** ActiveX Control Event ***
LPARAMETERS button, shift, x, y
IF button=2
NODEFAULT
this.startLabelEdit
ENDIF

и все работает.
Если писать в событиях самой формы, то надо так (RightClick):

NODEFAULT
thisform.tree.startlabeledit
...
Рейтинг: 0 / 0
TreeView и меню POPUP
    #34410684
psv73
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ПогодинИз приведенного примера непонятно, в каком методе вызывается код. Я использовал MSComctlLib.TreeCtrl.2. В нем нет события RightClick. Поэтому в его событии MouseUp написал:

*** ActiveX Control Event ***
LPARAMETERS button, shift, x, y
IF button=2
NODEFAULT
this.startLabelEdit
ENDIF

и все работает.
Если писать в событиях самой формы, то надо так (RightClick):

NODEFAULT
thisform.tree.startlabeledit

Спасибо!
Действительно, код я влупил в MouseDouwn.
Если без меню, сделать так как вы описали, то работает, а если вызывать метод из меню, то уже не работает...
Теперь перенес его в MouseUp результат чуть лучше, но не идеальный... Теперь курсор появился, но без
Код: plaintext
wait '' timeout  0 . 1 
попрежнему не дает редактировать запись...
В методе MouseUp я рисую меню (по клику правой кнопкой), изменю вызываю метод My_Tree.Choice(), ну а в нем сам код:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
LPARAMETERS lcPrompt, lnBar

DEACTIVATE POPUP _Edit_
RELEASE POPUPS _Edit_ 

DO CASE
  CASE lnBar= 1    && --- Добавить элемент
    THIS.Add_new_item(THIS.SelectedItem.Key)
  CASE lnBar= 2    && --- Добавить элемент
    THIS.Add_new_item(THIS.Nodes.Item(THIS.SelectedItem.Key).Parent.Key)
  CASE lnBar= 4    && --- редактировать элемнт
    WAIT '' TIMEOUT  0 . 1 
    THIS.SetFocus()
    THIS.StartLabelEdit() 
  CASE lnBar= 5    && --- удалить элемнт
    THIS.DeleteItem()
ENDCASE

в принципе, я выкрутился, но "выкрутился" значит неправильно решал ... хотелось бы понять, где ошибаюсь...
...
Рейтинг: 0 / 0
TreeView и меню POPUP
    #34410703
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Надеюсь, сделана глобальная настройка

Код: plaintext
_VFP.AutoYield = .F.
...
Рейтинг: 0 / 0
TreeView и меню POPUP
    #34410739
psv73
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ВладимирМНадеюсь, сделана глобальная настройка

Код: plaintext
_VFP.AutoYield = .F.


Сделал, не помогло... :(
...
Рейтинг: 0 / 0
TreeView и меню POPUP
    #34410766
alex11100
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
уведите фокус с дерева
затем вызовите StartLabelEdit

также помогает оборачивание
вызова StartLabelEdit в ассайн метод
какого-нить другого объекта
...
Рейтинг: 0 / 0
TreeView и меню POPUP
    #34410814
psv73
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alex11100уведите фокус с дерева
затем вызовите StartLabelEdit

Так он, вроде бы теряет фокус, ведь меню POPUP его забирает на себя... или я ошибаюсь?

alex11100также помогает оборачивание
вызова StartLabelEdit в ассайн метод
какого-нить другого объекта

я все методы разместил в TreeView, хотел сделать его независимым от других объектов, т.е. чтобы все необходимое было в нем. Может как раз так и нельзя?
...
Рейтинг: 0 / 0
TreeView и меню POPUP
    #34410913
alex11100
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
пример не мой

вообще-то
тривью нужно оформить как класс
...
Рейтинг: 0 / 0
TreeView и меню POPUP
    #34410971
alex11100
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
в методе filltree
замените код на такой
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
LPARAMETERS idd
LOCAL old_rec

SCAN FOR razdel.parentid=idd
  try
  	  THISFORM.oleTree.Nodes.ADD(ALLTRIM(parentid), 4 ,ALLTRIM(id), ALLTRIM(name), 2 , 3 )
  catch
  endtry
  old_rec=RECNO()
  try
	  thisform.FillTree(razdel.id)
  catch
  endtry
  GOTO old_rec
ENDSCAN

дурдом конечно, так дерево поднимать нельзя
...
Рейтинг: 0 / 0
TreeView и меню POPUP
    #34411113
psv73
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо! Буду делать выводы... ;-)
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / TreeView и меню POPUP
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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