ОБСУЖДЕНИЕ

Stringgrid

15 ответов 13,3 тыс.
AI-выжимка обсуждения скоро

Краткие тезисы обсуждения со ссылками на ключевые ответы появятся здесь.

Автор темы
На форме есть компонент StringGrid. Какое событие отвечает за щелчек на fixed?
 
OnMouseDown, OnMouseUp
 
Вообще за Click отвечает событие OnClick!
 
Для: Проходимец
В том то и проблема, что в StringGrid при щелчке на fixed OnClick не возникает.
 
Можно так...

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;
 
Привет всем !

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

WBR Jack
 
Вопрос : имеем на форме StringGrid. При запуске
приложения левая верхняя ячейка StringGrid оказывается
закрашенной. Когда кликаешь по ячейке, на ней появляется
курсор, а последняя до того бывшая выделенной ячейка
закрашивается.Как ее от этого отучить? Даже при
заполнении ячейки из программы закрашивание не исчезает.
Попытки переключать свойства без толку : или ничего не
меняется, или в ячейку ничего нельзя записать.
В свойстве Options поставь goDrawFocusSelected в False
Попутно вопрос : как из программы, без клика мышью,
передать фокус ввода в желаемую ячейку ? В Edit меня это
делать научили : Edit.SetFocus.
СЪимитировать нажатие мыши SendMessage WM_LBUTTONDOWN WM_LBUTTONUP, где в LPARAM указать координаты нужной ячейки.
 
Присвоить значения Col and Row нужным значениям...
 
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;
 
Для: 62316e
Этот пример позволяет только выделить нужные ячейки, но не передать фокус ввода в нужную ячейку.
 
Для: 62316e
Этот пример позволяет только выделить нужные ячейки, но не передать фокус ввода в нужную ячейку.
Ну а если SetFocus(); после Selection сделать? че не то разве? Или я не понял вопрос.
 
Для: 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;
 
...<отменить закраску>
В свойстве Options поставь goDrawFocusSelected в False

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