Как в Гриде выделить определённую строку | |
---|---|
maximus Автор Сообщений: 34 Откуда: ukraine, sumy Дата регистрации: 10.07.2003 |
Здраствуйте.
Тут такая проблема: на форме есть грид, привязаный к таблице sim, и кнопки передвижения по груду (вверх, вниз), и нужно когда двигаемся по таблице, то активная строка должна выделятся и двигатся выдиление должно соотвественно перемищению курсора по таблице... Запутаный какоё-то вопрос получился ... Пожайлуста, помогите |
Re: Как в Гриде выделить определённую строку | |
---|---|
Hel!Riser Сообщений: 10452 Откуда: Нижний Новгород Дата регистрации: 11.03.2001 |
|
Re: Как в Гриде выделить определённую строку | |
---|---|
maximus Автор Сообщений: 34 Откуда: ukraine, sumy Дата регистрации: 10.07.2003 |
пасиба
|
ещё вопрос... | |
---|---|
maximus Автор Сообщений: 34 Откуда: ukraine, sumy Дата регистрации: 10.07.2003 |
код кнопки, которой я двигаюсь по даблице:
токо курсор в таблице почему-то не обновляется... что делать? |
Re: ещё вопрос... | |
---|---|
Hel!Riser Сообщений: 10452 Откуда: Нижний Новгород Дата регистрации: 11.03.2001 |
_screen.ActiveForm.Refresh() замени на thisform.grd.Refresh(), если кнопка на форме с гридом ессна и grd - название твоего грида
------------------ Осторожно - глисты! |
Re: ещё вопрос... | |
---|---|
AleksM Сообщений: 17881 Дата регистрации: 11.11.2003 |
И в skip, для полной уверенности, добавь in (ThisForm.Grd.RecordSource)
------------------ Лучше переесть, чем недоспать. Не спеши, а то успеешь. |
Re: ещё вопрос... | |
---|---|
maximus Автор Сообщений: 34 Откуда: ukraine, sumy Дата регистрации: 10.07.2003 |
не обновляется....
|
Re: ещё вопрос... | |
---|---|
AleksM Сообщений: 17881 Дата регистрации: 11.11.2003 |
Тогда еще и тут правь: if eof(ThisForm.Grd.RecordSource)
------------------ Лучше переесть, чем недоспать. Не спеши, а то успеешь. |
Re: ещё вопрос... | |
---|---|
maximus Автор Сообщений: 34 Откуда: ukraine, sumy Дата регистрации: 10.07.2003 |
хм... тута у меня сам грид не обновляется...
|
Re: ещё вопрос... | |
---|---|
maximus Автор Сообщений: 34 Откуда: ukraine, sumy Дата регистрации: 10.07.2003 |
refresh на грид вообще не действует что может быть?
|
Re: ещё вопрос... | |
---|---|
AleksM Сообщений: 17881 Дата регистрации: 11.11.2003 |
Вместо Grd.Refresh поставь Grd.SetFocus
------------------ Лучше переесть, чем недоспать. Не спеши, а то успеешь. |
Re: ещё вопрос... | |
---|---|
maximus Автор Сообщений: 34 Откуда: ukraine, sumy Дата регистрации: 10.07.2003 |
пасиба... получилось!
|
Re: ещё вопрос... | |
---|---|
AleksM Сообщений: 17881 Дата регистрации: 11.11.2003 |
И еще, хотя может и крамольное учение, в Botton.Click можно оставить две строчки
skip in (ThisForm.Grd.RecordSource) ThisForm.Grd.SetFocus ------------------ Лучше переесть, чем недоспать. Не спеши, а то успеешь. |
Re: ещё вопрос... | |
---|---|
Igor Korolyov Сообщений: 34580 Дата регистрации: 28.05.2002 |
Hi AleksM!
И в Error event ловить ошибку перемещения за EOF? IMHO проще это предупредить проверкой на EOF в коде перемещения. P.S. Хинт - таблица отображаемая в гриде может быть и пустой! ------------------ WBR, Igor |
Re: ещё вопрос... | |
---|---|
AleksM Сообщений: 17881 Дата регистрации: 11.11.2003 |
Согласен.
Что самое интересное, при пустом гриде SKIP -1 ошибки не вызывает, а SKIP 1 дает ошибку. ------------------ Лучше переесть, чем недоспать. Не спеши, а то успеешь. |
Re: ещё вопрос... | |
---|---|
Alex Roublev Сообщений: 3695 Откуда: Ярославль Дата регистрации: 28.09.2002 |
2 AleksM:
Цитата: Фокс "затихарился" и "по-умолчанию" не выдает ошибку. Если прибывить к тому толику воображения, то: При RecCount() = 0 может быть получается так: SKIP-1 = NO SKIP = RETURN = 0 = ЗАПИСИ С ТАКИМ ПОРЯДКОВЫМ НОМЕРОМ НЕ СУЩЕСТВУЕТ В ПРИНЦИПЕ, ПОЭТОМУ ВЫБРАСЫВАТЬ СООБЩЕНИЕ ОБ ОШИБКЕ ДАЖЕ НЕ БУДЕМ, а SKIP или SKIP 1 = ERROR = НЕТ ЗАПИСИ С ТАКИМ ПОРЯДКОВЫМ НОМЕРОМ = КАРАУЛ! ReccCount() ---> 0 - 1 = 0 (-1) Хе... |
Re: Как в Гриде выделить определённую строку | |
---|---|
Владимир Максимов Сообщений: 14100 Откуда: Москва Дата регистрации: 02.09.2000 |
Я хотел добавить это в FAQ, но для начала решил почитать журнал FoxTalk.
Русскоязычное издание FoxTalk январь 2004 №1 (79) (Для англоязычного оригинала на 8 месяцев раньше) The Kit Box: Ну вот и расскрасили Энди Крамек и Марсиа Акинз В этой статье Марсиа Акинз называют "Королевой объекта Grid" Так вот, она для замены проперти ThisForm.nRecno использует не событие Grid.AfterRowColChange(), а событие When всех вложенных объектов в столбцах Grid (!). Ну, отсюда тянется цепочка разных проблем, которые она героически преодолевает. Кто-нибудь может объяснить, почему? Т.е. чем использование Grid.Column1.Text1.When() - для каждого элемента предпочительнее Grid.AfterRowColChange() пир обновлении ThisForm.nRecno = Recno()? |
Как в Гриде... | |
---|---|
Alex Roublev Сообщений: 3695 Откуда: Ярославль Дата регистрации: 28.09.2002 |
2 Владимир Максимов:
Цитата: Когда-то натолкнулся вот на такую вещь: событие When отрабатывает в последовательности Grid.When, а потом Text.When. AfterRowColChange отрабатывает перед Text.When. В чем предпочтительность прописывать реакцию при перемещении по Grid в When объекта, а не в AfterRowColChange? Из When, как и из Valid, нельзя использовать метод установки фокуса на другой объект, а из AfterRowColChange можно. В чем же предпочтительность? -------------------------------------------------------------------------------------- Я вот как-то понаписал всякого в AfterRowColChange и получил "тормоза" при движении по строкам Grid'а: Объекты, соседствовавшие с Grid, при перемещении по строкам Grid следовало обновлять. Поэтому объекты поместил в контейнер, который и обновлял единой программной строчкой. Контейнер, в свою очередь, обновлял дочерние объекты "автоматом". Потом представлялось два варианта - поместить обновление контейнера с объектами в AfterRowColChange или в таймер на форме, который по заданному интервалу сам будет обновлять этот контейнер не зависимо от того, двигается ли пользователь по Grid. Первый вариант обновлял контейнер синхронно с движением по Grid и перемещение не имело плавности. Второй вариант - обновление шло немного не синхронно, но движение по строкам при этом было плавным и скорым, без задержки при обработке того, что находится в AfterRowColChange, и без очевидного "подпрыгивания" указателя строки. Отредактировано (30.03.05 19:54) ------------------ И волки сыты, и овцы целы, и пастуху - вечная память... |
Re: ещё вопрос... | |
---|---|
Равиль Сообщений: 6555 Откуда: Уфа Дата регистрации: 01.08.2003 |
Alex Roublev писал(а):[quote]2 AleksM:
[quote]Что самое интересное, при пустом гриде SKIP -1 ошибки не вызывает, а SKIP 1 дает ошибку.[/quote] [quote] Фокс "затихарился" и "по-умолчанию" не выдает ошибку. Если прибывить к тому толику воображения, то: При RecCount() = 0 может быть получается так: SKIP-1 = NO SKIP = RETURN = 0 = ЗАПИСИ С ТАКИМ ПОРЯДКОВЫМ НОМЕРОМ НЕ СУЩЕСТВУЕТ В ПРИНЦИПЕ, ПОЭТОМУ ВЫБРАСЫВАТЬ СООБЩЕНИЕ ОБ ОШИБКЕ ДАЖЕ НЕ БУДЕМ, а SKIP или SKIP 1 = ERROR = НЕТ ЗАПИСИ С ТАКИМ ПОРЯДКОВЫМ НОМЕРОМ = КАРАУЛ! ReccCount() ---> 0 - 1 = 0 (-1) Хе...[/quote] imho при отображении пустой таблицы в гриде указатель уже находится в EOF() и команда Skip ес-но приводит к сообщению об ошибке. а Skip -1 отрабатывает без ошибки потому что указатель переходит в BOF() (recno=0) - такая запись существует - это заголовок таблицы, но следующая Skip -1 уже поругается о том, что мы итак уже в BOF(). Отредактировано (30.03.05 20:45) ------------------ Тяжело согнать курсором муху с монитора ... |
Re: Как в Гриде выделить определённую строку | |
---|---|
Равиль Сообщений: 6555 Откуда: Уфа Дата регистрации: 01.08.2003 |
Владимир Максимов писал(а):
Цитата:Конечно не видя ее кода трудно судить, но возможная причина - ..AfterRowColChange() отрабатывает не всегда (например при входе в грид на текущую строку, а ..When() обязательно - возможно так она хотела исключить подобные ситуации - хотя согласен, что героизм при этом излишен - не такая уж это критичная операция. ------------------ Тяжело согнать курсором муху с монитора ... |
© 2000-2024 Fox Club  |