Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Проблема с ListView(Табличные списки)  (Прочитано 15317 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Boss
Гость
« : 19-10-2004 08:53 » 

С деревьями разобрался, теперь табличные списки покоя не дают.... проблема в том, что например я дерево создал:

'добавляем раздел "Программирование"
Set Programirovanie = .Add(, , "Programmirovanie", "Программирование", 1)
'выделяем узел "Программирование" синим цветов
Programirovanie.ForeColor = &HFF0000
Set Programirovanie = .Add("Programmirovanie", tvwChild, , "Visual Basic", 1)
Set Programirovanie = .Add("Programmirovanie", tvwChild, , "Delphi", 1)

теперь создаю содержимое этих разделов:

Private Sub tvwGategories_NodeClick(ByVal Node As MSComctlLib.Node)
Select Case Node
Case Is = "Visual Basic"
Visual_basik
Case Is = "Delphi"
Delphi
End Select
End Sub

вот тут то и вопрос:
насколько я знаю в табличном списке используется событие ItemClick аналогичное деревьям NodeClick.
т.е. мне надо чтобы пользователь например когда нажал на подузел Delphi в табличном списке вышли содержимое типа:
"Введение в Delphi", и при нажатии на ее загружается другая форма..

Как зделать незнаю......
Записан
HandKot
Молодой специалист

ru
Offline Offline

« Ответ #1 : 19-10-2004 09:27 » 

Что-то не совсем понял Жаль

Есть дерево
"Програмирование"
   - "Басик"
   - "Дельфи"

Что имеется под "табличный список"?

Можно к узлу "Дельфи" добавлять другие подузлы

"Програмирование"
   - "Басик"
      - "Введение"
      - "Типы данных"
   - "Дельфи"
      - "Введение"
      - "Типы данных"

и обрабатывать событие NodeClick, по которому открывать другую форму
получится что-то похожее на Help систему

PS: посмотрел.. отображается немного не так как я писал, считайте что нарисовано многоуровневое дерево
Записан

I Have Nine Lives You Have One Only
THINK!
Boss
Гость
« Ответ #2 : 19-10-2004 17:03 » 

Цитата: HandKot
Что-то не совсем понял Жаль

Есть дерево
"Програмирование"
   - "Басик"
   - "Дельфи"

Что имеется под "табличный список"?

Можно к узлу "Дельфи" добавлять другие подузлы

"Програмирование"
   - "Басик"
      - "Введение"
      - "Типы данных"
   - "Дельфи"
      - "Введение"
      - "Типы данных"

и обрабатывать событие NodeClick, по которому открывать другую форму
получится что-то похожее на Help систему

PS: посмотрел.. отображается немного не так как я писал, считайте что нарисовано многоуровневое дерево




----------------------------------
Вот смотри есть 2 элемента: TreeView(Дерево) и ListView(табличный список)

в дереве находиться главный узел:
Программирование
 и под узел
Delphi
получается:

Программирование
       Delphi

например когда я нажимаю на подузел DELPHI, у меня в табличном списке появляется его содержание типа:
1) Введение в Borland Delphi
2) Переменные

это у меня все работает...
А вот как сделать, чтобы когда нажимаешь например на Переменые открывается одна форма, а когда на  "Введение в Delphi" совсем другая....
Записан
HandKot
Молодой специалист

ru
Offline Offline

« Ответ #3 : 20-10-2004 05:31 » 

Boss,
если я правильно понял

у объекта ListView скорее всего есть метод Click получается тогда примерно так

Код:
private sub object_Click)index as integer:
    on error goto eh
    do case
      'выбор Дельфи введение
      case )index = 1: and )trvVeiw.SelectedItem.Key = "Delfi":
         load frmVvedenie
         frmVvedenie.show vbmodal
      'выбор Делбфи Переменные
      case )index = 2: and )trvVeiw.SelectedItem.Key: = "Delfi"
         load frmPeremennie
         frmPeremennie.show vbmodal
         ...
      case )index = 3: and )trvVeiw.SelectedItem.Key = "Delfi":
         ...
         ...
    end case
    exit sub
eh{
    обработчик ошибки
end sub


Токо зачем тебе на каждый пункт свою форму?
Просто замучаешься их все рисовать Улыбаюсь)
Может одну форму просто менять внутренности в зависимости от выбора?
Записан

I Have Nine Lives You Have One Only
THINK!
Boss
Гость
« Ответ #4 : 20-10-2004 13:02 » 

Неработает....
пишет "ошибка синтаксиса"
вот код

Private Sub lvwItems_DblClick(index as integer)
   On Error GoTo eh
    do case ' собственно это он и выделяет красным цветом Жаль
      'выбор Дельфи введение
      Case (index = 1) And (tvwGategories.SelectedItem.Key = "Delfi")
         Load frmVvedenie
         frmVvedenie.Show vbModal
      'выбор Делбфи Переменные
      Case (index = 2) And (tvwGategories.SelectedItem.Key) = "Delfi"
         Load frmPeremennie
         frmPeremennie.Show vbModal
    Case (index = 3) And (trvVeiw.SelectedItem.Key = "Delfi")
          end case
    Exit Sub
eh:
    end
End Sub
Записан
HandKot
Молодой специалист

ru
Offline Offline

« Ответ #5 : 20-10-2004 13:52 » 

Пардон, в Басике используется не "DO CASE ...ENDCASE" a "SELECT CASE...END SELECT"

RTFM Улыбаюсь)
Записан

