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


Автор: Аркадий 22.11.2002, 06:43
Как перескакивать с одного Edit в другой по клику клавиши (стрелки вниз), которая находится под клавишей End ?

Что в это процедуре написать ?

procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
 Shift: TShiftState);
begin
ВОТ ЗДЕСЬ чтобы курсор был на втором Edite ?
end;

всего 6 Edit-ов : Edit1,Edit2,Edit3,Edit4,Edit5,Edit6

Чтобы сделать такой цикл Edit1 --> Edit2--> Edit3 --> Edit4 --> Edit5 -->Edit6 --> Edit1

Автор: Vit 22.11.2002, 06:46
Примерно так:

Код

procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
Var i:integer;
begin
 if (Sender is TEdit) and (Key=vk_Down) then
   begin
     i:=strtoint(copy((Sender as TEdit).name,5,1));
     if i=6 then i:=1 else inc(i);
     (FindComponent('Edit'+inttostr(i)) as TEdit).setfocus;
   end;
end;


Не забудь поставить это событие на все Edit


Автор: Аркадий 22.11.2002, 07:18
Что то не получилось :( Написал:

procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
 Shift: TShiftState);
 var i:integer;
begin
if (Sender is TEdit) and (Key=vk_Down) then
  begin
    i:=strtoint(copy((Sender as TEdit).name,5,1));
    if i=6 then i:=1 else inc(i);
    (FindComponent('Edit'+inttostr(i)) as TEdit).setfocus;
  end;

end;
ПОТОМ

procedure TForm1.Edit2KeyDown(Sender: TObject; var Key: Word;
 Shift: TShiftState);
 var i:integer;
begin
   if (Sender is TEdit) and (Key=vk_Down) then
  begin
    i:=strtoint(copy((Sender as TEdit).name,5,1));
    if i=6 then i:=1 else inc(i);
    (FindComponent('Edit'+inttostr(i)) as TEdit).setfocus;
  end;
end;

и так до procedure TForm1.Edit6KeyDown(Sender: TObject; var Key: Word;
 Shift: TShiftState);

и никакого результата !!!! :( Кстати я ещё должен вбивать в Edit цифры для расчёта

Автор: Medved 22.11.2002, 07:28
Вот не поленился, попробывал, все работает!  Что то ты значит неправильно делаешь? /А ты вообще в Дельфи работаешь? :-)/

Может ты в свойствах компонентов не привязал процедуры к визуальным компонентам? (двойной щелчок по свойству OnKeyDown на вкладке Events в Object Inspector, на каждом из шести Edit`ов)

Автор: Vit 22.11.2002, 07:37
1) Ставишь свои грешные 6 Edit на форму, смотри не переименовывай их.
2) Нажимаешь Shift, не отпуская его выделяешь все 6 Edit
3) Переходишь на Object Inspector и делаешь двойной щелчёк на событии OnKeyDown
4) В открывшемся коде меняешь процедуру на мою - она будет работать для всех Edit одновременно, нечего плодить код...

Автор: Аркадий 22.11.2002, 08:00
Примного благодарен :) Спасибо всё получилось !!!!

Автор: Vit 22.11.2002, 08:05
Цитата(Guest @ 21.11.2002, 15:00)
Примного благодарен :) Спасибо всё получилось !!!!

А теперь попытайся понять что именно делает этот код - вынесешь много интересного. Не стесняйся спрашивать...

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