Stringgrid

acorn

PHP Developer
29.08.2004
585
3
#1
На форме есть компонент StringGrid. Какое событие отвечает за щелчек на fixed?
 
Z

zubr

Гость
#4
Для: Проходимец
В том то и проблема, что в StringGrid при щелчке на fixed OnClick не возникает.
 
G

Guest_xelaok_*

Гость
#5
Можно так...

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;
 
J

Jack_A

Гость
#6
Привет всем !

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

WBR Jack
 
Z

zubr

Гость
#7
Вопрос : имеем на форме StringGrid. При запуске
приложения левая верхняя ячейка StringGrid оказывается
закрашенной. Когда кликаешь по ячейке, на ней появляется
курсор, а последняя до того бывшая выделенной ячейка
закрашивается.Как ее от этого отучить? Даже при
заполнении ячейки из программы закрашивание не исчезает.
Попытки переключать свойства без толку : или ничего не
меняется, или в ячейку ничего нельзя записать.
В свойстве Options поставь goDrawFocusSelected в False
Попутно вопрос : как из программы, без клика мышью,
передать фокус ввода в желаемую ячейку ? В Edit меня это
делать научили : Edit.SetFocus.
СЪимитировать нажатие мыши SendMessage WM_LBUTTONDOWN WM_LBUTTONUP, где в LPARAM указать координаты нужной ячейки.
 
B

Barmutik

Гость
#8
Присвоить значения Col and Row нужным значениям...
 
6

62316e

Гость
#9
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;
 
Z

zubr

Гость
#10
Для: 62316e
Этот пример позволяет только выделить нужные ячейки, но не передать фокус ввода в нужную ячейку.
 
6

62316e

Гость
#11
Для: 62316e
Этот пример позволяет только выделить нужные ячейки, но не передать фокус ввода в нужную ячейку.
Ну а если SetFocus(); после Selection сделать? че не то разве? Или я не понял вопрос.
 
Z

zubr

Гость
#12
Для: 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;
 
J

Jack_A

Гость
#14
...<отменить закраску>
В свойстве Options поставь goDrawFocusSelected в False

Придется, наверное, вручную :
with TStringGrid(sender).CanvasRect do
begin
CurCell := TStringGrid(sender).Cells[Col,Row] :
FontColor := clBlack ;
Brush.Color := ClWhite
end ;
 
6

62316e

Гость
#15
2zubr: Это было логично:) В любом случяе в хелпе все написно, включяя что надо SetFocus руками делать после Selection. (Я уже молчю что о Selection тоже в хелпе писано;))
 
N

Nika

Гость
#16
Откликнитесь, плиз! У меня такая проблема: StringGrid имеет color clblack, font.color=clwhite, в run-time при выделении любой ячейки и попытке внести туда запись ячейка становится белой- в итоге не видно, что вводишь...а если сделать font.color=clblack, то после ввода не видно ничего...В общем, как от белого выделения при внесении данных избавится?