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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.04.2011, 18:24   #1
vykker
Пользователь
 
Регистрация: 14.05.2010
Сообщений: 52
По умолчанию delphi.нужен edit2

подскажите пожалуйста как сделать едит2.текст чтобы при переходе на него можно было вводить с экранной клавиатуры так же как и в 1ый эдит??

ето вроде получился калькулятор с клавиатурой, нужен еще едит2 чтобы в него можно было вводить данные с этойже клавиатуры


Код:

procedure Tcalc.BitBtn1Click(Sender: TObject);
begin
edit1.text:=edit1.Text+'1';
end;

procedure Tcalc.BitBtn2Click(Sender: TObject);
begin
edit1.text:=edit1.Text+'2';
end;

procedure Tcalc.BitBtn9Click(Sender: TObject);
begin
edit1.text:=edit1.Text+'3';
end;

procedure Tcalc.BitBtn8Click(Sender: TObject);
begin
edit1.text:=edit1.Text+'4';
end;

procedure Tcalc.BitBtn7Click(Sender: TObject);
begin
edit1.text:=edit1.Text+'5';
end;

procedure Tcalc.BitBtn10Click(Sender: TObject);
begin
edit1.text:=edit1.Text+'6';
end;

procedure Tcalc.BitBtn3Click(Sender: TObject);
begin
edit1.text:=edit1.Text+'7';
end;

procedure Tcalc.BitBtn5Click(Sender: TObject);
begin
edit1.text:=edit1.Text+'8';
end;

procedure Tcalc.BitBtn6Click(Sender: TObject);
begin
edit1.text:=edit1.Text+'9';
end;

procedure Tcalc.BitBtn11Click(Sender: TObject);
begin
edit1.text:=edit1.Text+'0';
end;

procedure Tcalc.BitBtn4Click(Sender: TObject);
begin
edit1.text:=edit1.Text+'.';
end;

procedure Tcalc.BitBtn17Click(Sender: TObject);
begin
edit1.Clear;

end;

procedure Tcalc.BitBtn13Click(Sender: TObject);
begin
      x:=strtofloat(edit1.Text);
      edit1.clear;
      n:=1;
end;

procedure Tcalc.BitBtn12Click(Sender: TObject);
begin
if edit1.Text=''then y:=0 //edit1.Text:='0';
   else y:=strtofloat(edit1.Text);
    case n of
    1: z:=x+y;
    2:z:=x-y;
    3:z:=x*y;
    4:z:=x/y;
    end;
    edit1.Text:=floattostr(z);
end;

procedure Tcalc.BitBtn14Click(Sender: TObject);
begin
x:=strtofloat(edit1.Text);
      edit1.clear;
      n:=2;
end;

procedure Tcalc.BitBtn15Click(Sender: TObject);
begin
    x:=strtofloat(edit1.Text);
      edit1.clear;
      n:=3;
end;

procedure Tcalc.BitBtn16Click(Sender: TObject);
begin
x:=strtofloat(edit1.Text);
      edit1.clear;
      n:=4;
end;

procedure Tcalc.Button1Click(Sender: TObject);
begin
edit1.text:=floattostr(strtofloat(edit1.text)*(-1));
end;

procedure Tcalc.Button2Click(Sender: TObject);
begin
a:=strtofloat(edit1.text);
a:=sqr(a);
edit1.text:=floattostr(a);
end;

procedure Tcalc.Button3Click(Sender: TObject);
begin
a:=strtofloat(edit1.text);
a:=sqrt(a);
edit1.text:=floattostr(a);
end;
vykker вне форума Ответить с цитированием
Старый 06.04.2011, 17:41   #2
GetMax
Форумчанин
 
Регистрация: 21.10.2010
Сообщений: 588
По умолчанию

Цитата:
нужен еще едит2 чтобы в него можно было вводить данные с этойже клавиатуры
Для этого вам нужно отслеживать в каком из эдитов находится фокус. Сделать это можно так(обработчики Edit1Click и Edit2Click):
Код:
var
  Form1: TForm1;
  Focus1,Focus2:Boolean;

implementation

{$R *.dfm}

procedure TForm1.FormActivate(Sender: TObject);
begin
  Focus1:=True;
  Focus2:=False;
  Edit1.Clear;
  Edit2.Clear
end;

procedure TForm1.Edit1Click(Sender: TObject);
begin
  Focus1:=True;
  Focus2:=False;
end;