I Have Nine Lives You Have One Only
THINK!
Boss
Гость
« Ответ #6 : 20-10-2004 15:56 » 

блин уже совсем близко.....
во так сделал, загружается только форма 1 а вторая нет..


Private Sub lvwItems_DblClick()
Dim index As Integer
On Error GoTo eh
Select Case index
'выбор Дельфи введение
Case (index = 1) And (tvwGategories.SelectedItem.Key = "Delphi")
Form1.Show
'выбор Делбфи Переменные
Case (index = 2) And (tvwGategories.SelectedItem.Key) = "Переменные в Delphi"
Form2.Show

End Select
Exit Sub
eh:
End
End Sub

Где может быть ошибка?
Записан
HandKot
Молодой специалист

ru
Offline Offline

« Ответ #7 : 21-10-2004 05:05 » 

Boss, попробуй продебагать. Может туда ты вообще не попадаешь и форма не грузится?
Записан

I Have Nine Lives You Have One Only
THINK!
Boss
Гость
« Ответ #8 : 21-10-2004 16:31 » 

HandKot, что такое продебагать?
Записан
HandKot
Молодой специалист

ru
Offline Offline

« Ответ #9 : 22-10-2004 05:26 » 

Boss, продебагать - запустить программу через дебагер (пошаговый режим)
клавиша F8


'выбор Делбфи Переменные
Case (index = 2) And (tvwGategories.SelectedItem.Key) = "Переменные в Delphi"

Выбор "Введение", "Переменный.."(значения из табличного списка) - это есть "index"
Выбор "Дельфи", "Паскаль" (значение ветки в дереве)- это "tvwGategories.SelectedItem.Key"


если у тебя дерево и при выборе ветки "Дельфи" (или какой-нибудь другой)открывается табличный список и тебе надо при выборе из табличного списка запускать окна, то условно должно выгляеть так (упрощено для понимания)

Код:
IF tvwGategories.SelectedItem.Key = "DELPHI" THEN
  SELECT CASE
    CASE index = 1      'выбрана первая строка из списка DELPHI
      frmD_1.Show
    CASE index = 2      'выбрана вторая строка из списка DELPHI
      frmD_2.Show
    CASE index = 3      'выбрана третья строка из списка DELPHI
      frmD_3.Show
    CASE index = 4      'выбрана четвертая строка из списка DELPHI
      frmD_4.Show
  ENDSELECT
ELSEIF tvwGategories.SelectedItem.Key = "PASCAL" THEN
  SELECT CASE
    CASE index = 1      'выбрана первая строка из списка PASCAL
      frmP_1.Show
    CASE index = 2      'выбрана вторая строка из списка PASCAL
      frmP_2.Show
    CASE index = 3      'выбрана третья строка из списка PASCAL
      frmP_3.Show
  ENDSELECT
ELSEIF
  ...
ELSE
  ...
ENDIF


так должно быть более понятно
Записан

I Have Nine Lives You Have One Only
THINK!
Boss
Гость
« Ответ #10 : 22-10-2004 14:35 » 

Dim a, b, index As Integer
If tvwGategories.SelectedItem.Key = "Введение в Microsoft Visual Basic" Then
  Select Case index
    Case index = 1      'выбрана первая строка из списка Visual Basik
     Form1.Show
   End Select
ElseIf tvwGategories.SelectedItem.Key = "Delphi" Then
  Select Case index
    Case index = 1      'выбрана первая строка из списка Delphi
      Form2.Show
   
  End Select

Else

End If


нет, что то не то....
давай по парядку:

Dim a, b, index As Integer ' тут я объявляю переменные
If tvwGategories.SelectedItem.Key = "Введение в Microsoft Visual Basic" Then ' тут как я понял идет условие только что такое SelectedItem и Key, далее = "Введение в VB"(тут отязательно писать название ПОДраздела) ?
  Select Case a ' тут незнаю?
    Case index = 1      'выбрана первая строка из списка Visual Basik ' 'это понял
     Form1.Show ' это тоже
   End Select
' дальше аналогично
ElseIf tvwGategories.SelectedItem.Key = "Delphi" Then
  Select Case b
    Case index = 1      'выбрана первая строка из списка Delphi
      Form2.Show
   
  End Select

все равно неработает. Жаль
Записан
HandKot
Молодой специалист

ru
Offline Offline

« Ответ #11 : 25-10-2004 05:22 » 

Цитата
что такое SelectedItem и Key

SelectedItem.Key - это выбранная в данный момент ветка дерева
Key - соответственно ключ ветки, который ты задал при формировании ветки
Если ты задавал ветку так
Код:
Set Programirovanie = .Add)"Programmirovanie", tvwChild, , "Visual Basic", 1: 

то в данном случае Key ветки равен "Visual Basic"
в результате получаем
Код:
If tvwGategories.SelectedItem.Key = "Visual Basic" Then 


Цитата
Select Case a ' тут незнаю?

Дальше идет проверка на значение твоего табличного списка

Код:
Select Case index 
Case index = 1 'выбрана первая строка из списка Visual Basik
Form1.Show
End Select

где index - есть параметр в процедуре Sub lvwItems_DblClick(index as integer)

Boss немного прояви инициативу и не бери мой код как правило, этот (код) просто алгоритм для какой-то цели (в данном случае твоей)
Если что-то не понятно попробуй посмотреть в мануале
Записан

I Have Nine Lives You Have One Only
THINK!
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines