Форум: "Базы";
Текущий архив: 2005.11.27;
Скачать: [xml.tar.bz2];
ВнизRowSelection in TCustomDBGrid Найти похожие ветки
← →
maVladimir (2005-10-16 20:23) [0]Уважаемые кодеры, появилась небольшая проблема, но не знаю, как ее решить, подскажите, пожалуйста:
Как заставить TCustomDBGrid выбрать необходимую строку (dgRowSelect in Options = true)? Абсолютно ясно, что это можно сделать, обращаясь к Selection, но тогда не произойдет изменений с Bookmarklist"ом Grid"а, а необходимо именно это.
Заранее благодарен, Владимир.
← →
Германн © (2005-10-16 21:09) [1]А присвоить нужное значение свойству Row?
← →
Германн © (2005-10-16 21:11) [2]Пардон. Его там нет :(
← →
Плохиш © (2005-10-16 23:09) [3]
> Как заставить TCustomDBGrid выбрать необходимую строку (dgRowSelect
> in Options = true)? Абсолютно ясно, что это можно сделать,
> обращаясь к Selection, но тогда не произойдет изменений
> с Bookmarklist"ом Grid"а
Ничего не понял :-( Как можно ответить на вопрос, в котором упоминается TCustomDBGrid, не имеющий свойств/методов RowSelection, Selection и Bookmarklist?
← →
maVladimir (2005-10-17 01:58) [4]> Плохиш
Ну тогда так и надо отвечать: мол, я не знаю, о чем ты пишешь, и вообще, зачем я сюда залез?
> Для остальных
RowSelection здесь вообще ни при чем, это для названия темы просто.
Selection наследуется от TCustomGrid.
А Bookmarklist - это read-only поле SelectedFields класса TCustomDBGrid.
В общем, тем, кто что-то в этом понимает, должно быть понятно все, о чем я говорю.
А вопрос такой: как можно выделить одну (или несколько подряд идущих) строк(у) таким образом, чтобы они были выделены и в Selection, и в SelectedFields?
Владимир.
← →
Zacho © (2005-10-17 02:16) [5]maVladimir (17.10.05 1:58) [4]
Я в этом ничё не понимаю, но почему бы тебе не посмотреть исходники TDBGridEh из библиотеки EhLib ?
← →
maVladimir (2005-10-17 14:43) [6]> Zacho
Спасибо за совет, но это решение не годится по нескольким причинам:
1) Не хочу использовать никакую "левую" библиотеку.
2) Теперь это уже вопрос принципа.
Неужели никто не знает другого решения?
С уважением, Владимир.
← →
alex_*** (2005-10-17 14:49) [7]а курсор в наборе установить куда надо не проще?
← →
Johnmen © (2005-10-17 15:00) [8]
> maVladimir (17.10.05 01:58) [4]
> > Для остальных
> RowSelection здесь вообще ни при чем, это для названия темы
> просто.
> Selection наследуется от TCustomGrid.
> А Bookmarklist - это read-only поле SelectedFields класса
> TCustomDBGrid.
> В общем, тем, кто что-то в этом понимает, должно быть понятно
> все, о чем я говорю.
> А вопрос такой: как можно выделить одну (или несколько подряд
> идущих) строк(у) таким образом, чтобы они были выделены
> и в Selection, и в SelectedFields?
Я тоже ничего не понял... Особенно выделенное :)
М.б. тебе надо TDBGrid.SelectedRows.CurrentRowSelected ?
← →
Zacho © (2005-10-17 15:00) [9]maVladimir (17.10.05 14:43) [6]
1) Не хочу использовать никакую "левую" библиотеку.
А ты не используй, а просто посмотри как там сделано.
← →
msguns © (2005-10-17 15:48) [10]>Как заставить TCustomDBGrid выбрать необходимую строку (dgRowSelect in Options = true)? Абсолютно ясно, что это можно сделать, обращаясь к Selection, но тогда не произойдет изменений с Bookmarklist"ом Grid"а, а необходимо именно это.
>В общем, тем, кто что-то в этом понимает, должно быть понятно все, о чем я говорю.
Беда не в том, что я не понимаю, как это сделать указанными средствами, убей - не - пойму, зачем это надо сделать !
Если нужно каким-то образом запомнить выделенные в гриде записи датасета, то это делается совсем другим способом. И букмарки здесь не только не нужны, но даже опасны ;)
← →
maVladimir (2005-10-17 18:54) [11]> Zacho
Если не найду ответа, то придется сделать так, как ты посоветовал. Спасибо.
> msguns
Мне не надо запоминать выделенные в гриде записи датасета. Наоборот, хотелось бы выделить определенную i запись датасета.
Поясню: когда я кликаю на гриде мышкой, то в Selection заносится строка грида (если установлен RowSelect), содержащая эту запись, и в SelectedFields заносится bookmark на эту запись в датасете. Это же происходит при скроллинге, нажатии на клавиши up, down. Так вот, мне совершенно непонятно, каким образом мне вот так же можно было бы выделить какую-то i запись. Надеюсь, теперь более понятно.
← →
Johnmen © (2005-10-18 09:11) [12]>maVladimir (17.10.05 18:54) [11]
Уважаемый, вы бы спрашивали конкретно, что вам надо, а не вещали бы нам чушь.
← →
maVladimir (2005-10-18 11:00) [13]> Johnmen
Можно и покорректнее отвечать. А если непонятно, о чем вообще речь идет (даже в случае неправильной постановки вопроса), то лучше не писать ничего, чем писать такую чушь. А то, что я некорректно вопрос задал, это уж лично мое дело. Вам в этом случае надо просто вежливо промолчать.
А как конкретно спросить, я не знаю. Может быть так:
Необходимо программно выделить произвольную строку в TDBGrid"е.
← →
Johnmen © (2005-10-18 11:10) [14]>maVladimir (18.10.05 11:00) [13]
>Вам в этом случае надо просто вежливо промолчать."Не говорите мне, что я должен делать, и я не скажу, куда вам надо идти" (с) Фома
:)
>Необходимо программно выделить произвольную строку в TDBGrid"е.
0. То есть выделить незнамо что ???
1. В TDBGrid"е нет строк! Они есть в наборе данных.
2. Ещё раз [8], в конце.
← →
Плохиш © (2005-10-18 11:11) [15]
> maVladimir (18.10.05 11:00) [13]
> А то, что я некорректно вопрос задал, это уж лично мое дело.
Хм, ты делаешь нам одолжение, задавая вопрос?
> А как конкретно спросить, я не знаю. Может быть так:
> Необходимо программно выделить произвольную строку в TDBGrid"е.
>
Читай книжки/справку.
← →
Johnmen © (2005-10-18 11:13) [16]PS
>А то, что я некорректно вопрос задал, это уж лично мое дело.
Если этот вопрос ты задал сам себе. А если в общественном месте, то это не так...
← →
msguns © (2005-10-18 13:50) [17]>maVladimir (17.10.05 18:54) [11]
>Надеюсь, теперь более понятно.
Более-менее. Т.е. ты хочешь каким-то образом запоминать и визуально выделять (например, другим цветом или "псысой") те записи, которые юзер "отметил" и при этом
1. Записи могут находиться в произвольных местах грида
2. "Выделенные" записи не должны "потеряться" при переоткрытии НД после, например, удаления записей или переупорядочения.
Если я правильно тебя понял, то забудь пр все, чем ты оперировал до этого, начиная от TCustomDBGrid и заканчивая букмарками и всякими dgRowSelect, SelrctedRows и т.д.
Это решается совершенно другими средствами. "От грида" в реализации участвует лишь OnDrawColumnCell. Все остальное решается через массив указателей и методы (св-ва) датасета.
← →
maVladimir (2005-10-18 14:51) [18]А то, что я некорректно вопрос задал, это уж лично мое дело.
подразумевало под собой "лично моя проблема", т.е. то, что я не могу задать вопрос по-человечески, это моя проблема, и по-хорошему мне ее надо решить.
> msguns
Большое спасибо за внятный ответ. Пойду читать хелп.
> to all
Извиняюсь перед всеми за невнятно поставленный вопрос.
P.S. И еще: уверен, что никто из Вас не родился со знанием всего того, что вы сейчас знаете. Я же занимаюсь Delphi всего полгода и, так сказать, являюсь чайником в этом деле, а потому не всегда могу правильно поставить вопрос. К сожалению, большинство ответов, которые здесь прозвучали, имеют выраженную негативную окраску (типа "ты чайник, а потому не можешь быть удостоен хорошего ответа!"), и это уже идеологический вопрос и дело каждого.
Ничего плохого я этим сказать не хотел - просто мысли вслух.
← →
Johnmen © (2005-10-18 14:58) [19]>maVladimir (18.10.05 14:51) [18]
>К сожалению, большинство ответов, которые здесь прозвучали, имеют
>выраженную негативную окраску
Тебе показалось.
Как и бывает обычно с теми, кто молод и мнителен.
Но на пути просветления, хотелось бы думать...
ЗЫ
Вот интересная ссылка http://ln.com.ua/~openxs/articles/smart-questions-ru.html
← →
msguns © (2005-10-18 17:18) [20]Наводка:
Записи НД должны иметь нечто, однозначно их идентифицирующее. Лучше всего подходит поле UID (Часто оно PK+AutoInc).
Создай у себя в проге список указателей, куда при "чекании" юзером соответствующим обработчиком события будет добавляться (или удалаться, если уже есть) UID текущей записи НД, отображенного в гриде.
В событии грида OnDrawColumnCell надо делать поиск в этом списке UID записи, обращаться к которому можно, например, так
Field.DataSet.FieldByName"UID".AsInteger
Сам поиск можно сделать либо процедурой, либо, если лень писать, то обычным методом списков IndexOf, правда для этого в список надо помещать не самое значение счетчика, а его симв.аналог
В зависимости от результата поиска либо отмечать запись (например "галочкой" в "свободной" ячейке грида (в обработчие OnGetText поля, на которое ссылается колонка, надо написать Text := "" во избежание "накладок") путем размещения в ней соотв-го битмапа, либо красит строку в отличный от фона грида цвет)
либо - не отмечать.
И вся канитель ;)
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2005.11.27;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.014 c