procedure TForm1.Edit2Click(Sender: TObject);
begin
  Focus2:=True;
  Focus1:=False
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  If Focus1 = True then Edit1.Text:=Edit1.Text+'1';
  If Focus2 = True then Edit2.Text:=Edit2.Text+'1'
end;
И так для каждой кнопки с цифрой. Чтобы переместить фокус из одного эдита в другой, нужно просто кликнуть по нужному.
Пользователь не знает, чего он хочет, пока не увидит то, что он получил.
Для благодарностей WMR R145235935681
GetMax вне форума Ответить с цитированием
Старый 06.04.2011, 18:01   #3
vykker
Пользователь
 
Регистрация: 14.05.2010
Сообщений: 52
По умолчанию

спасибо, буду пробовать
vykker вне форума Ответить с цитированием
Старый 06.04.2011, 19:06   #4
Zer0
Форумчанин
 
Аватар для Zer0
 
Регистрация: 13.12.2007
Сообщений: 788
По умолчанию

при переходе Tab-ом к примеру такой вариант не сработает, лучше используйте событие OnEnter, нежели OnClick
плюс можно оптимизировать процедуры нажатия на кнопочки: каждой кнопке присвоить Tag (к примеру для данного случая от 0 до 10), задать переменную шаблоном и потом на такие кнопки повесить одно событие:

Код:
const Templ='1234567890.';

procedure TForm1.MyBtnClick(Sender: TObject);
var res:char;
begin
  res:=Templ[(Sender as TButton).Tag];
  If Focus1 = True then Edit1.Text:=Edit1.Text+res;
  If Focus2 = True then Edit2.Text:=Edit2.Text+res;
end;
благодарность - сюда (не забываем писать от кого)
Zer0 вне форума Ответить с цитированием
Старый 12.04.2011, 18:38   #5
vykker
Пользователь
 
Регистрация: 14.05.2010
Сообщений: 52
По умолчанию

Вот что мне надо было, ну практически все, помогите пожалуйста оптимизировать, если вам не трудно

Код:
procedure Tcalc.Edit1Click(Sender: TObject);
begin
    Focus:=True;
end;

procedure Tcalc.Edit2Click(Sender: TObject);
begin
   Focus:=False;

end;

procedure Tcalc.BitBtn1Click(Sender: TObject);
begin
  If Focus then Edit1.Text:=Edit1.Text+'1'
 else Edit2.Text:=Edit2.Text+'1'
 end;

procedure Tcalc.BitBtn2Click(Sender: TObject);
begin
 If Focus then Edit1.Text:=Edit1.Text+'2'
 else Edit2.Text:=Edit2.Text+'2'
     end;

procedure Tcalc.BitBtn9Click(Sender: TObject);
begin
 If Focus then Edit1.Text:=Edit1.Text+'3'
 else Edit2.Text:=Edit2.Text+'3'
end;

procedure Tcalc.BitBtn8Click(Sender: TObject);
begin
  If Focus then Edit1.Text:=Edit1.Text+'4'
 else Edit2.Text:=Edit2.Text+'4'
end;

procedure Tcalc.BitBtn7Click(Sender: TObject);
begin
   If Focus then Edit1.Text:=Edit1.Text+'5'
   else Edit2.Text:=Edit2.Text+'5'
end;

procedure Tcalc.BitBtn10Click(Sender: TObject);
begin
   If Focus then Edit1.Text:=Edit1.Text+'6'
   else Edit2.Text:=Edit2.Text+'6'
end;

procedure Tcalc.BitBtn3Click(Sender: TObject);
begin
  If Focus then Edit1.Text:=Edit1.Text+'7'
  else Edit2.Text:=Edit2.Text+'7'
end;

procedure Tcalc.BitBtn5Click(Sender: TObject);
begin
 If Focus then Edit1.Text:=Edit1.Text+'8'
 else Edit2.Text:=Edit2.Text+'8'
end;

procedure Tcalc.BitBtn6Click(Sender: TObject);
begin
 If Focus then Edit1.Text:=Edit1.Text+'9'
 else Edit2.Text:=Edit2.Text+'9'
end;

procedure Tcalc.BitBtn11Click(Sender: TObject);
begin
  If Focus then Edit1.Text:=Edit1.Text+'0'
 else Edit2.Text:=Edit2.Text+'0'
end;

procedure Tcalc.BitBtn17Click(Sender: TObject);
begin
If Focus then edit1.Clear
else edit2.Clear;
end;


