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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.08.2008, 01:12   #1
Максим_Леонидович
Пользователь
 
Регистрация: 22.07.2008
Сообщений: 49
По умолчанию вопрос по setFocus

У меня такая ситуация.
при нажатии на энтер, я перемещаюсь по Едит текст.
В некоторых из них при визуализации формы был изначально заложен некоторый текст. однако при переходе фокуса на новое поле Едиттекст этот заложенный текст исчезает.
Если же я перемещаюсь по клавише таб, что не удобно, то все нормально.
Подскажите в чем причина?
Максим_Леонидович вне форума Ответить с цитированием
Старый 25.08.2008, 01:15   #2
Ozerich
Студент 1 курса
Форумчанин Подтвердите свой е-майл
 
Аватар для Ozerich
 
Регистрация: 27.06.2008
Сообщений: 959
По умолчанию

Не могу сказать в чем проблема.Так как не вижу кода.
А как вариант если перед SetFocus запомнить текст в едите а после его туда записать?
C++(STL, QT, WinInet) / DHTML(CSS) / JavaScript / PHP Developer
Ozerich вне форума Ответить с цитированием
Старый 25.08.2008, 01:42   #3
Максим_Леонидович
Пользователь
 
Регистрация: 22.07.2008
Сообщений: 49
По умолчанию

Код:
procedure TForm4.FormShow(Sender: TObject);
begin

Form4.DBEdit_Polis_komp.Text := 'РОСНО-МС';
Form4.DBEdit_Polis_ser.Text := '00004';
Form4.DBCheckBox1.Checked:=true;

end;

procedure TForm4.DBEdit_Polis_kompKeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
    if Key = 13 then
    DBEdit_Polis_ser.SetFocus;
end;

procedure TForm4.DBEdit_Polis_serKeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
   if Key = 13 then
   DBEdit_Polis_num.SetFocus;
end;
Наверно лучше вставлять стандартное значение при исполнении процедуры сразу после передачи фокуса?
Максим_Леонидович вне форума Ответить с цитированием
Старый 25.08.2008, 13:26   #4
Jupiter
Пользователь Подтвердите свой е-майл
 
Регистрация: 26.03.2008
Сообщений: 42
По умолчанию

Попробуйте так:
Код:
type
  TForm1 = class(TForm)
    DBEdit_Polis_ser: TEdit;
    DBEdit_Polis_komp: TEdit;
    DBCheckBox1: TCheckBox;
    DBEdit_Polis_num: TEdit;
    procedure FormCreate(Sender: TObject);
    procedure DBEdit_Polis_kompKeyPress(Sender: TObject; var Key: Char);
    procedure DBEdit_Polis_serKeyPress(Sender: TObject; var Key: Char);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
Form1.DBEdit_Polis_komp.Text := 'РОСНО-МС';   
Form1.DBEdit_Polis_ser.Text := '00004';
Form1.DBCheckBox1.Checked := True; 
end;


procedure TForm1.DBEdit_Polis_kompKeyPress(Sender: TObject; var Key: Char);
begin

  If Key = #13 Then
  DBEdit_Polis_ser.SetFocus;
end;

procedure TForm1.DBEdit_Polis_serKeyPress(Sender: TObject; var Key: Char);
begin
  If Key = #13 Then
  DBEdit_Polis_num.SetFocus;
end;
Всё работает, текст при переходе фокуса не исчезает.
Jupiter вне форума Ответить с цитированием
Старый 25.08.2008, 20:15   #5
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Код:
procedure TForm1.DBEdit_Polis_serKeyPress(Sender: TObject; var Key: Char);
begin
  If Key = #13 Then
  DBEdit_Polis_num.SetFocus;
end;

текст модет исчезать  если при нажатии текст в окне  был выделен 
seltext:=1; seellength= length(text)
такое бывает входе в окно (setfocus)

чтобы этого (потери текста) не происходило в обработчик добавьте 
  key:=#0; 

procedure TForm1.DBEdit_Polis_serKeyPress(Sender: TObject; var Key: Char);
begin
  If Key = #13 Then
  DBEdit_Polis_num.SetFocus;
  key:=0;
end;
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось Stilet; 26.08.2008 в 10:09.
evg_m вне форума Ответить с цитированием
Старый 25.08.2008, 21:48   #6
Jupiter
Пользователь Подтвердите свой е-майл
 
Регистрация: 26.03.2008
Сообщений: 42
По умолчанию

Цитата:
текст модет исчезать если при нажатии текст в окне был выделен
seltext:=1; seellength= length(text)
такое бывает входе в окно (setfocus)
С таким ещё не сталкивался.

Цитата:
procedure TForm1.DBEdit_Polis_serKeyPress(Sen der: TObject; var Key: Char);
begin
If Key = #13 Then
DBEdit_Polis_num.SetFocus;
key:=0;
end;
А так редактировать едит не получится.

Mожет так?:
Код:
procedure TForm1.DBEdit_Polis_serKeyPress(Sender: TObject; var Key: Char);
begin

  If Key = #13 Then
  begin
  DBEdit_Polis_num.SetFocus;
  Key := 0;
  end;
end;
И всё равно немогу понять, как строка может исчезнуть при нажатии на Enter???

Только что проверил - без Key := 0;, и ничего не исчезает.
Нет здесь кода удаляющего строку.

Последний раз редактировалось Jupiter; 25.08.2008 в 21:56. Причина: Добавление
Jupiter вне форума Ответить с цитированием
Старый 28.08.2008, 22:21   #7
Максим_Леонидович
Пользователь
 
Регистрация: 22.07.2008
Сообщений: 49
По умолчанию

Большое спасибо всем. Разобрался.
Максим_Леонидович вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопрос наверное про функции, а так точно даже не знаю про что. (Вопрос начинющего #6) Albert2008 Общие вопросы Delphi 4 21.08.2008 15:33
вопрос по сокетам и общение как в ICQ.Сложный вопрос... Руслантус Общие вопросы C/C++ 2 12.08.2008 21:10
SetFocus!!!Нужен ответ!Творится,что-то непонятное!!! Alexij Общие вопросы Delphi 4 14.06.2008 14:59
Вопрос VBA tat-besidovska Microsoft Office Excel 1 04.02.2008 10:49
TEdit - перенос текста, SetFocus Аббат Помощь студентам 10 23.04.2007 16:47