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

Вниз

Бешеный StringGrid   Найти похожие ветки 

 
NeVIP ©   (2004-08-19 22:42) [0]

Бодрый день мастера!
Появился такой баг : есть Грид, у него первая
колонка отведена под чекбоксы,
если значение грида в ячейке = 1
тогда рисуется отмеченный чекбокс,
если = 0, ессесно неотмеченный.
Так вот, при клике на любую ячейку из первой
колонны, присваивается инверсное значение и
рисуется чекбокс, это при StringGridOnClick,
вот код :

// Обработка нажатия на чекбох грида
 if StringGrid.Col=1 then
  begin
   if StringGrid.Cells[1,StringGrid.Row]="1" then
      StringGrid.Cells[1,StringGrid.Row]:="0"
   else
      StringGrid.Cells[1,StringGrid.Row]:="1";
  end;


Код прорисовки чекбокса: StringGridDrawCell

// Прорисовка чекбохов
if ACol = 1 then
 begin
  if StringGrid.Cells[ ACol , ARow ] = "1" then
   DrawFrameControl(TStringGrid(Sender).Canvas.Handle,Rect,DFC_BUTTON,DFCS_CHECKED);
  if StringGrid.Cells[ ACol , ARow ] = "0" then
   DrawFrameControl(TStringGrid(Sender).Canvas.Handle,Rect,DFC_BUTTON,DFCS_BUTTONCHECK);
 end;

Проблема в том, что если я перемещаюсь по гриду ("выделенная ячейка"),
когда перемещаюсь по первому столбцу клавишами курсора, или колесом
прокрутки то енти долбанные чекбоксы инвертируються!!!! т.е. где
был отмеченный - "отметка" снимается и наоборот, т.е. происходит.
событие OnClick что-ли?!?!?! - брахмапутра какая-то!
Проверил с отключённой прорисовкой - тоже самое : Y=N, N=Y...
Как это лечить? перехватывать событие что мы крутим скролл или
жемём клавиши - незнаю :(

С уважением.


 
Алхимик ©   (2004-08-19 23:17) [1]

Вместо StringGridClick попробуй:

procedure TForm1.StringGridMouseDown(Sender: TObject; Button: TMouseButton;
 Shift: TShiftState; X, Y: Integer);
var
  ACol,ARow : integer;
begin
  StringGrid.MouseToCell(x,y,ACol,ARow);
  if ACol=1 then begin
     if StringGrid.Cells[1,ARow]="1" then
        StringGrid.Cells[1,ARow]:="0"
     else
        StringGrid.Cells[1,ARow]:="1";
  end;
end;



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

Текущий архив: 2004.09.05;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.023 c
1-1092912806
STARfish
2004-08-19 14:53
2004.09.05
Как обработать клик по ScrollBox, по его полосе прокрутки?


6-1088335279
maguk
2004-06-27 15:21
2004.09.05
Как найти все компьютеры в рабочей группе? Для WinNT/2000/XP


1-1092739496
CAMCOH
2004-08-17 14:44
2004.09.05
Canvas. Помогите разобратся.


14-1092758228
Ega23
2004-08-17 19:57
2004.09.05
Навеяло недавними обсуждениями


14-1092847934
Undert
2004-08-18 20:52
2004.09.05
Встреча