Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > TStringGrid-ввод данных мышкой


Автор: player 13.11.2004, 12:46
Подскажите, как можно реализовать такую штуку- при нажатии левой кнопки мыши на ячейке в нее заноситься "1" , при нажатии правой "0" ? Так как других чисел там не должно быть мне кажеться что это самый оптимальный способ ввода.

Автор: Pakshin A. S. 13.11.2004, 12:50
Попробуй:
Код

procedure TForm1.StringGrid1MouseDown(Sender: TObject;
 Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
 case Button of
  mbLeft: StringGrid1.Cells[StringGrid1.Col, StringGrid1.Row]:='1';
  mbLeft: StringGrid1.Cells[StringGrid1.Col, StringGrid1.Row]:='0';
 end
end;

Автор: player 13.11.2004, 13:14
Отлично! Работает, спасибо!
Еще бы фокус ячейки перемещался, т.е та ячейка которая под курсором получала фокус....
Буду думать....

Автор: p0s0l 13.11.2004, 13:38
Так ?
Код
procedure TForm1.StringGrid1MouseMove(Sender: TObject; Shift: TShiftState;
 X, Y: Integer);
var col, row : integer;
begin
 StringGrid1.MouseToCell(x, y, col, row);
 if (col >= StringGrid1.FixedCols) and (col < StringGrid1.ColCount) then StringGrid1.Col := col;
 if (row >= StringGrid1.FixedRows) and (row < StringGrid1.RowCount) then StringGrid1.Row := row;
end;


Автор: <Spawn> 13.11.2004, 13:49
Цитата(Pakshin @ 13.11.2004, 04:50)
Попробуй:
Код

procedure TForm1.StringGrid1MouseDown(Sender: TObject;
 Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
 case Button of
  mbLeft: StringGrid1.Cells[StringGrid1.Col, StringGrid1.Row]:='1';
  mbLeft: StringGrid1.Cells[StringGrid1.Col, StringGrid1.Row]:='0';
 end
end;

А можно в одну строчкуsmile

Код

procedure TForm1.StringGrid1MouseDown(Sender: TObject;
 Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
 StringGrid1.Cells[StringGrid1.Col, StringGrid1.Row] := IntToStr(Integer(not Boolean(Button)));
end;


Или даже так, если не хочется использовать InToStr:

Код

procedure TForm1.StringGrid1MouseDown(Sender: TObject;
 Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
 StringGrid1.Cells[StringGrid1.Col, StringGrid1.Row] := Chr(Integer(not Boolean(Button)) + 48);
end;

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)