Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.09.18;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.034 c
14-1124710103
КК
2005-08-22 15:28
2005.09.18
SHS1.EXE - что это


14-1123872819
Е-клмн
2005-08-12 22:53
2005.09.18
Знакомый приехал из Канады.


1-1124925531
Kisha
2005-08-25 03:18
2005.09.18
Синтаксический анализатор


1-1125042814
Марто
2005-08-26 11:53
2005.09.18
Delphi вылетает при попытке открыть проект


4-1122500345
Quattro
2005-07-28 01:39
2005.09.18
TaskBar