Текущий архив: 2006.09.03;
Скачать: CL | DM;
Вниз
StringGrid Найти похожие ветки
← →
Id (2006-08-10 13:55) [0]Здраствуйте, уважаемые мастера.
Как сделать так, чтобы при наведении на определенную запись в StringGrid-e она изменяла свой шрифт
← →
clickmaker © (2006-08-10 14:20) [1]OnMouseMove
OnDrawCell
← →
Id (2006-08-10 14:23) [2]
> clickmaker © (10.08.06 14:20) [1]
> OnMouseMove
Как поймать нужную запись?
← →
Id (2006-08-10 14:39) [3]
> clickmaker © (10.08.06 14:20) [1]
> OnDrawCell
В данной процедуре используются переменные Arow и ACol. я так понимаю, что это координаты прорисовываемой ячейки, но при по шаговом выполнении процедуры данные переменные неизменяются и равно нулю. Почему?
← →
Сергей М. © (2006-08-10 14:49) [4]
> данные переменные неизменяются
А почему они должны изменяться ?
> равно нулю
Для ячейки в верхнем левом углу процедура действительно будет вызвана с нулевыми упомянутыми параметрами
Для любой другой ячейки утверждение не соотв-ет действительности
← →
clickmaker © (2006-08-10 14:56) [5]
> Как поймать нужную запись?
MouseToCell()
← →
Id (2006-08-10 15:52) [6]
> clickmaker © (10.08.06 14:56) [5]
>
> MouseToCell()
Несовсем понятно, можно пример.
← →
clickmaker © (2006-08-10 16:00) [7]
> можно пример
в справке есть
← →
Id (2006-08-10 16:18) [8]
> clickmaker © (10.08.06 16:00) [7]
Разобрался, спасибо.
Еще вопрос, Как правильнее вызвать прорисовку определенной ячейки из другой процедуры?
Пробую вызвать
StringGrid1DrawCell(sender,c,r,rect,state),
возникают проблемы с параметрами rect и state, что указывать в них?
← →
clickmaker © (2006-08-10 16:25) [9]
> Id (10.08.06 16:18) [8]
не надо так делать
Grid.Refresh() или Grid.Repaint
либо Invalidate
← →
Id (2006-08-10 16:41) [10]Вот, что в результате получилось (см.тему)
procedure TForm2.StringGrid1MouseMove(Sender: TObject; Shift: TShiftState;
X, Y: Integer);
begin
StringGrid1.MouseToCell(x,y,co,ro);
StringGrid1.Refresh;
end;
procedure TForm2.StringGrid1DrawCell(Sender: TObject; aCol, aRow: Integer;
Rect: TRect; State: TGridDrawState);
begin
if (acol=co) and (arow=ro) then begin
with StringGrid1.Canvas do begin
font.Color:=clBlue;
font.Style:=[fsUnderline] ;
FillRect(Rect);
TextOut(Rect.Left+1,Rect.Top+1,StringGrid1.Cells[co,ro]);
end;
end;
end;
где co,ro: Longint - глобальные переменные
Но видимо из-за частого Refresh, получается очень неприятное мигание таблицы, как этого избежать?
← →
clickmaker © (2006-08-10 16:47) [11]
> как этого избежать?
проверять, вошла ли мышь в ячейку, обновить 1 раз. Следущий раз обновлять, только если мышь вышла и вошла в другую
← →
Id (2006-08-10 17:05) [12]
> clickmaker © (10.08.06 16:47) [11]
Очень благодарю
Страницы: 1 вся ветка
Текущий архив: 2006.09.03;
Скачать: CL | DM;
Память: 0.47 MB
Время: 0.027 c