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

Вниз

Еще раз о номере записи dataset а в onDrawColumnCell DBGrid а   Найти похожие ветки 

 
SergP ©   (2004-11-10 09:12) [0]

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

procedure TForm3.DBGridEh1DrawColumnCell(Sender: TObject;
 const Rect: TRect; DataCol: Integer; Column: TColumnEh;
 State: TGridDrawState);
var
 i:integer;
begin
 i:=TDBGridEh(sender).DataSource.DataSet.RecNo;
 if datacol=0 then TDBGridEh(sender).Canvas.TextOut(Rect.Left + 2, Rect.Top + 2, inttostr(i));
end;

Если делать так то вроде бы все работает, но при переводе датасета в режим Insert  возникает неприятный эффект: Во всех строках нужной колонки отображаются "-1".

Если же делать так как мне предложили в педыдущей ветке, т.е. использовать
TMyGrid(sender).datalink.ActiveRecord        
(при этом объявив в этом же модуле TMyGrid наследником TDBGrid (в моем случае TDbGridEh, но это не важно))
то тоже все поначалу вроде бы прекрасно работает, пока количество записей не превысит то что может одновременно отображаться в gride, после чего тоже начинают наблюдаться неприятные вещи при скроллинге, связаные с тем что TMyGrid(sender).datalink.ActiveRecord возвращает не абсолютный номер строки в гриде а относительный (относительно первой отображаемой записи датасета).

Кто может предложить решение этой проблемы?


 
stud ©   (2004-11-10 12:37) [1]

а смысл подобной операции?


 
Johnmen ©   (2004-11-10 12:52) [2]

Заведи вычисляемое поле, значение которого RecNo. Тогда не надо самому рисовать...
А смысл, действительно, неясен...


 
SergP ©   (2004-11-10 21:08) [3]


> [1] stud ©   (10.11.04 12:37)
> а смысл подобной операции?


Не беспокойтесь за смысл. Он есть...


> [2] Johnmen ©   (10.11.04 12:52)
> Заведи вычисляемое поле, значение которого RecNo.


А пример можно как завести такое поле? Т.е. я не совсем представляю как сделать вычисляемое поле, значение которого RecNo.


 
Johnmen ©   (2004-11-10 21:41) [4]

Calculated поле в наборе данных.
В событии OnCalcFields - DataSet["YourCalcFieldName"]:=DataSet.RecNo;



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

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

Наверх




Память: 0.45 MB
Время: 0.038 c
14-1100903958
123
2004-11-20 01:39
2004.12.12
C#


1-1101900521
genies
2004-12-01 14:28
2004.12.12
SOS, Help.


3-1100148526
Andrey V.
2004-11-11 07:48
2004.12.12
Про версию FireBird


1-1101481661
TButton
2004-11-26 18:07
2004.12.12
редактирование файлов реестра


3-1100252331
Olga_cc
2004-11-12 12:38
2004.12.12
Qreport





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