Текущий архив: 2011.10.02;
Скачать: CL | DM;
Вниз
Edit и Skrollbar Найти похожие ветки
← →
And7 © (2011-06-14 01:55) [0]Делаю калькулятор. В Edit5.Text отображается вычисление и его результат.
Могут быть случаи когда в Edit5.Text вычисление и его результат не помещается. Для этого решил около Edit5.Text установить компонент SkrollBar1 (Properties-Kind-sbHorizontal) чтоб можно было при необходимости прокрутить SkrollBar1 вручную и увидеть весь текст в Edit5.
Вопрос в том что не знаю какой код и в каком событии SkrollBar1 написать, чтоб при прокручивании SkrollBar1 возможно было видеть весь текст в Edit5.
Не уверен но скорей всего это надо в SkrollBar1-Events-Onchange при двойном клике вписать неизвестный мне код
procedure TForm1.ScrollBar1Change(Sender: TObject);
begin
?
end;
Если возможно - подскажите.
← →
Германн © (2011-06-14 02:17) [1]Заменить TEdit на TMemo - раз плюнуть!
Оба компонента суть одно и тоже.
← →
And7 © (2011-06-14 02:43) [2]Раньше было TMemo.И там была горизонтальная прокрутка.Но я заменил Memo на Edit потому что в Memo не срабатывала клавиша Enter (аналог клавиши "=")
Когда клавишу Enter я нажимаю на компьютере то срабатывает такой код:
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
if (key="=")or (key=#13)then Button15.Click; // нажатие клавиши "="
end;
Так вот в Memo символ #13 то есть Enter не срабатывает. А как заменил на Edit, то Enter заработал.
Пробовал вместо #13 вписать $0D или VK_RETURN .Ничего не работает.
А когда поставил Edit - заработало.
Тут либо ставить скролл для Edit либо что-то придумать с Enter.
← →
Anatoly Podgoretsky © (2011-06-14 07:42) [3]Не нужен "Skrollbar"
← →
sniknik © (2011-06-14 08:08) [4]> Так вот в Memo символ #13 то есть Enter не срабатывает.
KeyDown ?
← →
And7 © (2011-06-15 01:06) [5]Со скролбаром всё понятно.Спасибо. А вот с кнопкой Enter очень интересный получается результат. Перепробовал разные коды для клавиши Enter: #13, OnkeyDown. Но почему-то лучше всего сработал вот этот код:
procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if key=VK_RETURN then Button15.Click; //нажатие на физ.кл. Enter запускает нажатие на "=" кнопки калькулятора.
end;
Причём не имеет значения выводится ли результат в Edit или в Memo (с или без скролбара)-везде работает одинаково.
Но вот что интересное получается.В калькуляторе есть клавиша "очистить"которая равнозначна физической клавише Del на компьютере.
Нажатие Del запускает такой код:
if key=#46 then Button17.Click; //кнопка очищения клавиша Delete
Далее.
Вариант-1: Делаю вычисление.Нажимаю физ.кл."Enter" или "=" -появляется результат.Далее нажимаю на физ.клавишу "Del" всё очищается.Далее опять делаю вычисление.Нажимаю физ.кл."Enter" или "="-появляется результат.
Вариант-2: Делаю вычисление.Нажимаю физ.кл."Enter"-появляется результат.Далее нажимаю на клавишу "очистить" в калькуляторе. всё очищается.Далее опять делаю вычисление.Нажимаю Enter-вместо результата всё очищается (а для того чтобы появился результат в этом случае надо нажать на физ. клавиши Shift+Enter или "=").И далее какие бы вычисления ни делал для вывода результата в этом случае надо нажимать Shift+Enter или "=" но до тех пор пока не нажму на любую (кроме "очистить") из кнопок в калькуляторе (тогда опять результат могу выводить нажатием на "Enter").
Тут либо думаю надо в кнопке "очистить" изменить какие то свойства. Либо вообще зделать её невидимой и просто нажимать на физ.клавишу Del либо на соседнюю кнопку (if key=#08 then Button22.Click; //кн. удаление последнего введённого символа(Beckspace)-работает без проблем,дописав в неё(Button22) возможность сразу полного очищения при определённых условиях.
Так вот возможно ли так изменить свойства кнопки "очистить" чтобы после её нажатия на калькуляторе и следуещем вычислении для вывода результата работала физ.кл."Enter" (а не Shift+Enter)?
И если знаете, то каким образом это можно cделать?
← →
Германн © (2011-06-15 01:19) [6]
> А вот с кнопкой Enter очень интересный получается результат.
Это не с кнопкой Enter интересный результат, это с клавишей Del такая дурная работа.
← →
Германн © (2011-06-15 02:19) [7]
> Это не с кнопкой Enter интересный результат, это с клавишей
> Del такая дурная работа.
>
Точнее с той кнопкой "калькулятора" которая "очистить".
← →
Игорь Шевченко © (2011-06-15 13:15) [8]
> потому что в Memo не срабатывала клавиша Enter (аналог клавиши
> "=")
WantReturns = false
← →
And7 © (2011-06-15 19:43) [9]Спасибо. Поставил в Memo1.-Properties-WantReturns = false.
Но не помогло. Более того заметил следующее:
Если на калькуляторе мышкой выделена например цифра 1 то при нажатии Enter цифра 1 добавляется к второму числу, и выводится результат.
Если на калькуляторе мышкой выделена например цифра 2 то при нажатии Enter цифра 2 добавляется к второму числу, и выводится результат.
и.т.д.
Если выделена мышкой кнопка "очистить" то при нажатии Enter результат очищается.
То есть получается при нажатии Enter вначале выполняется действие выделенной мышкой кнопки в калькуляторе, и далее сразу же активируется кнопка "=" .
procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if key=VK_RETURN then Button15.Click; //нажатие на физ.кл. Enter запускает нажатие на "=" кнопки калькулятора.
end;
Когда я применял вместо FormKeyUp FormKeyDown, то ко второму числу просто добавлялась выделенная мышкой цифра столько раз сколько я нажимал Enter. а результат не выводился.
Так что думаю здесь не с кнопкой "очистить" а с Enter надо что-то придумать. Всё таки удобно для вывода результата нажимать на Enter.
← →
And7 © (2011-06-15 20:30) [10]Если вместо:
procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if key=VK_RETURN then Button15.Click; //нажатие на физ.кл. Enter запускает нажатие на "=" кнопки калькулятора.
end;
поставить:
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
if key=#13 then Button15.Click;
то получается то же что и с
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if key=VK_RETURN then Button15.Click;
end;
Когда я применял FormKeyDown, то ко второму числу просто добавлялась выделенная мышкой цифра столько раз сколько я нажимал Enter. а результат не выводился.
← →
And7 © (2011-06-15 21:03) [11]Причём этот код для физ.клавиши "=" работает точно без глюков.Ничего не добавляет. Выводит чистый результат.
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
if key="="then Button15.Click;
Но вот как нормально задействовать ещё и Enter ?
← →
And7 © (2011-06-17 03:07) [12]Отошёл от названия темы (Edit и Skrollbar) в сторону. Но:
В поисках ответа нашёл кое что похожее:
http://forum.vingrad.ru/topic-136306.html
Для начала думаю заменю все кнопки Button на SpeedButton. Проверил SpeedButton фокус не получает.
if key="1" then SpeedButton1.Click; // это работает
if (key="=")then SpeedButton15.Click; // это работает
procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if key=VK_RETURN then SpeedButton2.Click; // и это работает - выводит правильный результат
Задачу решил.Спасибо всем.
← →
And7 © (2011-06-17 03:09) [13]вернее
procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if key=VK_RETURN then SpeedButton15.Click; // и это работает - выводит правильный результат
Страницы: 1 вся ветка
Текущий архив: 2011.10.02;
Скачать: CL | DM;
Память: 0.51 MB
Время: 0.008 c