Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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.016 c
14-1131316468
Mirror
2005-11-07 01:34
2005.11.27
Подскажите компонент


2-1131714991
De1uxe
2005-11-11 16:16
2005.11.27
Нужна помощь


14-1130871398
VEG
2005-11-01 21:56
2005.11.27
Беспроводные сети


2-1131633888
Витольд
2005-11-10 17:44
2005.11.27
Нить Thread


14-1130920332
kaif
2005-11-02 11:32
2005.11.27
Задачка про доску





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский