Модераторы: Snowy, MetalFan, bems, Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Выделение ячейки DBGrid 
:(
    Опции темы
NikolayKr
Дата 2.7.2007, 10:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 4.8.2006

Репутация: нет
Всего: нет



Как выделить ячейку в DBGrid . В смысле не цветом, а програмно так как в StringGrid:
StringGrid.Row:=3;
StringGrid.Col:=5;

PM MAIL   Вверх
Burka
Дата 2.7.2007, 18:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 429
Регистрация: 11.5.2007

Репутация: нет
Всего: 2



Все легко) за 2 мин разобрался.

Что бы выделить столбец
Код

DbGrid1.SelectedIndex:= Number; //Не забудь что с нуля счет идет;


А для выбора строки тебе придеться делать что-то типо такого

Код

Table1.First;
Table1.MoveBy(Number)


или можно с текущей позиции на нужную, что-то типа такого
Код

Table1.MoveBy(Number - Table1.RecNo)



--------------------
Великие умы обсуждают идеи; средние умы обсуждают события; мелкие умы обсуждают людей.
PM MAIL   Вверх
Romikgy
Дата 2.7.2007, 20:20 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7325
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 4
Всего: 146



хммм....
а также не пройдет?
Цитата(NikolayKr @  2.7.2007,  09:34 Найти цитируемый пост)
StringGrid.Row:=3;
StringGrid.Col:=5;

только вместо StringGrid поставить DBGrid 


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Burka
Дата 2.7.2007, 20:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 429
Регистрация: 11.5.2007

Репутация: нет
Всего: 2



Romikgy -  smile 
Ты бы сначала посмотрел бы, есть ли такое свойство у DBGrid'a. 



--------------------
Великие умы обсуждают идеи; средние умы обсуждают события; мелкие умы обсуждают людей.
PM MAIL   Вверх
Romikgy
Дата 2.7.2007, 21:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7325
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 4
Всего: 146



Цитата(Burka @  2.7.2007,  19:29 Найти цитируемый пост)
Ты бы сначала посмотрел бы, есть ли такое свойство у DBGrid'a. 

такое свойство есть у TCustomGrid , а TDBGrid наследуется от него , имхо посмотри в хелп
(PS проверить негде, а то бы проверил выложил пример)


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
Burka
Дата 2.7.2007, 21:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 429
Регистрация: 11.5.2007

Репутация: нет
Всего: 2



Наследуется, но свойство не используется так, как в StringGrid'e.


--------------------
Великие умы обсуждают идеи; средние умы обсуждают события; мелкие умы обсуждают людей.
PM MAIL   Вверх
Romikgy
Дата 2.7.2007, 22:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7325
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 4
Всего: 146



А если сделать что то вроде такого?
Код

TMyDBGrid = class(TDBGrid)
private
procedure SetRow(Value: Longint);
procedure SetCol(Value: Longint);
 published
property Row: Longint write SetRow;
property Col: Longint  write SetCol;
end;

procedure TMyDBGrid.SetCol(Value: Longint);
begin
  if Col <> Value then FocusCell(Value, Row, True);
end;
procedure TMyDBGrid.SetRow(Value: Longint);
begin
  if Row <> Value then FocusCell(Col, Value, True);
end;



--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
_shef_
Дата 2.7.2007, 23:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 65
Регистрация: 8.6.2007

Репутация: нет
Всего: 1



Я пока не совсем понял зачем это надо, но мой вариант решения такой:

1. Строки - перемещаешься по базе данных методами TTable или что у тебя там. Ведь грид - это "фотография" участка базы и перемещаться по гриду смысла нет.

2. Столбцы - очень простой код

Код

DBGrid1.Fields[3 {номер твоего столбца с нуля} ].FocusControl;


Вроде все  smile 
PM MAIL WWW   Вверх
Burka
Дата 3.7.2007, 00:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 429
Регистрация: 11.5.2007

Репутация: нет
Всего: 2



Romikgy, а можно ли получить данные из строки, не переходя на нее в TTable?
То есть у нас в DBGride выделена, допустим 5 строка и 3 столбец и нужно получить данные из строки 4 и столбца 3, не снимая выделения.


--------------------
Великие умы обсуждают идеи; средние умы обсуждают события; мелкие умы обсуждают людей.
PM MAIL   Вверх
NikolayKr
Дата 3.7.2007, 10:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 4.8.2006

Репутация: нет
Всего: нет



Спасибо, Burka , все получилось. 
Цитата(_shef_ @  2.7.2007,  23:54 Найти цитируемый пост)
Я пока не совсем понял зачем это надо, но мой вариант решения такой:

1. Строки - перемещаешься по базе данных методами TTable или что у тебя там. Ведь грид - это "фотография" участка базы и перемещаться по гриду смысла нет.

2. Столбцы - очень простой код


По строкам я и так перемещался с помощью Query, проблема была именно в столбцах.
PM MAIL   Вверх
_shef_
Дата 3.7.2007, 14:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 65
Регистрация: 8.6.2007

Репутация: нет
Всего: 1



Цитата(NikolayKr @  3.7.2007,  10:02 Найти цитируемый пост)
По строкам я и так перемещался с помощью Query, проблема была именно в столбцах


Кто нибудъ может обьяснить мне зачем это надо.
Если надо пробежать по нужным полям базы так это можно сделать и без грида.

Вопрос - зачем бегать по гриду? smile 

PM MAIL WWW   Вверх
NikolayKr
Дата 3.7.2007, 15:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 4.8.2006

Репутация: нет
Всего: нет



Цитата(_shef_ @  3.7.2007,  14:48 Найти цитируемый пост)
Кто нибудъ может обьяснить мне зачем это надо.
Если надо пробежать по нужным полям базы так это можно сделать и без грида.

Вопрос - зачем бегать по гриду?



Была необходимость после вызова метода Refresh выделить ячейку в определенном столбце
PM MAIL   Вверх
Romikgy
Дата 3.7.2007, 22:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7325
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: 4
Всего: 146



Цитата(Burka @  2.7.2007,  23:02 Найти цитируемый пост)
а можно ли получить данные из строки, не переходя на нее в TTable?

я не силен в БД , но имхо хелп может ответить на большинство вопросов smile
все даные хранятся в TTable в DataSource, а из него можно вытянуть всю инфу без бегания по дбгриду, имхо


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
_shef_
Дата 4.7.2007, 12:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 65
Регистрация: 8.6.2007

Репутация: нет
Всего: 1



Я тут поглядел TTable, и вот что нарыл:
После рефреша мона юзать локейт, что бы стать на нужную строку, например
Код

Table1.Locate('Name'{поле},'Parrot'{значение},[loPartialKey]);

в хелпе неплохо написано как это сделать для нескольких полей что бы конкретизировать место перехода.
Ну а со столбцом вроде уже разобрались(см.Выше)
PM MAIL WWW   Вверх
wectula
Дата 10.12.2022, 02:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 20
Регистрация: 9.12.2022

Репутация: нет
Всего: нет




Модератор: Сообщение скрыто.

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.1585 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.