Помощь - Поиск - Пользователи - Календарь
Полная версия: Калькулятор
Форум «Всё о Паскале» > Delphi, Assembler и другие языки. > Delphi
Catty
rolleyes.gif я только вотъ начала осваивать делфи, нам задали сделать калькулятор, я почти доделала только вот такая проблемма : нужно разработать кнопку Backspace(удаляет последнюю цифру)
я написала так
Код

s:=Edit1.text;
Delete(s,length(s),1);

почему-то никак не реагирует... huh.gif
и еще вопрос как можно сделать, что бы цифры вводились не с начала строки, а с конца(как в стандартном калкуляторе Windows)??
volvo
Цитата(Catty @ 19.03.05 15:18)
почему-то никак не реагирует...

Ну, скорее всего, потому что ты забыла вернуть измененное значение назад в Edit1:
Код
s:=Edit1.text;
Delete(s,length(s),1);
Edit1.text := s;
Catty
!! lol.gif
спасибо!
а как начсет второго вопроса?
И еще вопрос:
Заголовок обработчина для события OnKeyDown
Допустим я хочу что бы при нажатии клавиши Backspace на клаве, срабатывала кнопка на калькуляторе. В книге я прочла что нужно сделать что то вроде этого, вот только не знаю, как перейти к определенной кнопке, что нуно поставить вместо ".........."
Код

procedure TForm1.Edit1Mouseup(Sender: TObject; var Key:word;Shift:TShiftState);
begin
if (Key=8) then
...............
end;

:flowers:
volvo
Цитата
как можно сделать, что бы цифры вводились не с начала строки, а с конца(как в стандартном калкуляторе Windows)??

Для этого можешь пользоваться вот такой процедурой:
Код
procedure RJustifyEdit(var ThisEdit : TEdit);
var
 Left, Width : Integer;
 GString : String;
 Rgn : TRect;
 TheCanvas : TControlCanvas;
begin
 TheCanvas := TControlCanvas.Create;
 try
   TheCanvas.Control := ThisEdit;
   GString := ThisEdit.Text;
   Rgn := ThisEdit.ClientRect;
   TheCanvas.FillRect(Rgn);
   Width := TheCanvas.TextWidth(GString);
   Left := Rgn.Right - Width - 1;
   TheCanvas.TextRect(Rgn, Left, 0, GString);
 finally
   TheCanvas.Free;
 end;
end;
...
// Вот так можешь вызывать:
procedure TForm1.bspsClick(Sender: TObject);
begin
  s:=Edit1.text;
  Delete(s,length(s),1);
  Edit1.text := s;
  RJustifyEdit(Edit1)
end;
...


Цитата(Catty @ 19.03.05 16:55)
Допустим я хочу что бы при нажатии клавиши Backspace на клаве, срабатывала кнопка на калькуляторе.

Наверное, вот так (только не забудь установить для формы KeyPreview := True):
Код
procedure TForm1.bspsClick(Sender: TObject);
 begin
   s:=Edit1.text;
   Delete(s,length(s),1);
   Edit1.text := s;
 end;
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
 if key = #8 then bspsClick(sender);
end;
Catty
пасибо! :flowers:
P@sh@
Catty
а зачем вообще TEdit использовать? если вводить цифры с помощью кнопочек, то лучше поставить обычный TLabel, а еще лучше TStaticText - его и оформить покрасивее можно и выравнивание вправо есть
а для кнопочек на форме удобно использовать ActionList с "горячими клавишами"
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.