Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Раскрытие узла дерева, TreeView 
:(
    Опции темы
ura5
Дата 26.6.2007, 16:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 133
Регистрация: 12.4.2007

Репутация: нет
Всего: нет



Есть меню -дерево :

+ Цех1
   - Участок1
   - Бухгалтерия
+ Цех2
   - Ремонты
   - Мастерские

Проблема: Кликаю я по Цех1,он расрывается,выбираю Участок1- все правильно.
Кликаю по крестику,где находится Цех2 и (неверно) высвечивается данные из предыдущего
Участок1.
Я чищу и  закрываю перед этим sql-запросы.Делаю,как положено.
А,если кликаю по Цех2-все нормально.

У МЕНЯ НЕВЕРНО ИДЕТ ВЫБОРКА ПРИ НАЖАТИИ ТОЛЬКО НА КРЕСТИК,который стоит перед названием 
NEW ITEM.
пОЧЕМУ?
   



PM MAIL   Вверх
_hunter
Дата 26.6.2007, 17:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 24
Всего: 98



дык. ставь брейк-поинт в обработчике клика и смотри почему ты передаеш неправильный индекс...

Добавлено через 49 секунд
P.S.
выборка идет неверно потому как делаеш ее по неверным данным...


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
ura5
Дата 27.6.2007, 08:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 133
Регистрация: 12.4.2007

Репутация: нет
Всего: нет



Благодарю за ответ,но ,к сожалению,ничего не понял.Вы бы конкретнее объяснили.
PM MAIL   Вверх
_hunter
Дата 27.6.2007, 10:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 8564
Регистрация: 24.6.2003
Где: Europe::Ukraine:: Kiev

Репутация: 24
Всего: 98



объясняю конкретно: где-то в твоей программе что-то происходит неправильно. это дает неверный результат. так понятно? или еще как-то намекнуть что твой вопрос без кода не имеет особого смысла?..


--------------------
Tempora mutantur, et nos mutamur in illis...
PM ICQ   Вверх
Goganchic
Дата 27.6.2007, 10:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 678
Регистрация: 18.6.2004

Репутация: нет
Всего: 5



ura5, тема бессмыслена без кода, т.к. _hunter тебе скажет что не так, по его мнению, а на практике окажется что ты где-то слажал, причем совершенно в другом месте
PM Jabber   Вверх
dumb
Дата 27.6.2007, 13:23 (ссылка) |   (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


sceloglauxalbifacies
****


Профиль
Группа: Экс. модератор
Сообщений: 2929
Регистрация: 16.6.2006

Репутация: 32
Всего: 158



я так понимаю, проблема в том, что при нажатии на [+] происходит OnClick(в обработчике которого считывается инфа согласно выделенному элементу), но выделение остается прежним.

ura5, попробуй использовать OnChange вместо OnClick.
PM MAIL   Вверх
ura5
Дата 27.6.2007, 13:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 133
Регистрация: 12.4.2007

Репутация: нет
Всего: нет



Проблема решается и вопрос мой отпадает,если віборку из меню-дерева поместить в собітие 
OnChange(),а у меня обработка была в OnClick().Теперь по крестику ,если щелкнуть,то
все раскрывается ,как надо.
Но теперь второй по этому поводу вопрос:
При переходе на обработку в OnChange(),информация при выборе из тех пунктов,которые срабатывают в этой форме-все прекрасно и правильно.А вот переход на другую форму (другой пункт меню) и новое окно не происходит.
Вызываю другую форму
Код
    Pereg->Show();


Добавлено через 3 минуты и 36 секунд
Вернее, переход на 2-.форму в новом окне осуществляется,но сама форма остается на заднем плане,ее не видно.Только,если уменьшить 1-форму,тогда можно увидеть 2-ю.
??? 
PM MAIL   Вверх
ura5
Дата 27.6.2007, 15:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 133
Регистрация: 12.4.2007

Репутация: нет
Всего: нет



Все поместить в событие  OnChange()  и переход на новую форму (в новом окне) записать ввиде 
Код
Pereg->ShowModal();


Все работает.
PM MAIL   Вверх
dumb
Дата 27.6.2007, 15:18 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


sceloglauxalbifacies
****


Профиль
Группа: Экс. модератор
Сообщений: 2929
Регистрация: 16.6.2006

Репутация: 32
Всего: 158



вообще, при использовании TreeView в качестве управляющего элемента интерфейса, я бы не советовал открывать какие-то формы при кликах на tree item'ах - это очень нестандартно и, мало того, очень неудобно в использовании. все изменения должны быть в пределах одной формы - переключение закладок, скрытие/показ элементов, итд.
и не забывай про то, что некоторые люди(сумасшедшие smile) используют клавиатуру.

набросал небольшую "заготовку":
Код

//---------------------------------------------------------------------------
void __fastcall TForm1::TreeView1MouseDown(TObject *Sender,
      TMouseButton Button, TShiftState Shift, int X, int Y)
{
  if (Shift.Contains(ssDouble)) return; // чтоб на двойных кликах два раза не отрабатывать
  THitTests MyHitTest = TreeView1->GetHitTestInfoAt(X, Y);
  if (MyHitTest.Contains(htOnItem)) // см. справку по GetHitTestInfoAt
  {
    DoSelected();
  }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::TreeView1KeyDown(TObject *Sender, WORD &Key,
      TShiftState Shift)
{
  if (Key == VK_RETURN || Key == VK_SPACE)
  {
    DoSelected();
  }
}
//---------------------------------------------------------------------------
// в Unit1.h в раздел public добавить void __fastcall DoSelected();
void __fastcall TForm1::DoSelected()
{
  if (!TreeView1->Selected) return;
  //                         12345678901234567890
  AnsiString ItemCaptions = "first#second#23#";
  switch (ItemCaptions.Pos(TreeView1->Selected->Text))
  {
    case 1: // "first"
      ShowMessage("'first' selected");
      break;
    case 7: // "second"
      Form2->Show();
      break;
    case 14: // "23"
      ShowMessage("'23' selected");
      break;
    //...
  }
}
//---------------------------------------------------------------------------


Цитата(ura5 @  27.6.2007,  16:04 Найти цитируемый пост)
Pereg->ShowModal(); Все работает.

эк ты резво курс меняешь - все-таки между ShowModal() и Show() довольно ощутимая разница...

PM MAIL   Вверх
ura5
Дата 2.7.2007, 14:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 133
Регистрация: 12.4.2007

Репутация: нет
Всего: нет



dumb!
Спасибо!Работает быстрее,чем ,если делать обработку пунктов меню в событии OnChange();
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0558 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.