Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2005.02.20;
Скачать: [xml.tar.bz2];

Вниз

TopRow в DBGrid   Найти похожие ветки 

 
EthernalWonderer   (2005-01-20 16:52) [0]

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


 
Johnmen ©   (2005-01-20 16:59) [1]

Это как ?


 
Vlad ©   (2005-01-20 17:11) [2]


> EthernalWonderer   (20.01.05 16:52)  

Установить и прочитать можно. Но что тебе это даст кроми глюков на экране?


 
EthernalWonderer   (2005-01-20 17:18) [3]

В StringGrid есть Property TopRow - в нём хранится порядковый номер самой верхней из отображаемых строк. Присваивая этой Property разные значения, можно крутить таблицу вверх - вниз, при этом курсор остаётся в одной и той же ячейке (Col,Row). Точного аналога TopRow у DBGrid нет.

Вот я и справшиваю: нельзя ли иным способом узнать, какая строка по порядку является верхней из отображаемых, и нельзя ли покрутить таблицу вверх - вниз (а также вправо - влево) не меняя положения курсора?


 
EthernalWonderer   (2005-01-20 17:24) [4]

> Vlad ©   (20.01.05 17:11) [2]
В моей задаче достаточно сложно организовать RefreshRecord.
Поэтому приходится делать полный Refresh dataSet"a. (Строк немного, но в окно однозначно не влазят). Хочется делать это незаметно от пользователя, а для этого восстанавливать положение курсора и строк таблицы после перезапроса.


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

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


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

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


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

Нет.


 
Vlad ©   (2005-01-20 18:06) [8]


> Tormoz   (20.01.05 17:57) [6]

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

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


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

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:11) [10]


> 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:18) [11]

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

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

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


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


 
Vlad ©   (2005-01-20 18:26) [12]


> Tormoz   (20.01.05 18:18) [11]


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

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


 
Vlad ©   (2005-01-20 18:38) [13]


> 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;


 
Johnmen ©   (2005-01-20 18:44) [14]

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

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

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


 
Vlad ©   (2005-01-20 18:52) [15]


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

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


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

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


 
Vlad ©   (2005-01-20 19:05) [17]


> Alex_S   (20.01.05 19:02) [16]


а ссылку привести слабо, вот так например ? :-)
http://delphimaster.net/view/3-1104861881/

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


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

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


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

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


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

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

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

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


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

To Vlad ©

С П А С И Б О !


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

To Vlad

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

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


 
Vlad ©   (2005-01-21 12:34) [23]


> Tormoz   (21.01.05 12:15) [22]


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

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


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

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;



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

Форум: "Базы";
Текущий архив: 2005.02.20;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.53 MB
Время: 0.041 c
1-1107534746
hamster
2005-02-04 19:32
2005.02.20
Вопрос по Turbo Pascal


14-1107154410
КаПиБаРа
2005-01-31 09:53
2005.02.20
Вопрос про Half Life


14-1107089818
Qu
2005-01-30 15:56
2005.02.20
Реестр в win xp


3-1105803796
Fedor
2005-01-15 18:43
2005.02.20
Размер файла *.gdb


3-1106402538
Desdechado
2005-01-22 17:02
2005.02.20
ClientDataset.PacketRecords и EOF





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский