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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.07.2010, 23:50   #1
TwiX
Участник клуба
 
Аватар для TwiX
 
Регистрация: 28.07.2009
Сообщений: 1,510
По умолчанию TStringGrid. Переход в новую ячейку по нажатию кнопки

В моей ситуации в ячейках только цифры, поэтому больше одного символа в ячейчке не должно быть. Я добавлял в OnKeyUp Field.Perform(WM_KEYDOWN, VK_TAB, 0). В принципе нормально, но если зажать кнопку, то будет не то, что нужно. Что можно сделать, что бы было красиво (т.е. добавлять в OnKeyPress проверку на длину не получится)?
TwiX вне форума Ответить с цитированием
Старый 07.07.2010, 07:15   #2
Баламут
Баламучу слегка...
Участник клуба
 
Аватар для Баламут
 
Регистрация: 01.11.2006
Сообщений: 1,585
По умолчанию

Вот навскидку набросал что-то. Дальше уж сам

Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Grids;

type
  TForm1 = class(TForm)
    Grid1: TStringGrid;
    procedure Grid1GetEditText(Sender: TObject; ACol, ARow: Integer;
      var Value: string);
    procedure Grid1KeyPress(Sender: TObject; var Key: Char);
  private
    r, c: integer;
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Grid1GetEditText(Sender: TObject; ACol, ARow: Integer;
  var Value: string);
begin
  r := aRow;
  c := aCol;
end;

procedure TForm1.Grid1KeyPress(Sender: TObject; var Key: Char);
begin
  if Length(Grid1.Cells[c, r]) >= 1 then Key := #0;
end;

end.
Баламут вне форума Ответить с цитированием
Старый 07.07.2010, 08:41   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Я бы написал так:
Код:
procedure TForm1.StringGrid1KeyPress(Sender: TObject; var Key: Char);
begin
with TStringGrid(Sender) do
 if not (key in ['0'..'9'])or(length(Cells[Col,row])=1)
  then key:=#0;
end;
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Переход на новую строку в Memo Лонли-Локли Компоненты Delphi 12 08.01.2021 05:00
Переход на новую строку delphin100 Общие вопросы Delphi 9 31.05.2012 04:52
Переход на новую главу книги. POGONEZ Помощь студентам 2 16.03.2010 20:08
Переход на новую строку в Memo1 )Игнат( Общие вопросы Delphi 2 07.07.2009 20:31
переход курсора по нажатию клавиши matus Общие вопросы Delphi 3 22.11.2007 22:33