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

Вниз

в Hint для TStringGrid надо показывать непомещающийся текст   Найти похожие ветки 

 
Koster   (2004-08-10 13:01) [0]

Как сделать, как в грамотных приложениях: если текст не помещается в пределах клетки TStringGrid, при наведении мыши показывать его полностью в Hint. При этом Hint обычно следует за мышкой, и главное - при наведении на другую ячейку он сразу же изменяется, показывая содержимое уже новой ячейки.

Делаю так:


procedure TForm2.sgMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
var
       cx, cy: Integer;
begin
       sg.MouseToCell(x,y,cx,cy);
       if (cx < sg.ColCount) and (cy < sg.RowCount) and (cx >= 0) and (cy >= 0) then
               sg.Hint := sg.Cells[cx,cy];
end;


Показывает только один раз Hint, за мышью не следует (ну и бог с ним), но при наведении на другую ячейку - не меняется!

Как побороть?


 
@Lex ©   (2004-08-10 13:21) [1]

procedure TForm1.sgMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
var
      cx, cy: Integer;
      r : TRect;
begin
 sg.MouseToCell(x,y,cx,cy);
 if (cx < sg.ColCount) and (cy < sg.RowCount) and (cx >= 0) and (cy >= 0) then begin
    r := sg.CellRect(cx,cy);
    if sg.Canvas.TextWidth(sg.Cells[cx,cy]) > r.Right - r.Left then begin
      sg.Hint := sg.Cells[cx,cy];
      sg.ShowHint := true;
    end
    else sg.ShowHint := false;
 end
 else sg.ShowHint := false;
end;


 
Koster   (2004-08-10 13:43) [2]

Спасибо, чего-то сам насчет ShowHint не догадался, пытался бороть Application.CancelHint и Application.ShowHint. Теперь сам доделал, чтобы при переходе на другую клетку обновлялось, а так то что нужно!


procedure TForm2.sgMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
var
     cx, cy: Integer;
     r : TRect;
begin
sg.MouseToCell(x,y,cx,cy);
if (cx < sg.ColCount) and (cy < sg.RowCount) and (cx >= 0) and (cy >= 0) then begin
   r := sg.CellRect(cx,cy);
   if (oldCX <> cx) or (oldCY <> cy) then begin
               oldCX := cx;
               oldCY := cy;
               sg.ShowHint := False;
   end else
   if sg.Canvas.TextWidth(sg.Cells[cx,cy]) > r.Right - r.Left then begin
     sg.Hint := sg.Cells[cx,cy];
     sg.ShowHint := true;
   end
   else sg.ShowHint := false;
end
else sg.ShowHint := false;
end;



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

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

Наверх




Память: 0.47 MB
Время: 0.032 c
1-1091688309
Kergma
2004-08-05 10:45
2004.08.22
Консольное приложение + события + процедурные типы : бррррррррррр


14-1091768274
WondeRu
2004-08-06 08:57
2004.08.22
Кто использует в своих программах HASP ы?


3-1090594934
Koala
2004-07-23 19:02
2004.08.22
Изменения в базе


3-1090831277
Poma
2004-07-26 12:41
2004.08.22
Учет времени по каждому клиенту


1-1091774644
yozh_programmer
2004-08-06 10:44
2004.08.22
Как проскролить фрейм?