Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.09.26;
Скачать: CL | DM;

Вниз

Программное выделение строк в DBGrid   Найти похожие ветки 

 
12345   (2004-08-27 12:02) [0]

см. сабж


 
Rem   (2004-08-27 12:04) [1]

OnDrawColumnCell()


 
12345   (2004-08-27 12:08) [2]

Это же событие для выделения ячеек грида, а мне нужно программно
выделить все строки при нажатии кнопки, например.


 
Rem   (2004-08-27 12:19) [3]

[2]
Не путайте. Это событие для рисования ячеек таблицы.

По теме вопроса: Вы уверены, что надо выделить строки в DBGrid"е, а не выбрать (отметить) строки в DataSet"е?
Если все же в DataSet"e, то DataSet.GetBookmark, помещайте выбранные строки в отдельный список, и по факту отрисовки DBGrid"а рисуйте выбранные строки по-другому. Или заведите дополнительное поле в DataSet"е типа "Выбрано". Или еще как-то, но только не в DBGrid"e.


 
12345   (2004-08-27 12:33) [4]

мне нужно, чтобы они были в DBGrid.SelectedRows
как это сделать?


 
12345   (2004-08-27 12:36) [5]

>рисуйте выбранные строки по-другому
ну нарисую, но ведь в  DBGrid.SelectedRows они не будут находиться


 
DSKalugin ©   (2004-08-27 12:37) [6]


procedure TEngineMF.DBGrid4DrawColumnCell(Sender: TObject;
 const Rect: TRect; DataCol: Integer; Column: TColumn;
 State: TGridDrawState);
begin
if EngineDM.OrdersIBQ.IsEmpty then exit;

if EngineDM.OrdersIBQcondition.AsString="Не заказана"
then DBGrid4.Canvas.Brush.Color :=$cbc7fc;

if EngineDM.OrdersIBQcondition.AsString="Заказана"
then DBGrid4.Canvas.Brush.Color :=clMoneyGreen;

if not EngineDM.OrdersIBQBest_Before.IsNull then
if ((Date>=EngineDM.OrdersIBQBest_Before.AsDateTime)
  and (not (EngineDM.OrdersIBQcondition.AsString="Продана")))
then DBGrid4.Canvas.Font.Style:=[fsBold];

// безналичка
if (EngineDM.OrdersIBQzalog.AsInteger=0)
then DBGrid4.Canvas.Brush.Color :=clCream;

DBGrid4.DefaultDrawColumnCell(Rect,DataCol,Column, State);
end;


 
Ega23 ©   (2004-08-27 12:38) [7]


procedure TFMain.rxgPersonnelKeyUp(Sender: TObject; var Key: Word;
 Shift: TShiftState);
begin
if (ssCtrl in Shift) and (Key=65) then
 (Sender as TRxDBGrid).SelectAll;
end;


Так сказать, используйте RxLib...


 
s999   (2004-08-27 12:43) [8]


> мне нужно, чтобы они были в DBGrid.SelectedRows
> как это сделать?


Попробуй:

DBGrid.SelectedRows.CurrentRowSelected := True/False;


 
12345   (2004-08-27 13:25) [9]

>DSKalugin ©   (27.08.04 12:37) [6]

ты советуешь мне просто раскрасить и все?

>DBGrid.SelectedRows.CurrentRowSelected := True/False;

это обращение к уже выделенным строкам, а у меня таковых нет


 
s999   (2004-08-27 13:31) [10]


> это обращение к уже выделенным строкам, а у меня таковых
> нет


А попробовать? При True это выделение текущей записи, при False снятие выделения.


 
Ega23 ©   (2004-08-27 13:36) [11]

На:


procedure TRxDBGrid.SelectAll;
var
 ABookmark: TBookmark;
begin
 if MultiSelect and DataLink.Active then begin
   with Datalink.Dataset do begin
     if (BOF and EOF) then Exit;
     DisableControls;
     try
       ABookmark := GetBookmark;
       try
         First;
         while not EOF do begin
           SelectedRows.CurrentRowSelected := True;
           Next;
         end;
       finally
         try
           GotoBookmark(ABookmark);
         except
         end;
         FreeBookmark(ABookmark);
       end;
     finally
       EnableControls;
     end;
   end;
 end;
end;


 
12345   (2004-08-27 14:15) [12]

>if MultiSelect and DataLink.Active then begin

спасибо, а DataLink.Active - что это?


 
12345   (2004-08-27 14:15) [13]

и без этого работает, конечно, но все же...


 
Ega23 ©   (2004-08-27 14:27) [14]

12345   (27.08.04 14:15) [13]

Если тебе очень интересно, то скачай и установи себе RxLib. Ищи в TRxDBGrid.SelectAll.


 
12345   (2004-08-27 14:36) [15]

2Ega23 ©   (27.08.04 14:27) [14]

много преимуществ перед простым гридом?
и где можно скачать?


 
12345   (2004-08-27 14:36) [16]

2Ega23 ©   (27.08.04 14:27) [14]

много преимуществ перед простым гридом?
и где можно скачать?


 
Ega23 ©   (2004-08-27 14:38) [17]

много преимуществ перед простым гридом?


Unit
RxDBCtrl
Description
Компонента TRxDBGrid предназначена, как и стандартная компонента TDBGrid, для отображения данных таблиц БД или результатов запросов в табличной форме. Являясь наследником TDBGrid, компонента TRxDBGrid имеет все те же свойства и методы, и, кроме того, некоторые свойства, находящиеся у TDBGrid в секции protected, вынесены в секцию public. Это такие свойства, как Col, Row, LeftCol, Canvas.

Другие отличия от TDBGrid:
- BLOB-поля базы данных, такие как графические изображения, текстовые мемо-поля, другие BLOB"ы могут отображаться в таблице в виде пиктограмм при установленном в True значении свойства ShowGlyphs;
- вы можете изменить цвет шрифта и фона любой ячейки таблицы (либо любой ее строки или столбца) в зависимости от значения поля или имени поля набора данных, определив обработчик события OnGetCellParams;

- имеются методы SaveLayout и RestoreLayout для сохранения и восстановления порядка и ширин столбцов компоненты TRxDBGrid в INI-файле (или в Registry для Delphi 2.0). Вы можете также автоматически сохранять и восстанавливать эти параметры, присвоив значение свойству IniStorage.
- как в 32-битной, так и в 16-битной версии компонента поддерживает выбор нескольких записей в таблице при значении свойства MultiSelect = True.

- заголовки колонок Grid-а могут быть с помощью свойства TitleButtons использованы как кнопки, например, для изменения порядка сортировки отображаемых данных.
- вы можете зафиксировать несколько первых колонок в Grid-е с помощью свойства FixedCols.


и где можно скачать?

Обращайся: egorov@dedal.dubna.ru



Страницы: 1 вся ветка

Текущий архив: 2004.09.26;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.036 c
1-1095149865
}|{yk
2004-09-14 12:17
2004.09.26
Глюк с Excel и Win98


3-1093407981
Desperado
2004-08-25 08:26
2004.09.26
TIBTransaction и MIDAS


8-1088615053
Delphistik
2004-06-30 21:04
2004.09.26
Слежка за Image...


1-1094563054
debuger
2004-09-07 17:17
2004.09.26
Отладка.


4-1092250514
Forelli
2004-08-11 22:55
2004.09.26
Использование MessageBoxIndirect.