procedure Tcalc.FormCreate(Sender: TObject);
begin
    Focus:=True;

  Edit1.Clear;
  Edit2.Clear;
end;

procedure Tcalc.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
   if not (key in['0'..'9',#8]) then
  begin
    showmessage('Òîëüêî öåëûå ÷èñëà');
    key:=#8;
  end;
end;

procedure Tcalc.Edit2KeyPress(Sender: TObject; var Key: Char);
begin
 if not (key in['0'..'9',#8]) then
  begin
    showmessage('Òîëüêî öåëûå ÷èñëà');
    key:=#8;
  end;
end;





procedure Tcalc.Button1Click(Sender: TObject);
begin
      label3.Color:=clRed;
      if (edit1.text='')or(edit2.text='')
    then
       showMessage('ââåäè äàííûå')
    else
      begin
      edit3.Clear;
        a:=strtofloat(edit1.Text);
             x2:=0;
             begin
             x2:=a+2;
             end;

            Edit3.Text:=Edit3.Text+FloatToStr(x2);
          end;
      
          begin
       edit4.Clear;
        b:=strtofloat(edit2.Text);
             y2:=0;
             begin
             y2:=b+2;
             Edit4.Text:=Edit4.Text+FloatToStr(y2);
          end;
                  begin
                  edit5.Clear;
                  a:=strtofloat(edit1.Text);
                  x3:=0;
                  end;
                    begin
                    x3:=a*2;
                    Edit5.Text:=Edit5.Text+FloatToStr(x3);
                     end;
                     end;

        begin
        edit6.Clear;
        b:=strtofloat(edit2.Text);
             y3:=0;
             begin
             y3:=b*2;
             Edit6.Text:=Edit6.Text+FloatToStr(y3);
          end;
          end;
    end;

end.
vykker вне форума Ответить с цитированием
Старый 12.04.2011, 19:02   #6
Сtrl
C++
Форумчанин
 
Аватар для Сtrl
 
Регистрация: 27.03.2011
Сообщений: 803
По умолчанию

Криво, криво, криво!
Делаете переменную:
Код:
FocusedEdit: TEdit;
В событии OnEnter всем нужным объектам TEdit, размещенным на форме, прописываете один метод:
Код:
procedure TForm1.EditEnter(Sender: TObject);
begin
  FocusedEdit := (Sender as TEdit);
  {showmessage(FocusedEdit.Text);}
end;
В кнопках калькулятора просто делаете так:
Код:
FocusedEdit.Text := ... //тут нужное значение
Ищете информацию по C++?
cplusplus.com

Последний раз редактировалось Сtrl; 12.04.2011 в 19:05.
Сtrl вне форума Ответить с цитированием
Старый 14.04.2011, 16:51   #7
vykker
Пользователь
 
Регистрация: 14.05.2010
Сообщений: 52
По умолчанию

не очень понял с онЕнтер, как это написать?
vykker вне форума Ответить с цитированием
Старый 14.04.2011, 17:49   #8
Сtrl
C++
Форумчанин
 
Аватар для Сtrl
 
Регистрация: 27.03.2011
Сообщений: 803
По умолчанию

В Object Inspector выбираете вкладку Events, там должно быть событие OnEnter.
Ищете информацию по C++?
cplusplus.com
Сtrl вне форума Ответить с цитированием
Старый 14.04.2011, 17:52   #9
vykker
Пользователь
 
Регистрация: 14.05.2010
Сообщений: 52
По умолчанию

не в этом смысле, как конкретно и для чего его прописать, те конкретно для чего прописать
vykker вне форума Ответить с цитированием
Старый 14.04.2011, 17:55   #10
Сtrl
C++
Форумчанин
 
Аватар для Сtrl
 
Регистрация: 27.03.2011
Сообщений: 803
По умолчанию

Просто введите туда название метода, который должен выполняться при данном событии. В нашем случае это метод EditEnter.
Ищете информацию по C++?
cplusplus.com
Сtrl вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как скопировать текст с Edit1 в Edit2 amator_roma Компоненты Delphi 14 03.12.2010 12:32
Как скопировать текст с Edit1 в Edit2 amator_roma Помощь студентам 2 02.12.2010 15:44
Если занят Edit1, то текст запишется в Edit2 Asblue Помощь студентам 3 02.12.2010 03:42
Посыл текста edit2 чужой проге? Semechka Общие вопросы Delphi 4 29.12.2008 09:41