Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

TopRow в DBGrid [D6]


Страницы:   1 2

EthernalWonderer ©   (2005-01-20 16:52:00) 

А не подскажут ли уважаемые Мастера, можно ли прочитать и установить значение TopRow в DBGrid аналогично StringGrid'у?


Tormoz   (2005-01-21 16:44:00) [1]

To Vlad

Type
 TMyDBGrid = class(TCustomDBGrid)
 public
  property DataLink;
 end;

...

procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
 DataCol: Integer; Column: TColumn; State: TGridDrawState);
Var
Ar :integer;
begin

with TMyDBGrid(Sender) do
begin
   Ar := DataLink.ActiveRecord;

   if Table1HType.Value = 0
   then RowHeights[Ar + 1]:=30
   else RowHeights[Ar + 1]:=DefaultRowHeight;

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

end;


Vlad   (2005-01-21 12:34:00) [2]


> Tormoz   (21.01.05 12:15) [22]


> Когда индикатор должен уйти на запись ниже последней видимой
> в Grid'e, он "теряется".

Индикатор теряется?
Хм... странно, у меня все нормально, ничего не теряется.
Приведи свой код OnDrawColumnCell


Tormoz   (2005-01-21 12:15:00) [3]

To Vlad

Вот такой вопрос возник.
Запускаю прогу на выполнение. В Grid'e вижу строки различной высоты: все Ок.
Жму клавишу стрелка вниз.
Когда индикатор должен уйти на запись ниже последней видимой в Grid'e, он "теряется".
В общем, скроллинг прихрамывает. Я так понимаю, причина в раличной высоте строк, отображенных в окне Grid'a.

Есть мысли, как правильно обработать эту шероховатость?


Tormoz   (2005-01-21 11:45:00) [4]

To Vlad ©

С П А С И Б О !


EthernalWonderer   (2005-01-21 09:49:00) [5]

> Alex_S   (20.01.05 19:12) [16]
Спасибо за ссылку, я уже читал эту ветку до того,как задать вопрос. Откровенно говоря, у меня приведённый там код вызвал некоторые сомнения, поэтому я и задал вопрос - может быть, у людей есть другие решения

> sniknik ©   (20.01.05 17:33) [5] , Vlad ©   (20.01.05 19:05) [17] Спасибо, очень интересная статья!

Резюме: придётся реализовывать RefreshRecord.


Alex_S   (2005-01-20 19:15:00) [6]

А надо или нет, ему решать. Тебе не нравится, а нам пойдет. Но то, что он затеял - искать TopRow - не выйдет, уже пройденный этап. Лучше 2 набора. А то, что у меня - уже в исключительном случае. И то бояться его не найдо, если с умом всё делать.


Alex_S   (2005-01-20 19:12:00) [7]

Лень искать, а текст у меня отдельно хранится. Так что не надо меня совсем ламером считать :-(.
Просто храню хорошие решения в определенной папке.
Но теперь и ссылку запишу, однако


Vlad   (2005-01-20 19:05:00) [8]


> Alex_S   (20.01.05 19:02) [16]


а ссылку привести слабо, вот так например ? :-)
http://www.delphimaster.ru/cgi-bin/forum.pl?id=1104861881&n=1

И еще, то что там написано (ИМХО) образец того как не надоделать.


Alex_S   (2005-01-20 19:02:00) [9]

>Хочется делать это незаметно от пользователя, а для этого восстанавливать положение курсора и строк таблицы после перезапроса.
--------
Об одном и том же. Второй раз за день, третий - за 2 недели.
Первым в этом году был я, и этот вопрос у меня решен.
Найди меня и внимательно до конца прочитай ветку.
<<
Восстановление строк DBGrid после перезагрузки таблицы TQuery. [D7, Paradox]
Alex_S   (04.01.05 21:04)  
>>
Но лучше всего и проще, если есть возможность бегать по таблице в другом DataSete, то так и надо делать, а потом вовращаться к DBGrid. А вот если действительно надо перезагружать измененные строки и оставаться на месте, то это - то самое...


Vlad   (2005-01-20 18:52:00) [10]


> Johnmen ©   (20.01.05 18:44) [14]

Эх, выкрутился ;-)


Johnmen   (2005-01-20 18:44:00) [11]

Итак, смотрим вопрос
>возможно установить различную высоту строк данных для DBGrid'a ?
видим два ответа, первый
Нет
второй
TMyDBGrid=class(TDBGrid);
...

замечаем, что появился некий TMyDBGrid.
А в вопросе ничего не было про использование вспомогательных классов.

Вот такое имхо :)


Vlad   (2005-01-20 18:38:00) [12]


> Tormoz   (20.01.05 18:18) [11]

Лови рабочий код :-)

 with TMyDBGrid(Sender) do
 begin
 if DataSource.DataSet.FieldByName('RN').AsInteger=14322 then
    TMyDBGrid(Sender).RowHeights[DataLink.ActiveRecord + 1]:=30
 else
    TMyDBGrid(Sender).RowHeights[DataLink.ActiveRecord + 1]:=DefaultRowHeight;
 DefaultDrawColumnCell(Rect, DataCol, Column, State);
 end;


Vlad   (2005-01-20 18:26:00) [13]


> Tormoz   (20.01.05 18:18) [11]


> А дальше Ты, наверное, уже знаешь

Угу, знаю. Индекс строки грида вычислять надо, тогда будет все пучком :-)


Tormoz   (2005-01-20 18:18:00) [14]

To Vlad ©   (20.01.05 18:11) [10]

Да брось Ты!
Я тоже радовался , когда написал:

if MyCondition Then
TStringGrid(MyDBGrid).RowHeights[<индекс строки>]:= <значение>;


И все было прекрасно, пока не начался скроллинг вниз. А дальше Ты, наверное, уже знаешь... :-)


Vlad   (2005-01-20 18:11:00) [15]


> Tormoz   (20.01.05 18:09) [9]
> To Vlad © (20.01.05 18:06) [8]
>
>   Смотри Johnmen ©   (20.01.05 18:06) [7]

Это типа чё, с мастерами уже и поспорить нельзя? ;-)


Tormoz   (2005-01-20 18:09:00) [16]

To Vlad © (20.01.05 18:06) [8]

  Смотри Johnmen ©   (20.01.05 18:06) [7]

Johnmen ©   (20.01.05 18:06) [7]

  Источник Вашего знания, плиз!


Vlad   (2005-01-20 18:06:00) [17]


> Tormoz   (20.01.05 17:57) [6]

В статье приведенной sniknik © это есть.

TMyDBGrid=class(TDBGrid);
В событии OnDrawColumnCell пишем
   TMyDBGrid(Sender).RowHeights[<индекс строки>]:= <значение>;


Johnmen   (2005-01-20 18:06:00) [18]

Нет.


Tormoz   (2005-01-20 17:57:00) [19]

А вот может кто-нибудь знает,
возможно установить различную высоту строк данных для DBGrid'a ?


sniknik   (2005-01-20 17:33:00) [20]

http://www.delphikingdom.com/asp/viewitem.asp?catalogid=806


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо