Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Передать положение курсора Tabla через объект?
|
|||
|---|---|---|---|
|
#18+
Здорово всем! :) Пытаюсь редактировать значение в гриде. Для этого создаю диалог, и в нем редактирую, через DBEdit'ы. Загвоздка в том что курсор, в диалоге всегда прыгает на 1'ю запись. Пробовал сделать так. Создал новый модуль UnProg, в нем описал объект: type TMyRecSet=class(TObject) constructor Create; function GetCurRec:Integer; procedure SetCurRec(Value:Integer); property CurRec: Integer read GetCurRec write SetCurRec default 0; end; constructor TMyRecSet.Create; begin inherited Create; end; function TMyRecSet.GetCurRec:Integer; begin GetCurRec:=CurRec; end; procedure TMyRecSet.SetCurRec(Value:Integer); begin CurRec:=Value; end; Дальше делаю так. Подключаю модуль, описываю переменную объектного типа MyRecSet. В модуле формы с гридом пишу: procedure TFormSprApplicants.ToolButton2Click(Sender: TObject); begin MyRecSet:=TMyRecSet.Create; MyRecSet.CurRec:=DataMdlGlobus.ADOTblTenants.RecNo; BttmDlgApplicant.ShowModal; DataMdlGlobus.ADOTblTenants.Edit; end; Чтобы затем в модуле диалога сделать так: procedure TBttmDlgApplicant.FormActivate(Sender: TObject); begin DataMdlGlobus.ADOTblTenants.MoveBy(MyRecSet.CurRec); end; Т.е. питаюсь присвоить нужный номер записи. Выполнение проги останавливается сообщеним "Stacs overflow" (после некоторой паузы), с указанием на: GetCurRec:=CurRec; моего объекта. Ума не приложу, в чем дело, вроде свойство описано правильно. Может глюки с ADO? Подскажите люди добрые! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2003, 16:37 |
|
||
|
Передать положение курсора Tabla через объект?
|
|||
|---|---|---|---|
|
#18+
Вопрос первый, а что, напрямую в гриде редактировать нельзя. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2003, 16:51 |
|
||
|
Передать положение курсора Tabla через объект?
|
|||
|---|---|---|---|
|
#18+
И второй: при чем тут указатели на запись? Что значит курсор, в диалоге всегда прыгает на 1'ю запись ? Как это? Может написал не то- вот и прыгает :) Ты информации побольше - чего вообще нужно, как делаешь сейчас (без указателей) и т.п. ЗЫ Пытаюсь редактировать значение в гриде. Для этого создаю диалог, и в нем редактирую, через DBEdit'ы. Значения в гриде нельзя отредактировать - там их нет Они в датасете :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.02.2003, 16:55 |
|
||
|
Передать положение курсора Tabla через объект?
|
|||
|---|---|---|---|
|
#18+
Курсор прыгает на первую запись, например, когда происходт Refresh или таблица закрывается/открывается... А stack overflow после паузы - при бесконечной рекурсии, например, когда одна процедура вызывает вторую, а вторая - первую, без дополнительных проверок. В этом случае надо заглянуть в окно Call Stack (вызываемое комбинацией Ctrl-Alt-S сразу после ошибки) и посмотреть, что запускается и в каком порядке... Может быть у тебя на DataSet.OnDataChange стоит вызов Toolbutton2click, а на активации диалога - Refresh... Неявно, конечно, но чем чёрт не шутит? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2003, 08:22 |
|
||
|
Передать положение курсора Tabla через объект?
|
|||
|---|---|---|---|
|
#18+
To tygra >Значения в гриде нельзя отредактировать - там их нет Они в датасете :) Ты же прекрасно понял, что я хотел сказать. Ёрничать то за чем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2003, 08:54 |
|
||
|
Передать положение курсора Tabla через объект?
|
|||
|---|---|---|---|
|
#18+
To pkarklin. Конечно ты прав что значения в DataSete, но ведь отображаются они в Gride. Конечно можно редактировать и непосредственно DataSet через Grid (если уж на то пошло). Но разве не удобнее создать диалог, в котором будет отображаться редактируемая запись из Grida (тобишь из DataSeta). В DBEdit'ах этого диалога и будут видны все значения полей текущей записи, там их и редактировать. Суть в том, что если в Gride я хочу редактировать запись под номером 3, то после генерации диалога, в его DBEdit'ах отображаются значения полей записи номер 1. Как синхронизировать, чтобы при генерации диалога отображались поля 3 записи? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2003, 09:48 |
|
||
|
Передать положение курсора Tabla через объект?
|
|||
|---|---|---|---|
|
#18+
Если DBEdit-ы прицеплены к тому же DataSet-у что и DBGrid то значения в них всегда синхронизированно с курсором в DBGRid а если они имеют собственный DataSet то имеете-то что имеете. Если избежать двух DataSet-ов никак нельзя то после открытия редактируемого DataSet-необходимо его спозиционировать по значению ключевого поля текущей записи DBGrid-а методом TDataSet.Locate(Field,Value) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2003, 10:17 |
|
||
|
Передать положение курсора Tabla через объект?
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. Данный класс должен быть написан так Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2003, 10:26 |
|
||
|
Передать положение курсора Tabla через объект?
|
|||
|---|---|---|---|
|
#18+
2 pkarklin Так я не тебе же :) 2 RY Так покажи код, как ты вызываешь диалог. Если не делать ненужных вещей, запись остается на том же месте. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2003, 10:30 |
|
||
|
Передать положение курсора Tabla через объект?
|
|||
|---|---|---|---|
|
#18+
>Конечно можно редактировать и непосредственно DataSet через Grid (если уж на то пошло). Не моно, а нуно. А так ты себе лишний геморой второй день имеешь. Что в гриде нельзя сделать, чего ты сделал через отдельные dbaware контролы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2003, 10:50 |
|
||
|
Передать положение курсора Tabla через объект?
|
|||
|---|---|---|---|
|
#18+
Я вот практически не использую редактирование через грид - неудобно это. Открываешь форму - все сразу видишь. И все справочники нормально разместить можно, и поля, а так, в гриде - пальцы поломаешь. А если форма еще и немодальная - вообще прекрасно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2003, 11:05 |
|
||
|
Передать положение курсора Tabla через объект?
|
|||
|---|---|---|---|
|
#18+
>Я вот практически не использую редактирование через грид - неудобно это Конечно, не все удобно редактировать через грид. >И все справочники нормально разместить можно, и поля, Что значит разместить справочники нормально. Что вообще в твоем понятии справочник. Если ты про дополнительную форму выбора из справочника, то на что тебе кнопка с тремя точками. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2003, 11:18 |
|
||
|
Передать положение курсора Tabla через объект?
|
|||
|---|---|---|---|
|
#18+
Справочники - DBLookupConboBoxEh - где и как нужно, так и поставил. Да и все компоненты так. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2003, 11:33 |
|
||
|
Передать положение курсора Tabla через объект?
|
|||
|---|---|---|---|
|
#18+
Я под справочником представляю дополнительную форму выбора с вожможность поиска по образцу по нескольким критериям, например, выбор из справочника продукции, товаров и услуг, содержащего более 70000 позиций. В DBLookupConboBoxEh его не запихнешь. не гнать же все 70000 записей на клиента. Но все равно, функциональность DBLookupConboBoxEh также реализуема в ячейки грида, если этот грид из EhLib. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2003, 11:41 |
|
||
|
Передать положение курсора Tabla через объект?
|
|||
|---|---|---|---|
|
#18+
To pkarklin >Так покажи код, как ты вызываешь диалог. Если не делать ненужных вещей, запись остается на том же месте. Код есть выше, но повторю еще раз: procedure TFormSprApplicants.ToolButton2Click(Sender: TObject); begin MyRecSet:=TMyRecSet.Create; MyRecSet.CurRec:=DataMdlGlobus.ADOTblTenants.RecNo; BttmDlgApplicant.ShowModal; DataMdlGlobus.ADOTblTenants.Edit; end; В диалоге: procedure TBttmDlgApplicant.FormActivate(Sender: TObject); begin DataMdlGlobus.ADOTblTenants.MoveBy(MyRecSet.CurRec); end; Я согласен с тем что редактировать через грид менее удобно чем через диалог. А вот Grid и DBEdit'ы в диалоге, настроены на разные DataSours'ы. Для Grid'а это ADOStoredProc, а для DBEdit'ов это непосредственно Table. Хотя Процедура выполняет выботку по этой таблице. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2003, 12:14 |
|
||
|
Передать положение курсора Tabla через объект?
|
|||
|---|---|---|---|
|
#18+
А вот Grid и DBEdit'ы в диалоге, настроены на разные DataSours'ы. Для Grid'а это ADOStoredProc, а для DBEdit'ов это непосредственно Table. Хотя Процедура выполняет выботку по этой таблице. О ужас - ты зачем Table то используешь? А если 10000 записей, так все время и такаешь их? Ты уж лучше сохраняй через хранимые процедуры. Да и криво как-то сделано. А код то покажи без указателей - нафиг они не нужны. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2003, 12:19 |
|
||
|
Передать положение курсора Tabla через объект?
|
|||
|---|---|---|---|
|
#18+
To RY To pkarklin >Так покажи код, как ты вызываешь диалог. Если не делать ненужных вещей, запись остается на том же месте. Код есть выше, но повторю еще раз: А я и не просил тебя код показывать. Это был tygrа. И вообще я не вижу, где здесь нужно писать код, для выполнения элементарных задач редактирования набора. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2003, 13:46 |
|
||
|
Передать положение курсора Tabla через объект?
|
|||
|---|---|---|---|
|
#18+
To tygra Table пользую для добавления записей и редактирования записей, в Accesse это нельзя сделать с помощью процедур. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2003, 15:19 |
|
||
|
Передать положение курсора Tabla через объект?
|
|||
|---|---|---|---|
|
#18+
To LexusR Спасибо за совет, исправил свойство как ты сказал, на стэк ругаться перестал, но все равно выскакивает ошибка "access violation", и останавливается на том же самом месте. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2003, 15:23 |
|
||
|
Передать положение курсора Tabla через объект?
|
|||
|---|---|---|---|
|
#18+
Ну дык можно вызвать update? И не надо никаких указателей, что за фигня, блин. Просто же: передаешь в диалог ID (или какой там ключ уникальный у тебя) нужной записи и либо в TTable говоришь Locate('ID', Value, []) - вот она, твоя запись, либо select * from Table where ID = IDValue. - тоже вот она. Но одна. Тяжело руками поставить нужную запись текущей? Лучше огороды горолдить чтоли? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2003, 15:39 |
|
||
|
Передать положение курсора Tabla через объект?
|
|||
|---|---|---|---|
|
#18+
Насчет целесообразности создания объекта для хранения только одной интовой переменной согласен с tygr-ой - это абсолютно бессмысленно а чисто теоретически : (тут я лажанулся - переписал у тебя :) ) Код: plaintext 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.02.2003, 06:35 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=32108443&tid=2119089]: |
0ms |
get settings: |
6ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
56ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
40ms |
get tp. blocked users: |
1ms |
| others: | 245ms |
| total: | 371ms |

| 0 / 0 |
