Насколько я знаю, единственное легкое решение заключается в использовании вычисляемых полей.
Для того, чтобы поместить данные из нескольких таблиц в один DBGrid, нужно воспользоваться объектом TQuery. На заметку: используйте TQuery в режиме только для чтения, если вы не можете обеспечить гарантию выполнения некоторых из его руководящих принципов, один из которых – данные могут быть получены только от одной таблицы.
Как сделать так, чтобы в DBGrid напротив некоторых строк можно было бы галочку поставить?
Nomadic советует:
Ну примерно так (лишнее мало-мало порезал, больно много его, но идея видна :) на сервере — тaблицa Advertis.DB, первичный ключ ID — autoincrement. На локальном диске — тaблицa Founds.DB, с полем Advertis: integer, по которому есть индекс, и tblFounds.IndexFieldNames = 'Advertis'.
if DataCol = 0 then with dmFile, dbgWork.Canvas do begin
FillRect(Rect); {clear the cell}
if tblFounds.FindKey([tblAdvertisID.Value]) then begin
TextOut(Rect.Left, Rect.Top, '?');
end else begin
TextOut(Rect.Left, Rect.Top, 'o');
end;
end;
end;
=== cut ===
Оказывается, я переопределял рисование гридa, а не вычислял поле. Не помню точно, но кажется, чтобы не перечитывать таблицу на каждый даблклик, а только перерисовать грид.