Форум: "Базы";
Текущий архив: 2005.09.18;
Скачать: [xml.tar.bz2];
ВнизEHGrid колонка Найти похожие ветки
← →
xroot (2005-07-30 11:10) [0]Как мне создать свободную колнку в EHGrid состоящую из CheckBox.
Точнее это я сделал, но как мне сделать так чтобы пользователь мог бы менять состояние checkbox как обычно (по нажатию на таковой).
← →
jack128 © (2005-07-30 16:51) [1]а откуда значение этого поля должно браться??? и что должно делаться когда юзер меняет значение поля??
← →
xroot (2005-07-30 16:55) [2]Значение не берется неоткуда (по дефолту: не отмечено), просто потом при нажатию на кнопку ПРИНТ происходит печать записей у которых checkbox отмечены.
← →
xroot (2005-07-31 11:30) [3]Ну хотя кто нить помогите. Застрял на этой проблеме.
← →
xroot (2005-08-03 22:45) [4]Блин, неужели никто не знает?
← →
sniknik © (2005-08-03 23:28) [5]ну почему же, знают многие, отвечать только не хотят, себе дороже выйдет.
тем более что все уже сказано...
> а откуда значение этого поля должно браться??
> Значение не берется неоткуда (по дефолту: не отмечено)
берется ниоткуда, значит и записывается в никуда...
> просто потом при нажатию на кнопку ПРИНТ...
ничего не происходит. т.к. нет чекбоксов которые отмечены (негде значение хранить)
p.s. сказано применительно к стандартным компонентам. кто знает, может в этом EHGrid данные держатся в мемотаблице к которой добавить лищнее поле ничего не стоит, и они так и делают на каждый чекбокс... но не думаю что что это так, скорее всего там это тоже самое, что в стандарте.
← →
xroot (2005-08-04 00:06) [6]А какой способ можно релизовать для выполнения данной задачи Вносить данные по отметкам чекбоксов в обычную таблицу базы, а потом перезагружать основную таблицу слишком долго и (на мой взгляд) не оптимально.
← →
ANB © (2005-08-04 10:39) [7]
> xroot (04.08.05 00:06) [6]
Два способа (которые я видео)
1. Липовое поле в дейтасете.
2. Своя реализация выделения (массив или TList или встроенный массив в гриле (забыл, как называется))
← →
jack128 © (2005-08-04 12:10) [8]ANB © (04.08.05 10:39) [7]
1. Липовое поле в дейтасете.
что такое "липовое поле в датасете" ? Как его создать в TTable?
xroot (04.08.05 0:06) [6]
к какому dataset"у подключен грид? в зависимости от этого варианты очень разнятся от "это невозможно сделать" до "это делается в два клика мышью"
← →
Виталий Панасенко (2005-08-04 12:20) [9]Можешь создать вычисляемое поле и по клику/двойному клику менять его значение...
← →
msguns © (2005-08-04 13:03) [10]Делается так (один из вариантов):
Type
PSelDSRec = ^RSelRect;
RSelRect = record
ID: integer; // ID отмеченной записи
Misc: string; // Комментарий для показа в списке выбранных
end;
...
Form1 = Class(TForm)
...
public
ListSelRec: TList;
...
procedure TForm1.OnCreate(Sender: TObject);
begin
...
ListSelRec := TList.Create;
end;
procedure TForm1.OnClose(Sender: TObject);
var
i: integer;
begin
...
for i: 0 to ListSelRec.Count-1 do
dispose(PSelDSRec(ListSelRec[i]));
ListSelRec.Free;
end;
procedure TForm1.DBGrid1OnDblClick(Sender: TObject);
// Если акт.запись есть в списке, выкинуть ее, если нет - добавить
// Fields[0] датасета - UID НД
var
i: integer;
begin
with TDBGrid(Sender).DataSource.DataSet do
begin
for i := 0 to ListSelRec.Count-1 do
if PSelDSRec(ListSelRec[i])^.ID=Fields[0].AsInteger then
begin
dispose(PSelDSRec(ListSelRec[i]));
ListSelRec.Delete(i);
exit; // Выход из процедуры
end;
ListSelRec.Add(New(PSelDSRec));
PSelDSRec(ListSelRec[ListSelRec.Count-1])^.ID := Fields[0].AsInteger;
PSelDSRec(ListSelRec[ListSelRec.Count-1])^.Misc := ...;
end;
TDBGrid(Sender).Update;
end;
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
// Нарисовать псысу в "пустой колонке грида, если запись помечена
var
i: integer;
begin
if Column.Field=<Имя поля, которое не отображается> then
for i := 0 to ListSelRec.Count-1 do
if PSelDSRec(ListSelRec[i])^.ID=TDBGridSender).DataSource.DataSet.Fields[0].AsInteger then
begin
Form1.ImageList.Draw(TDBGrid(Sender).Canvas,Rect.Left,Rect.Top,)<индекс иконки с галочкой>);
break;
end;
end;
ЗЫ. Пишу с кондачка, подходящего короткого примера нет под рукой. Смысл, думаю, понятен.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2005.09.18;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.01 c