Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Stringgrid
Форум программистов > Системное программирование > Delphi и Pascal > Delphi - FAQ
Acorn
На форме есть компонент StringGrid. Какое событие отвечает за щелчек на fixed?
zubr
OnMouseDown, OnMouseUp
Проходимец
Вообще за Click отвечает событие OnClick!
zubr
Для: Проходимец
В том то и проблема, что в StringGrid при щелчке на fixed OnClick не возникает.
Guest_xelaok_*
Можно так...

procedure TForm.StringGridMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var ACol, ARow: Integer;
Fixed: Boolean;
begin
with TStringGrid(Sender) do
begin
MouseToCell(X, Y, ACol, ARow);
Fixed := (ACol < FixedCols) or (ARow < FixedRows);
end;
end;
Jack_A
Привет всем !

Обращался в 2 эхи этого профиля, но без результата.
И из "гуру" ничего путного не выжал.
В Дельфи я чайник, хотя программер давний.
Вопрос : имеем на форме StringGrid. При запуске
приложения левая верхняя ячейка StringGrid оказывается
закрашенной. Когда кликаешь по ячейке, на ней появляется
курсор, а последняя до того бывшая выделенной ячейка
закрашивается.Как ее от этого отучить? Даже при
заполнении ячейки из программы закрашивание не исчезает.
Попытки переключать свойства без толку : или ничего не
меняется, или в ячейку ничего нельзя записать.
Попутно вопрос : как из программы, без клика мышью,
передать фокус ввода в желаемую ячейку ? В Edit меня это
делать научили : Edit.SetFocus.

WBR Jack
zubr
Цитата
Вопрос : имеем на форме StringGrid. При запуске
приложения левая верхняя ячейка StringGrid оказывается
закрашенной. Когда кликаешь по ячейке, на ней появляется
курсор, а последняя до того бывшая выделенной ячейка
закрашивается.Как ее от этого отучить? Даже при
заполнении ячейки из программы закрашивание не исчезает.
Попытки переключать свойства без толку : или ничего не
меняется, или в ячейку ничего нельзя записать.

В свойстве Options поставь goDrawFocusSelected в False
Цитата
Попутно вопрос : как из программы, без клика мышью,
передать фокус ввода в желаемую ячейку ? В Edit меня это
делать научили : Edit.SetFocus.

СЪимитировать нажатие мыши SendMessage WM_LBUTTONDOWN WM_LBUTTONUP, где в LPARAM указать координаты нужной ячейки.
Barmutik
Присвоить значения Col and Row нужным значениям...
62316e
Цитата
Selection property (TCustomGrid)
Indicates the boundaries of the current selection.
Delphi syntax:
property Selection: TGridRect;
Пример:
//The following code selects the rectangle containing rows 1 through 4, and columns 2 and 3.

procedure TForm1.Button1Click(Sender: TObject);
var
  myRect: TGridRect;
begin
  myRect.Left := 3;
  myRect.Top := 1;
  myRect.Right := 2;
  myRect.Bottom := 4;
  DrawGrid1.Selection := myRect;
end;
zubr
Для: 62316e
Этот пример позволяет только выделить нужные ячейки, но не передать фокус ввода в нужную ячейку.
62316e
Цитата
Для: 62316e
Этот пример позволяет только выделить нужные ячейки, но не передать фокус ввода в нужную ячейку.
Ну а если SetFocus(); после Selection сделать? че не то разве? Или я не понял вопрос.
zubr
Для: 62316e
В примере, что ты выложил не прокатит. Соглашусь если так сделать:
procedure TForm1.Button1Click(Sender: TObject);
var
  myRect: TGridRect;
begin
myRect.Left := 1;
myRect.Top := 1;
myRect.Right := 1;
myRect.Bottom := 1;
StringGrid1.Selection := myRect;
StringGrid1.SetFocus;
end;
Jack_A
[quote name='zubr' date='25:05:2006, 10:14 ' post='36633']
В свойстве Options поставь goDrawFocusSelected в False

Как мертвому припарка - нулевой эффект :-(
Jack_A
...<отменить закраску>
В свойстве Options поставь goDrawFocusSelected в False

Придется, наверное, вручную :
with TStringGrid(sender).CanvasRect do
begin
CurCell := TStringGrid(sender).Cells[Col,Row] :
FontColor := clBlack ;
Brush.Color := ClWhite
end ;
62316e
2zubr: Это было логичноwink.gif В любом случяе в хелпе все написно, включяя что надо SetFocus руками делать после Selection. (Я уже молчю что о Selection тоже в хелпе писаноsmile.gif)
Nika
Откликнитесь, плиз! У меня такая проблема: StringGrid имеет color clblack, font.color=clwhite, в run-time при выделении любой ячейки и попытке внести туда запись ячейка становится белой- в итоге не видно, что вводишь...а если сделать font.color=clblack, то после ввода не видно ничего...В общем, как от белого выделения при внесении данных избавится?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2009 IPS, Inc.