Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 04.11.2010, 17:26   #1
Sanprof
Форумчанин
 
Аватар для Sanprof
 
Регистрация: 28.01.2008
Сообщений: 267
По умолчанию Hint на каждой ячейке StringGrid-a

Подскажите пожалуйста, как при перемещении курсора над Stringgrid показывать Hint, который мне нужен, в зависимости от того над какой ячейкой находится курсор. Сам кое-что сделал но Hint показывается только 1 раз, и каждый раз после клика на StringGrid (а в моей задаче клик должен отсутствовать).
Код:
procedure TViewer.MainGridMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  MainGrid.MouseToCell(X, Y, FCurCol, FCurRow);
  if (FCurCol <> -1) and (FCurRow <> -1) then
  begin
    if FCurCol = 0 then
    begin
      MainGrid.Hint := MainGrid.Cells[0, FCurRow];
    end else
    if FCurRow = 0 then
    begin
      MainGrid.Hint := (MainGrid.Objects[FCurCol, 0] as TTemplTag).LongName;
    end else
    begin
      MainGrid.Hint := MainGrid.Cells[0, FCurRow] + '  ' +
                       (MainGrid.Objects[FCurCol, 0] as TTemplTag).LongName;
    end;
  end else
    MainGrid.Hint := '';
end;
Не забываем говорить спасибо за помощь - это ведь так приятно
Sanprof вне форума Ответить с цитированием
Старый 04.11.2010, 18:38   #2
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

В приведенном примере отслеживается движение курсора мыши - при перемещении между ячейками StringGrid'а - появляется окно подсказки(hint), показывающее номер текущей строки и колонки.
Код:
type
  TForm1 = class(TForm)
    StringGrid1: TStringGrid;
    procedure StringGrid1MouseMove(Sender: TObject;
    Shift: TShiftState; X, Y: Integer);
    procedure FormCreate(Sender: TObject);
  private
  {Private declarations}
    Col : integer;
    Row : integer;
  public
  {Public declarations}
   end;
var
  Form1: TForm1;
implementation
{$R *.DFM}

procedure TForm1.FormCreate(Sender: TObject);
begin
  StringGrid1.Hint := '0 0';
  StringGrid1.ShowHint := True;
end;

procedure TForm1.StringGrid1MouseMove(Sender: TObject; 
                   Shift: TShiftState; X, Y: Integer);
var
  r : integer;
  c : integer;
begin
  StringGrid1.MouseToCell(X, Y, C, R);
  with StringGrid1 do
    begin
      if ((Row <> r) or(Col <> c)) then
        begin
          Row := r;
          Col := c;
          Application.CancelHint;
          StringGrid1.Hint :=IntToStr(r)+#32+IntToStr(c);
        end;
    end;
end;

Последний раз редактировалось mihali4; 04.11.2010 в 19:59.
mihali4 вне форума Ответить с цитированием
Старый 04.11.2010, 18:47   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ой, Михалыч, чеж все так сложно то?
Цитата:
Sanprof
Со своей стороны предлагаю принудительный вызов хинта
Код:
procedure TForm1.StringGrid1MouseMove(Sender: TObject; Shift: TShiftState;
  X, Y: Integer);
begin
  with StringGrid1 do begin
   Hint:=Format('%d-%d',[x,y]);
  end;
  Application.ActivateHint(Mouse.CursorPos);
end;
Ну а уже что пихать в хинт - дело твое, барскоё.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 04.11.2010, 19:31   #4
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

А теперь, дружище, расскажи, как ему в твоем коде отличать одну ячейку от другой...
mihali4 вне форума Ответить с цитированием
Старый 04.11.2010, 19:42   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
как ему в твоем коде отличать одну ячейку от другой...
Запросто, только сначала пусть автор критерии определит.
что значит фраза "над какой ячейкой находится курсор"?
Тем паче что не только MouseToCell рулит.
а вот зачем ты прикрутил Application.CancelHint; я признаться пока не понял.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 04.11.2010, 19:52   #6
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

А чтобы другие хинты, ежели они назначены, не мешали...
mihali4 вне форума Ответить с цитированием
Старый 04.11.2010, 19:55   #7
Sanprof
Форумчанин
 
Аватар для Sanprof
 
Регистрация: 28.01.2008
Сообщений: 267
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
автор критерии определит.
что значит фраза "над какой ячейкой находится курсор"?
У меня в первой строке (фиксированая) в поле Objects находятся объкты TTempTag у каждого есть свойство LongName, в первой колонке (фиксированая) находятся имена "Тегов", когда я навожу на ячейку, то я проверяю если это первая строка либо столбец, то показать хинт только той ячейки, над которой находится курсор, а если ARow и ACol <> 0 тогда показываем (Cell[0, FCurRow] + ' ' + Cells[FCurCol, 0]), тоесть через пробел имя "Тега" + "LongName"

Цитата:
Сообщение от Stilet Посмотреть сообщение
Код:
procedure TForm1.StringGrid1MouseMove(Sender: TObject; Shift: TShiftState;
  X, Y: Integer);
begin
  with StringGrid1 do begin
   Hint:=Format('%d-%d',[x,y]);
  end;
  Application.ActivateHint(Mouse.CursorPos);
end;
Вот пришел на работу, сел за проект, добавил к своей процедурке Application.ActivateHint(Mouse.Curs orPos); и все заработало как я и хотел. Пасиб за помощь.
Не забываем говорить спасибо за помощь - это ведь так приятно

Последний раз редактировалось Stilet; 08.11.2010 в 10:17.
Sanprof вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
изменение текста в ячейке stringgrid!!! GREENpes Помощь студентам 4 04.05.2010 16:33
Присвоить ячейке StringGrid переменную DimOn4Ik Помощь студентам 6 19.01.2010 16:27
Как добавить сразу несколько ячеек к каждой ячейке некоего диапазона? eugenerud Microsoft Office Excel 20 24.07.2009 19:18
Stringgrid количество символов в ячейке artemavd Общие вопросы Delphi 1 20.06.2009 20:44
Удаление отступов в последней ячейке каждой строки в каждой таблице Busine2009 Microsoft Office Word 7 06.06.2009 12:27