:: Архив конференции по VFP до 2005 года
Grid Insert and Delphi Style
serEJa
Автор

Сообщений: 9
Дата регистрации: 31.01.2005
1) Проблема такая пользователи задолбали с grid
Надо чтобы при первом нажатии на ячейку выделялось все содержимое,при след нажатии становилось на позицию, итд
Короче что-то типа стиля grid Delphi

Нашел решение такое, все замечательно
NODEFAULT
TextBox::GotFocus
THIS.SelStart = 0
THIS.SelLength = LEN(ALLTRIM(THIS.Value))

НО у меня таблица динамическая и событие GotFocus я прописываю BINDEVENT
а вот как-там вызвать род. метод TextBox::GotFocus не знаю обработчик то user-метод самой формы
PLEASE HELP!

2)И еще при INSERT в курсор который отображается в grid происходит такой глюк
если записей в grid нет то первый раз все получается замечательно а во второй и ... скроллбар дергается а запись
не появляется, заранее оговорюсь что использую SET FILTER на курсоре

я по форуму пошарил но что-то все не то...
Ratings: 0 negative/0 positive
Re: Grid Insert and Delphi Style
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
Hi serEJa!

1) Не надо тебе BINDEVENTS - сделай класс текстбокса, и просто каждый раз при перестройке грида проводи замену "штатных" объектов (обычно называются Text1) на объекты производные от твоего класса - а там уже (в классе) и прописывай свой хитрый код. Я не уверен что из делегата можно хоть как-то вызвать код обработчика родительского класса объекта-источника. Тем более если это вообще объект базового класса!

2) Чтобы SET FILTER действовал, нужно передёрнуть указатель записи. И вообще ты уверен что вновь добавленная запись попадает под условия фильтра?

P.S. SET FILTER с гридом это зло - если есть возможность, то лучше использовать другие методы (Local View например).




------------------
WBR, Igor
Ratings: 0 negative/0 positive
Re: Grid Insert and Delphi Style
serEJa
Автор

Сообщений: 9
Дата регистрации: 31.01.2005
по 2 вопросу SET FILTER там так получается когда первый раз insert то только скроолбар дергается
а когда insert вторую запись то в гриде вываливается сразу две записи (первого и второго инсерта)
Ratings: 0 negative/0 positive
Re: Grid Insert and Delphi Style
piva

Сообщений: 18655
Откуда: Курган
Дата регистрации: 24.03.2004
Попробуй сделай LockScreen=.T. для формы перед вставкой записи - тогда ScrollBar вроде как не будет дергаться




------------------
Часто бывает так, что есть над чем задуматься, а нечем.
Ratings: 0 negative/0 positive
Re: Grid Insert and Delphi Style
serEJa
Автор

Сообщений: 9
Дата регистрации: 31.01.2005
Проблема не в том что скроллбар дергается, а в том что после insert в гриде запись не показывается
а после вставки второй записи показывается первая и вторая

Извините за косноязычие
Ratings: 0 negative/0 positive
Re: Grid Insert and Delphi Style
piva

Сообщений: 18655
Откуда: Курган
Дата регистрации: 24.03.2004
И Griid.Refresh() не помогает ?




------------------
Часто бывает так, что есть над чем задуматься, а нечем.
Ratings: 0 negative/0 positive
Re: Grid Insert and Delphi Style
serEJa
Автор

Сообщений: 9
Дата регистрации: 31.01.2005
Grid.Refresh Grid.SetFocus,Grid.DoScrool(2)
все бестолку
Ratings: 0 negative/0 positive
Re: Grid Insert and Delphi Style
piva

Сообщений: 18655
Откуда: Курган
Дата регистрации: 24.03.2004
и
Select Табла
Go Recno()

Может у тебя вьюха ? тогла еще requery




------------------
Часто бывает так, что есть над чем задуматься, а нечем.
Ratings: 0 negative/0 positive
Re: Grid Insert and Delphi Style
serEJa
Автор

Сообщений: 9
Дата регистрации: 31.01.2005
Ничего не получается



Отредактировано (18.03.05 12:56)


------------------
Ratings: 0 negative/0 positive
Re: Grid Insert and Delphi Style
Igor Korolyov

Сообщений: 34580
Дата регистрации: 28.05.2002
Hi serEJa!

Ещё раз - для того чтобы сработал фильтр нужно передёрнуть указатель записи (если меняется условие, или меняются поля участвующие в условии). Для того чтобы обновился грид - нужно сделать ему Grid.Refresh()
PUBLIC o1
o1 = CREATEOBJECT("frm1")
o1.Show()
DEFINE CLASS frm1 AS Form
Height = 360
Width = 300
ADD OBJECT grd AS Grid WITH ;
RecordSource = "csr1", Height = 300, Width = 300
ADD OBJECT cmdAdd AS CommandButton WITH ;
Top = 320, Width = 100, Left = 100, Height = 25, ;
Caption = "Добавить запись"
PROCEDURE Load
CREATE CURSOR csr1 (nID I, cName C(10) DEFAULT "новая")
INSERT INTO csr1 (nID, cName) VALUES ;
(11, "11 11")
INSERT INTO csr1 (nID, cName) VALUES ;
(12, "12 12")
SET FILTER TO nID < 10
ENDPROC
PROCEDURE cmdAdd.Click
APPEND BLANK IN csr1
ThisForm.grd.Refresh()
ENDPROC
ENDDEFINE
И что это тоже не работает?




------------------
WBR, Igor
Ratings: 0 negative/0 positive


Извините, но у вас нет прав для того, чтобы оставлять сообщения в этом форуме.

On-line: 5 (Гостей: 5)

© 2000-2024 Fox Club 
Яндекс.Метрика