![]() |
|
Модераторы: Snowy, MetalFan, bems, Poseidon |
![]()
|
|
| Kbl4AH |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 741 Регистрация: 1.4.2008 Где: Вятка Репутация: 4 Всего: 15 |
Здравствуйте. У меня такой вопрос.
У меня на форме есть дерево и меню. После нажатия на кнопочку я снимаю выделение с дерева: TreeView1.Selected.Selected:= False;. Но мне нужно, чтобы действия при нажатии кнопочки выполнялись и при показе формы (Show). Если в процедуру Form.Show я вставляю Button.Click, то у меня ошибка (я так понимаю, из-за снятия выделения, потому что форма еще не показалась и значит ничего не выделено). Как мне в процедуре Button.Click написать условие: если форма полностью отобразилась, то TreeView1.Selected.Selected:= False;? |
|||
|
||||
| morpheyushka |
|
|||
![]() Зеленый человек ![]() ![]() Профиль Группа: Участник Сообщений: 563 Регистрация: 26.2.2008 Где: Киев Репутация: 2 Всего: 8 |
|
|||
|
||||
| Kbl4AH |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 741 Регистрация: 1.4.2008 Где: Вятка Репутация: 4 Всего: 15 |
Походу, я суть ошибочных ситуаций плохо привожу((( Мне нужно, чтобы работало ЭТО:
Это сообщение отредактировал(а) Kbl4AH - 30.10.2008, 14:06 |
||||
|
|||||
| morpheyushka |
|
|||
![]() Зеленый человек ![]() ![]() Профиль Группа: Участник Сообщений: 563 Регистрация: 26.2.2008 Где: Киев Репутация: 2 Всего: 8 |
а ты уверен, что на момент отображения формы в TreeView1 есть выделенные элементы?
|
|||
|
||||
| Kbl4AH |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 741 Регистрация: 1.4.2008 Где: Вятка Репутация: 4 Всего: 15 |
Конечно, ведь если бы выделения не было, то я не стал бы его снимать=) Вобщем, есть. |
|||
|
||||
| THandle |
|
|||
![]() Хранитель Клуба Награды: 1 Профиль Группа: Админ Сообщений: 3639 Регистрация: 31.7.2007 Где: Moscow, Dubai Репутация: 50 Всего: 372 |
|
|||
|
||||
| pseud |
|
||||
![]() Экспёрт Тыдыщ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1175 Регистрация: 18.5.2007 Где: Минск, Беларусь Репутация: 10 Всего: 40 |
так:
а еще лучше так:
-------------------- Испытание чужого терпения можно считать успешным, если оно лопнуло... |
||||
|
|||||
| Kbl4AH |
|
||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 741 Регистрация: 1.4.2008 Где: Вятка Репутация: 4 Всего: 15 |
С ним я сам пытался - ошибка Добавлено через 33 секунды
Все равно ошибка((( |
||||||||
|
|||||||||
| morpheyushka |
|
|||
![]() Зеленый человек ![]() ![]() Профиль Группа: Участник Сообщений: 563 Регистрация: 26.2.2008 Где: Киев Репутация: 2 Всего: 8 |
А что за ошибка?
|
|||
|
||||
| aktuba |
|
||||||||
![]() Смышленный ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1915 Регистрация: 24.4.2006 Где: Планета Земля Репутация: 7 Всего: 38 |
А чем это отличается от
-------------------- ![]() |
||||||||
|
|||||||||
| pseud |
|
|||
![]() Экспёрт Тыдыщ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1175 Регистрация: 18.5.2007 Где: Минск, Беларусь Репутация: 10 Всего: 40 |
THandle, Хранитель Клуба потерял аватар.
Добавлено через 2 минуты и 58 секунд смотри исходники, чем-то вроде отличается а TreeView1.CanFocus так и ваще всем отличается Добавлено через 3 минуты и 57 секунд morpheyushka, +1 таки да. ошибка-то в чем? где? когда? -------------------- Испытание чужого терпения можно считать успешным, если оно лопнуло... |
|||
|
||||
| Kbl4AH |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 741 Регистрация: 1.4.2008 Где: Вятка Репутация: 4 Всего: 15 |
Вобщем, ошибка в выделенной строке, причем без разницы какое условие...
Присоединённый файл ( Кол-во скачиваний: 38 )
Error.JPG 52,49 Kb |
|||
|
||||
| morpheyushka |
|
|||
![]() Зеленый человек ![]() ![]() Профиль Группа: Участник Сообщений: 563 Регистрация: 26.2.2008 Где: Киев Репутация: 2 Всего: 8 |
||||
|
||||
| Kbl4AH |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 741 Регистрация: 1.4.2008 Где: Вятка Репутация: 4 Всего: 15 |
Без юмора жить, а тем более работать, - НЕЛЬЗЯ... Я юморю аббревиатурами в названиях прог, благо пользователи в транслите плохо рубят))) PaPoPKe - Права Пользователей Программы "Кадры" PTaSHka - Print of Travelling SHeets PuLPa - Перечень Льготных Профессий WaHlAk - WareHouse Account KoT - Копирование Таблиц и т.д. Вот так я проги называю Добавлено через 52 секунды
Убираю условие, запускаю программу - выделение стоит на первом элементе дерева |
||||
|
|||||
| morpheyushka |
|
|||
![]() Зеленый человек ![]() ![]() Профиль Группа: Участник Сообщений: 563 Регистрация: 26.2.2008 Где: Киев Репутация: 2 Всего: 8 |
Есть у меня подозрение, что это не совсем то выделение...сделай так - кинь на форму с деревом кнопочку, и по клику выдай сообщение с текстом выделенного нода. То есть появилась форма - там якобы выделен первый элемент, и ты сразу же на кнопочку жмешь...а потом тут отпишешь какую ошибку тебе выдало |
|||
|
||||
| Kbl4AH |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 741 Регистрация: 1.4.2008 Где: Вятка Репутация: 4 Всего: 15 |
вбил в кнопочку
форма появилась - сразу нажал на кнопочку - заголовок формы стал '1-й элемент списка' Это при заккоментированном Button.Click в процедуре Form.Show... А если Button.Click в процедуре Form.Show оставить, то прежняя ошибка... Я так понимаю, что это из-за того, что форма еще не отобразилась, а я уже лезу к выделенному элементу... Наверное, нужно использовать другое событие (когда форма полностью видна вместе с выделениями дерева)... Я не знаю какое Это сообщение отредактировал(а) Kbl4AH - 30.10.2008, 15:25 |
||||
|
|||||
| pseud |
|
||||
![]() Экспёрт Тыдыщ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1175 Регистрация: 18.5.2007 Где: Минск, Беларусь Репутация: 10 Всего: 40 |
все элементрано, у тебя
вот ты и имеешь AV при обращении к свойству nil'а
Добавлено через 1 минуту и 32 секунды делай раз: делаешь у своего cxTreeView1.TabOrder = 0 (ну и всем его Parent'ам тоже). -------------------- Испытание чужого терпения можно считать успешным, если оно лопнуло... |
||||
|
|||||
| Kbl4AH |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 741 Регистрация: 1.4.2008 Где: Вятка Репутация: 4 Всего: 15 |
Зачем это? Все оказалось проще... Я заменил процедуру FormShow на FormPaint и ошибки не стало Это сообщение отредактировал(а) Kbl4AH - 30.10.2008, 15:32 |
|||
|
||||
| morpheyushka |
|
|||
![]() Зеленый человек ![]() ![]() Профиль Группа: Участник Сообщений: 563 Регистрация: 26.2.2008 Где: Киев Репутация: 2 Всего: 8 |
а ты знаешь что это будет происходить каждый раз, когда форма перерисовывается...а теперь представь ситуацию - пользователь выбрал нужный узел и начинает с ним работать - например менять какие то данные, а тут ему по аське анекдот прислали...понятно, что анекдот - это привилегированное событие - и он откроет окно сообщений, прочитает, а потом обратно в программу, а тут твой FormPaint опять отработает (если было перекрытие форм)...и выделенный элемент пропадет!!!
если тебе это не грозит, то можешь оставить как сделал, если грозит то сделай так:
|
|||
|
||||
| Kbl4AH |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 741 Регистрация: 1.4.2008 Где: Вятка Репутация: 4 Всего: 15 |
morpheyushka, пасиб, давно бы так, твое решение лучше=)
Тока все равно как-то немного не так... Не нравится то, что зачем фокус принудительно ставить, если он все равно на дереве окажется??? Это сообщение отредактировал(а) Kbl4AH - 30.10.2008, 15:46 |
|||
|
||||
| morpheyushka |
|
|||
![]() Зеленый человек ![]() ![]() Профиль Группа: Участник Сообщений: 563 Регистрация: 26.2.2008 Где: Киев Репутация: 2 Всего: 8 |
Ну извини, что мозги попудрили немного
|
|||
|
||||
| pseud |
|
|||
![]() Экспёрт Тыдыщ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1175 Регистрация: 18.5.2007 Где: Минск, Беларусь Репутация: 10 Всего: 40 |
morpheyushka,
Kbl4AH, лучше все таки проверить TreeView1.Selected т.к. ведь в дереве может быть пусто. и тогда дальнейшее обращение к свойствам вызовет AV рекомендую так:
-------------------- Испытание чужого терпения можно считать успешным, если оно лопнуло... |
|||
|
||||
| Kbl4AH |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 741 Регистрация: 1.4.2008 Где: Вятка Репутация: 4 Всего: 15 |
Нет, все не так...
Сто пудово всегда выделяется первый элемент дерева (хотя, на момент FormShow - TreeView1.Selected в самом деле = nil)... Просто выделение происходит после того, как произошло событие FormShow... Какое событие следует за FormShow? Это сообщение отредактировал(а) Kbl4AH - 30.10.2008, 15:53 |
|||
|
||||
| morpheyushka |
|
|||
![]() Зеленый человек ![]() ![]() Профиль Группа: Участник Сообщений: 563 Регистрация: 26.2.2008 Где: Киев Репутация: 2 Всего: 8 |
|
|||
|
||||
| pseud |
|
|||
![]() Экспёрт Тыдыщ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1175 Регистрация: 18.5.2007 Где: Минск, Беларусь Репутация: 10 Всего: 40 |
вот ты нам и расскажи так в каком же событии происходит обновление инфы в дереве? -------------------- Испытание чужого терпения можно считать успешным, если оно лопнуло... |
|||
|
||||
| Kbl4AH |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 741 Регистрация: 1.4.2008 Где: Вятка Репутация: 4 Всего: 15 |
morpheyushka, на момент OnActivate элемент дерева тоже еще не успевает выделиться...
А в момент OnPaint ты говоришь, что не целесообразно... То есть, все-таки лучше остановиться на принудительной остановке фокуса или как? |
|||
|
||||
| pseud |
|
|||
![]() Экспёрт Тыдыщ ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1175 Регистрация: 18.5.2007 Где: Минск, Беларусь Репутация: 10 Всего: 40 |
или это не ты ее там обновляешь?
-------------------- Испытание чужого терпения можно считать успешным, если оно лопнуло... |
|||
|
||||
| Kbl4AH |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 741 Регистрация: 1.4.2008 Где: Вятка Репутация: 4 Всего: 15 |
Я пока еще такого сложного не знаю |
|||
|
||||
| morpheyushka |
|
|||
![]() Зеленый человек ![]() ![]() Профиль Группа: Участник Сообщений: 563 Регистрация: 26.2.2008 Где: Киев Репутация: 2 Всего: 8 |
FormActivate я выше написал все, что касается формы) Добавлено через 1 минуту и 58 секунд Если там 100% будут данные, то можно остановиться на моем примере, если могут и не быть, то во избежание AV нужно сделать еще проверку
|
|||
|
||||
![]()
|
| Правила форума "Delphi: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |