1 (edited by spravka2004 2017-03-20 20:08:44)

Topic: Ошибка в новой версии программы.

Есть маленькая ошибка в новой сборке программы. Возможно она связана с Windows 10. При редактировании TextBox при прокрутке меню появляется сообщение об ошибке и поле выбора уходит в "бесконечность"... скрин прилагаю http://poteryan.ru/news/data/upimages/avargin/snimok-ekrana-32.png

Re: Ошибка в новой версии программы.

К сожалению не могу повторить ошибку. Опишите пожалуйста подробней пошаговые действия приводящие к ошибке.


Также не совсем ясно, что значит "При редактировании TextBox при прокрутке меню"

Dmitry.

Re: Ошибка в новой версии программы.

Last_Insert_id () в версии 3.3 при компиляции ругается!

Re: Ошибка в новой версии программы.

delphinsl wrote:

Last_Insert_id () в версии 3.3 при компиляции ругается!

Используйте эту функцию без параметра, т.е. вместо

Last_Insert_id('tablename');

так

Last_Insert_id;


как позже выяснилось, эта функция игнорирует параметр, т.е. возвращает id последней добаленной записи, но неизвестно, в какую таблицу была добавлена запись, поэтому используйте эту функцию только непосредственно после использования вставки записи, чтобы можно было быть уверенным, что функция вернет id от необходимой таблицы БД.

Dmitry.

Re: Ошибка в новой версии программы.

Дмитрий, а нельзя как то это исправить, вернуть как было?

Re: Ошибка в новой версии программы.

delphinsl wrote:

Дмитрий, а нельзя как то это исправить, вернуть как было?

Что именно исправить? Параметр этой функции всегда игнорировался, тем самым вводил в заблуждение, что функция вернет id именно указанной таблицы.

Dmitry.

Re: Ошибка в новой версии программы.

при запуске программы в версии 3.3. возникает такая ошибка:

Post's attachments

Attachment icon ошибка.jpg 24.6 kb, 325 downloads since 2017-03-28 

Re: Ошибка в новой версии программы.

delphinsl wrote:

при запуске программы в версии 3.3. возникает такая ошибка:

Приложите пожалуйста ваш проект.

Dmitry.

Re: Ошибка в новой версии программы.

Возникает такая неприятность при работе с программой. При изменении размера шрифта с мелкого(100%) на средний(125%) в настройках Windows 7, в программе почему-то перемещаются объекты со своих мест и шрифт становится жирным!??? Проверялось не на одном компьютере. В чем причина?

Re: Ошибка в новой версии программы.

delphinsl wrote:

Возникает такая неприятность при работе с программой. При изменении размера шрифта с мелкого(100%) на средний(125%) в настройках Windows 7, в программе почему-то перемещаются объекты со своих мест и шрифт становится жирным!??? Проверялось не на одном компьютере. В чем причина?

В принципе в этом суть увеличения системного шрифта. Он становится больше, увеличиваются в том числе и компоненты.
Приложите пожалуйста скриншот, как это выглядит у вас.

Dmitry.

Re: Ошибка в новой версии программы.

Вот что на экране

Post's attachments

Attachment icon Безымянный.png 179.86 kb, 292 downloads since 2017-11-21 

Re: Ошибка в новой версии программы.

Вот как это выглядит на экране

Post's attachments

Attachment icon Безымянный.png 179.86 kb, 289 downloads since 2017-11-21 

Re: Ошибка в новой версии программы.

Поправил, скачайте пожалуйста снова последнюю версию программы
http://myvisualdatabase.com/download/myvisualdb.exe


Также для формы появилось новое свойство Scaled, определяющее будут ли компоненты на форме масштабироваться в зависимости от системных настроек пользователя.

Dmitry.

Re: Ошибка в новой версии программы.

Дмитрий, в версии 4.05 появилась та же ошибка, описанная в сообщении от  2017-11-20 12:25:13

Re: Ошибка в новой версии программы.

delphinsl wrote:

Дмитрий, в версии 4.05 появилась та же ошибка, описанная в сообщении от  2017-11-20 12:25:13

приложите пожалуйста ваш проект, протестирую.

Dmitry.

Re: Ошибка в новой версии программы.

Проект выслал на почту

Re: Ошибка в новой версии программы.

delphinsl wrote:

Проект выслал на почту

Для компонентов расположенных в GroupBox не нужно менять свойство Anchors, т.е. например для компонентов DateTimePicker2 и Button16 установите Anchors = Left,Top

Dmitry.

Re: Ошибка в новой версии программы.

Спасибо!

Re: Ошибка в новой версии программы.

Обнаружилась ошибка в работе скрипта VK_fixed2.zip после компиляции в версии программы 4.XX
(в версии 2.8 компилируется и работает нормально).
Скрипт был взят из темы: My Visual Database → Russian → Виртуальная клавиатура
При нажатии на цифровую кнопку на форме появляется ошибка

https://b.radikal.ru/b02/1712/74/22a37dd6bb53.png

Re: Ошибка в новой версии программы.

Подправил код

procedure Form2_bt1_OnClick (Sender: string; Action: string);
begin
    if CurrentCtrl is TdbEdit then
        TdbEdit(CurrentCtrl).Text := TdbEdit(CurrentCtrl).Text + TdbButton(Form2.FindComponent(Sender)).Caption;

    if CurrentCtrl is TdbMemo then
        TdbMemo(CurrentCtrl).Text := TdbMemo(CurrentCtrl).Text + TdbButton(Form2.FindComponent(Sender)).Caption;
end;

на

procedure Form2_bt1_OnClick (Sender: string; Action: string);
begin
    if CurrentCtrl is TdbEdit then
        TdbEdit(CurrentCtrl).Text := TdbEdit(CurrentCtrl).Text + TdbButton(Sender).Caption;

    if CurrentCtrl is TdbMemo then
        TdbMemo(CurrentCtrl).Text := TdbMemo(CurrentCtrl).Text + TdbButton(Sender).Caption;
end;

Не знаю правильно это или нет, но работает.

---
Ещё случайно наткнулся на баг при работе в редакторе скриптов.

Если в строковом выражении последняя буква 'я', то ломается дальнейшая подсветка синтаксиса.
https://c.radikal.ru/c43/1712/98/98b98ad084e6.png

Чтобы не портилась подсветка можно после буквы поставить пробел 'я ' или использовать костыль

ShowMessage('Информаци'#1103);

Не фонтан, но действует.

Re: Ошибка в новой версии программы.

можете прикрепить проект для изучения?

Re: Ошибка в новой версии программы.

Всем привет немного доработал проект добавил раскладку + подскажите как сделать кнопку LANG в переключение раскладки с англиской на русскую

Post's attachments

Attachment icon VK_text.rar 294.39 kb, 133 downloads since 2022-07-19 

Re: Ошибка в новой версии программы.

Виртуальная клавиатура симпатичная вышла, хотя я не представляю, как можно на компе без реальной клавиатуры )))
Переключение раскладки - это замена всех заголовков на кнопках с буквами. Так как никакой логики в названии кнопок нет, то нужно выполнить 33 команды вида

Form2.Button1.Caption := 'Й'

Но у меня встречный вопрос: в каких случаях используется эта клавиатура? Кроме того, я бы не рекомендовал любые символы использовать для логина/пароля, особенно для пароля. Есть специальный стандарт ISO, который это регулирует, потому что очень легко спутать 0 и О, 1 и  l и так далее.

Визуальное программирование: блог и телеграм-канал.

Re: Ошибка в новой версии программы.

Ну согласен! Но вот для терминала какого нибудь вообщем я разобрался как сделать клавиатуру. Регистры сделал по типу видимости кнопок вообщем кому интересно вот скрипт

P.S Извиняюсь за токую длину
procedure Form2_OnShow (Sender: TObject; Action: string);
begin
      Form2.Button36.Click;
end;

procedure Form2_Button143_OnClick (Sender: TObject; var Cancel: boolean);
begin
      //Вкл видимость нижнего регистра ENG
      Form2.Button142.Visible :=True; //Й
      Form2.Button111.Visible :=True; //Ц
      Form2.Button112.Visible :=True; //У
      Form2.Button113.Visible :=True; //К
      Form2.Button114.Visible :=True; //Е
      Form2.Button115.Visible :=True; //Н
      Form2.Button116.Visible :=True; //Г
      Form2.Button117.Visible :=True; //Ш
      Form2.Button118.Visible :=True; //Щ
      Form2.Button119.Visible :=True; //З
      Form2.Button120.Visible :=True; //Х
      Form2.Button131.Visible :=True; //Ф
      Form2.Button130.Visible :=True; //Ы
      Form2.Button129.Visible :=True; //В
      Form2.Button128.Visible :=True; //А
      Form2.Button127.Visible :=True; //П
      Form2.Button126.Visible :=True; //Р
      Form2.Button125.Visible :=True; //О
      Form2.Button124.Visible :=True; //Л
      Form2.Button123.Visible :=True; //Д
      Form2.Button122.Visible :=True; //Ж
      Form2.Button121.Visible :=True; //Э
      Form2.Button141.Visible :=True; //Я
      Form2.Button140.Visible :=True; //Ч
      Form2.Button139.Visible :=True; //С
      Form2.Button138.Visible :=True; //М
      Form2.Button137.Visible :=True; //И
      Form2.Button136.Visible :=True; //Т
      Form2.Button135.Visible :=True; //Ь
      Form2.Button134.Visible :=True; //Б
      Form2.Button133.Visible :=True; //Ю
      Form2.Button132.Visible :=True; //Ъ
        //Убираем видимость RUS
      Form2.Button11.Visible :=False; //й
      Form2.Button55.Visible :=False; //ц
      Form2.Button54.Visible :=False; //у
      Form2.Button53.Visible :=False; //к
      Form2.Button52.Visible :=False; //е
      Form2.Button51.Visible :=False; //н
      Form2.Button50.Visible :=False; //г
      Form2.Button49.Visible :=False; //ш
      Form2.Button48.Visible :=False; //щ
      Form2.Button47.Visible :=False; //з
      Form2.Button38.Visible :=False; //х
      Form2.Button24.Visible :=False; //ф
      Form2.Button65.Visible :=False; //ы
      Form2.Button64.Visible :=False; //в
      Form2.Button63.Visible :=False; //а
      Form2.Button62.Visible :=False; //п
      Form2.Button61.Visible :=False; //р
      Form2.Button60.Visible :=False; //о
      Form2.Button59.Visible :=False; //л
      Form2.Button58.Visible :=False; //д
      Form2.Button57.Visible :=False; //ж
      Form2.Button56.Visible :=False; //э
      Form2.Button25.Visible :=False; //я
      Form2.Button74.Visible :=False; //ч
      Form2.Button73.Visible :=False; //с
      Form2.Button72.Visible :=False; //м
      Form2.Button71.Visible :=False; //и
      Form2.Button70.Visible :=False; //т
      Form2.Button69.Visible :=False; //ь
      Form2.Button68.Visible :=False; //б
      Form2.Button67.Visible :=False; //ю
      Form2.Button66.Visible :=False; //ъ


      //Видимость кнопок
      Form2.Button143.Visible :=False;
      Form2.Button110.Visible :=True;
      Form2.Button77.Visible :=False;
      Form2.Button78.Visible :=False;
end;

procedure Form2_Button110_OnClick (Sender: TObject; var Cancel: boolean);
begin
      //Включаем видимость ENG
      Form2.Button11.Visible :=True; //й
      Form2.Button55.Visible :=True; //ц
      Form2.Button54.Visible :=True; //у
      Form2.Button53.Visible :=True; //к
      Form2.Button52.Visible :=True; //е
      Form2.Button51.Visible :=True; //н
      Form2.Button50.Visible :=True; //г
      Form2.Button49.Visible :=True; //ш
      Form2.Button48.Visible :=True; //щ
      Form2.Button47.Visible :=True; //з
      Form2.Button38.Visible :=True; //х
      Form2.Button24.Visible :=True; //ф
      Form2.Button65.Visible :=True; //ы
      Form2.Button64.Visible :=True; //в
      Form2.Button63.Visible :=True; //а
      Form2.Button62.Visible :=True; //п
      Form2.Button61.Visible :=True; //р
      Form2.Button60.Visible :=True; //о
      Form2.Button59.Visible :=True; //л
      Form2.Button58.Visible :=True; //д
      Form2.Button57.Visible :=True; //ж
      Form2.Button56.Visible :=True; //э
      Form2.Button25.Visible :=True; //я
      Form2.Button74.Visible :=True; //ч
      Form2.Button73.Visible :=True; //с
      Form2.Button72.Visible :=True; //м
      Form2.Button71.Visible :=True; //и
      Form2.Button70.Visible :=True; //т
      Form2.Button69.Visible :=True; //ь
      Form2.Button68.Visible :=True; //б
      Form2.Button67.Visible :=True; //ю
      Form2.Button66.Visible :=True; //ъ
        //Отключаем видимость верхнего регистра RUS
      Form2.Button142.Visible :=False; //Й
      Form2.Button111.Visible :=False; //Ц
      Form2.Button112.Visible :=False; //У
      Form2.Button113.Visible :=False; //К
      Form2.Button114.Visible :=False; //Е
      Form2.Button115.Visible :=False; //Н
      Form2.Button116.Visible :=False; //Г
      Form2.Button117.Visible :=False; //Ш
      Form2.Button118.Visible :=False; //Щ
      Form2.Button119.Visible :=False; //З
      Form2.Button120.Visible :=False; //Х
      Form2.Button131.Visible :=False; //Ф
      Form2.Button130.Visible :=False; //Ы
      Form2.Button129.Visible :=False; //В
      Form2.Button128.Visible :=False; //А
      Form2.Button127.Visible :=False; //П
      Form2.Button126.Visible :=False; //Р
      Form2.Button125.Visible :=False; //О
      Form2.Button124.Visible :=False; //Л
      Form2.Button123.Visible :=False; //Д
      Form2.Button122.Visible :=False; //Ж
      Form2.Button121.Visible :=False; //Э
      Form2.Button141.Visible :=False; //Я
      Form2.Button140.Visible :=False; //Ч
      Form2.Button139.Visible :=False; //С
      Form2.Button138.Visible :=False; //М
      Form2.Button137.Visible :=False; //И
      Form2.Button136.Visible :=False; //Т
      Form2.Button135.Visible :=False; //Ь
      Form2.Button134.Visible :=False; //Б
      Form2.Button133.Visible :=False; //Ю
      Form2.Button132.Visible :=False; //Ъ


      //Видимость кнопок
      Form2.Button143.Visible :=True;
      Form2.Button110.Visible :=False;
      Form2.Button77.Visible :=False;
      Form2.Button78.Visible :=False;
end;

procedure Form2_Button78_OnClick (Sender: TObject; var Cancel: boolean);
begin
     //Вкл видимость верхнего регистра ENG
      Form2.Button79.Visible :=True; //q
      Form2.Button90.Visible :=True; //w
      Form2.Button89.Visible :=True; //e
      Form2.Button88.Visible :=True; //r
      Form2.Button87.Visible :=True; //t
      Form2.Button86.Visible :=True; //y
      Form2.Button85.Visible :=True; //u
      Form2.Button84.Visible :=True; //i
      Form2.Button83.Visible :=True; //o
      Form2.Button82.Visible :=True; //p
      Form2.Button27.Visible :=True; //[
      Form2.Button99.Visible :=True; //a
      Form2.Button98.Visible :=True; //s
      Form2.Button97.Visible :=True; //d
      Form2.Button96.Visible :=True; //f
      Form2.Button95.Visible :=True; //g
      Form2.Button94.Visible :=True; //h
      Form2.Button93.Visible :=True; //j
      Form2.Button92.Visible :=True; //k
      Form2.Button91.Visible :=True; //l
      Form2.Button81.Visible :=True; //;
      Form2.Button80.Visible :=True; //'
      Form2.Button109.Visible :=True; //z
      Form2.Button108.Visible :=True; //x
      Form2.Button107.Visible :=True; //c
      Form2.Button106.Visible :=True; //v
      Form2.Button105.Visible :=True; //b
      Form2.Button104.Visible :=True; //n
      Form2.Button103.Visible :=True; //m
      Form2.Button102.Visible :=True; //,
      Form2.Button101.Visible :=True; //.
      Form2.Button100.Visible :=True; ///

   //Включаем видимость ENG   РЕАЛЬНАЯ РАСКЛАДКА
      Form2.Button21.Visible :=False; //Q
      Form2.Button12.Visible :=False; //W
      Form2.Button19.Visible :=False; //E
      Form2.Button18.Visible :=False; //R
      Form2.Button13.Visible :=False; //T
      Form2.Button14.Visible :=False; //Y
      Form2.Button15.Visible :=False; //U
      Form2.Button17.Visible :=False; //I
      Form2.Button16.Visible :=False; //O
      Form2.Button20.Visible :=False; //P
      Form2.Button27.Visible :=False; //[
      Form2.Button27.Visible :=True; //]
      Form2.Button75.Visible :=False; //A
      Form2.Button35.Visible :=False; //S
      Form2.Button34.Visible :=False; //D
      Form2.Button33.Visible :=False; //F
      Form2.Button32.Visible :=False; //G
      Form2.Button31.Visible :=False; //H
      Form2.Button30.Visible :=False; //J
      Form2.Button29.Visible :=False; //K
      Form2.Button28.Visible :=False; //L
      Form2.Button23.Visible :=False; //;
      Form2.Button22.Visible :=False; //'
      Form2.Button76.Visible :=False; //Z
      Form2.Button45.Visible :=False; //X
      Form2.Button44.Visible :=False; //C
      Form2.Button43.Visible :=False; //V
      Form2.Button42.Visible :=False; //B
      Form2.Button46.Visible :=False; //N
      Form2.Button41.Visible :=False; //M
      Form2.Button40.Visible :=False; //,
      Form2.Button39.Visible :=False; //.
      Form2.Button100.Visible :=True; ///

      //Видимость кнопок
      Form2.Button77.Visible :=True;
      Form2.Button78.Visible :=False;

end;
//Регистр Up
procedure Form2_Button77_OnClick (Sender: TObject; var Cancel: boolean);
begin
      //DOWN ENG
//Включаем видимость ENG   РЕАЛЬНАЯ РАСКЛАДКА
      Form2.Button21.Visible :=True; //Q
      Form2.Button12.Visible :=True; //W
      Form2.Button19.Visible :=True; //E
      Form2.Button18.Visible :=True; //R
      Form2.Button13.Visible :=True; //T
      Form2.Button14.Visible :=True; //Y
      Form2.Button15.Visible :=True; //U
      Form2.Button17.Visible :=True; //I
      Form2.Button16.Visible :=True; //O
      Form2.Button20.Visible :=True; //P
      Form2.Button27.Visible :=True; //[
      Form2.Button38.Visible :=True; //]
      Form2.Button75.Visible :=True; //A
      Form2.Button35.Visible :=True; //S
      Form2.Button34.Visible :=True; //D
      Form2.Button33.Visible :=True; //F
      Form2.Button32.Visible :=True; //G
      Form2.Button31.Visible :=True; //H
      Form2.Button30.Visible :=True; //J
      Form2.Button29.Visible :=True; //K
      Form2.Button28.Visible :=True; //L
      Form2.Button23.Visible :=True; //;
      Form2.Button22.Visible :=True; //'
      Form2.Button76.Visible :=True; //Z
      Form2.Button45.Visible :=True; //X
      Form2.Button44.Visible :=True; //C
      Form2.Button43.Visible :=True; //V
      Form2.Button42.Visible :=True; //B
      Form2.Button46.Visible :=True; //N
      Form2.Button41.Visible :=True; //M
      Form2.Button40.Visible :=True; //,
      Form2.Button39.Visible :=True; //.
      Form2.Button100.Visible :=True; ///

      //Откл видимость нижнего регистра ENG
      Form2.Button79.Visible :=False; //q
      Form2.Button90.Visible :=False; //w
      Form2.Button89.Visible :=False; //e
      Form2.Button88.Visible :=False; //r
      Form2.Button87.Visible :=False; //t
      Form2.Button86.Visible :=False; //y
      Form2.Button85.Visible :=False; //u
      Form2.Button84.Visible :=False; //i
      Form2.Button83.Visible :=False; //o
      Form2.Button82.Visible :=False; //p
      Form2.Button27.Visible :=True; //[
      Form2.Button100.Visible :=False; ///
      Form2.Button99.Visible :=False; //a
      Form2.Button98.Visible :=False; //s
      Form2.Button97.Visible :=False; //d
      Form2.Button96.Visible :=False; //f
      Form2.Button95.Visible :=False; //g
      Form2.Button94.Visible :=False; //h
      Form2.Button93.Visible :=False; //j
      Form2.Button92.Visible :=False; //k
      Form2.Button91.Visible :=False; //l
      Form2.Button81.Visible :=False; //;
      Form2.Button80.Visible :=False; //'
      Form2.Button109.Visible :=False; //z
      Form2.Button108.Visible :=False; //x
      Form2.Button107.Visible :=False; //c
      Form2.Button106.Visible :=False; //v
      Form2.Button105.Visible :=False; //b
      Form2.Button104.Visible :=False; //n
      Form2.Button103.Visible :=False; //m
      Form2.Button102.Visible :=False; //,
      Form2.Button101.Visible :=False; //.
      Form2.Button26.Visible :=True; ///
      //Убираем видимость RUS
      Form2.Button11.Visible :=False; //й
      Form2.Button55.Visible :=False; //ц
      Form2.Button54.Visible :=False; //у
      Form2.Button53.Visible :=False; //к
      Form2.Button52.Visible :=False; //е
      Form2.Button51.Visible :=False; //н
      Form2.Button50.Visible :=False; //г
      Form2.Button49.Visible :=False; //ш
      Form2.Button48.Visible :=False; //щ
      Form2.Button47.Visible :=False; //з
      Form2.Button38.Visible :=False; //х
      Form2.Button24.Visible :=False; //ф
      Form2.Button65.Visible :=False; //ы
      Form2.Button64.Visible :=False; //в
      Form2.Button63.Visible :=False; //а
      Form2.Button62.Visible :=False; //п
      Form2.Button61.Visible :=False; //р
      Form2.Button60.Visible :=False; //о
      Form2.Button59.Visible :=False; //л
      Form2.Button58.Visible :=False; //д
      Form2.Button57.Visible :=False; //ж
      Form2.Button56.Visible :=False; //э
      Form2.Button25.Visible :=False; //я
      Form2.Button74.Visible :=False; //ч
      Form2.Button73.Visible :=False; //с
      Form2.Button72.Visible :=False; //м
      Form2.Button71.Visible :=False; //и
      Form2.Button70.Visible :=False; //т
      Form2.Button69.Visible :=False; //ь
      Form2.Button68.Visible :=False; //б
      Form2.Button67.Visible :=False; //ю
      Form2.Button66.Visible :=False; //ъ



      //Видимость кнопок
      Form2.Button77.Visible :=False;
      Form2.Button78.Visible :=True;


end;
//ENG
procedure Form2_Button37_OnClick (Sender: TObject; var Cancel: boolean);
begin
      //Вкл видимость верхнего регистра ENG
      Form2.Button79.Visible :=True; //q
      Form2.Button90.Visible :=True; //w
      Form2.Button89.Visible :=True; //e
      Form2.Button88.Visible :=True; //r
      Form2.Button87.Visible :=True; //t
      Form2.Button86.Visible :=True; //y
      Form2.Button85.Visible :=True; //u
      Form2.Button84.Visible :=True; //i
      Form2.Button83.Visible :=True; //o
      Form2.Button82.Visible :=True; //p
      Form2.Button27.Visible :=True; ///
      Form2.Button99.Visible :=True; //a
      Form2.Button98.Visible :=True; //s
      Form2.Button97.Visible :=True; //d
      Form2.Button96.Visible :=True; //f
      Form2.Button95.Visible :=True; //g
      Form2.Button94.Visible :=True; //h
      Form2.Button93.Visible :=True; //j
      Form2.Button92.Visible :=True; //k
      Form2.Button91.Visible :=True; //l
      Form2.Button81.Visible :=True; //;
      Form2.Button80.Visible :=True; //'
      Form2.Button109.Visible :=True; //z
      Form2.Button108.Visible :=True; //x
      Form2.Button107.Visible :=True; //c
      Form2.Button106.Visible :=True; //v
      Form2.Button105.Visible :=True; //b
      Form2.Button104.Visible :=True; //n
      Form2.Button103.Visible :=True; //m
      Form2.Button102.Visible :=True; //,
      Form2.Button101.Visible :=True; //.
      Form2.Button26.Visible :=True; ///
      //Убираем видимость RUS
      Form2.Button11.Visible :=False; //й
      Form2.Button55.Visible :=False; //ц
      Form2.Button54.Visible :=False; //у
      Form2.Button53.Visible :=False; //к
      Form2.Button52.Visible :=False; //е
      Form2.Button51.Visible :=False; //н
      Form2.Button50.Visible :=False; //г
      Form2.Button49.Visible :=False; //ш
      Form2.Button48.Visible :=False; //щ
      Form2.Button47.Visible :=False; //з
      Form2.Button38.Visible :=False; //х
      Form2.Button24.Visible :=False; //ф
      Form2.Button65.Visible :=False; //ы
      Form2.Button64.Visible :=False; //в
      Form2.Button63.Visible :=False; //а
      Form2.Button62.Visible :=False; //п
      Form2.Button61.Visible :=False; //р
      Form2.Button60.Visible :=False; //о
      Form2.Button59.Visible :=False; //л
      Form2.Button58.Visible :=False; //д
      Form2.Button57.Visible :=False; //ж
      Form2.Button56.Visible :=False; //э
      Form2.Button25.Visible :=False; //я
      Form2.Button74.Visible :=False; //ч
      Form2.Button73.Visible :=False; //с
      Form2.Button72.Visible :=False; //м
      Form2.Button71.Visible :=False; //и
      Form2.Button70.Visible :=False; //т
      Form2.Button69.Visible :=False; //ь
      Form2.Button68.Visible :=False; //б
      Form2.Button67.Visible :=False; //ю
      Form2.Button66.Visible :=False; //ъ
      //Отключаем видимость верхнего регистра RUS
      Form2.Button142.Visible :=False; //Й
      Form2.Button111.Visible :=False; //Ц
      Form2.Button112.Visible :=False; //У
      Form2.Button113.Visible :=False; //К
      Form2.Button114.Visible :=False; //Е
      Form2.Button115.Visible :=False; //Н
      Form2.Button116.Visible :=False; //Г
      Form2.Button117.Visible :=False; //Ш
      Form2.Button118.Visible :=False; //Щ
      Form2.Button119.Visible :=False; //З
      Form2.Button120.Visible :=False; //Х
      Form2.Button131.Visible :=False; //Ф
      Form2.Button130.Visible :=False; //Ы
      Form2.Button129.Visible :=False; //В
      Form2.Button128.Visible :=False; //А
      Form2.Button127.Visible :=False; //П
      Form2.Button126.Visible :=False; //Р
      Form2.Button125.Visible :=False; //О
      Form2.Button124.Visible :=False; //Л
      Form2.Button123.Visible :=False; //Д
      Form2.Button122.Visible :=False; //Ж
      Form2.Button121.Visible :=False; //Э
      Form2.Button141.Visible :=False; //Я
      Form2.Button140.Visible :=False; //Ч
      Form2.Button139.Visible :=False; //С
      Form2.Button138.Visible :=False; //М
      Form2.Button137.Visible :=False; //И
      Form2.Button136.Visible :=False; //Т
      Form2.Button135.Visible :=False; //Ь
      Form2.Button134.Visible :=False; //Б
      Form2.Button133.Visible :=False; //Ю
      Form2.Button132.Visible :=False; //Ъ

      //Откл кнопки
      Form2.Button37.Enabled :=False;
      Form2.Button36.Enabled :=True;
      Form2.Button110.Visible :=False;
      Form2.Button143.Visible :=False;
      Form2.Button78.Visible :=True;
      Form2.Button77.Visible :=True;

end;
//RUS
procedure Form2_Button36_OnClick (Sender: TObject; var Cancel: boolean);
begin

      //Включаем видимость ENG
      Form2.Button11.Visible :=True; //й
      Form2.Button55.Visible :=True; //ц
      Form2.Button54.Visible :=True; //у
      Form2.Button53.Visible :=True; //к
      Form2.Button52.Visible :=True; //е
      Form2.Button51.Visible :=True; //н
      Form2.Button50.Visible :=True; //г
      Form2.Button49.Visible :=True; //ш
      Form2.Button48.Visible :=True; //щ
      Form2.Button47.Visible :=True; //з
      Form2.Button38.Visible :=True; //х
      Form2.Button24.Visible :=True; //ф
      Form2.Button65.Visible :=True; //ы
      Form2.Button64.Visible :=True; //в
      Form2.Button63.Visible :=True; //а
      Form2.Button62.Visible :=True; //п
      Form2.Button61.Visible :=True; //р
      Form2.Button60.Visible :=True; //о
      Form2.Button59.Visible :=True; //л
      Form2.Button58.Visible :=True; //д
      Form2.Button57.Visible :=True; //ж
      Form2.Button56.Visible :=True; //э
      Form2.Button25.Visible :=True; //я
      Form2.Button74.Visible :=True; //ч
      Form2.Button73.Visible :=True; //с
      Form2.Button72.Visible :=True; //м
      Form2.Button71.Visible :=True; //и
      Form2.Button70.Visible :=True; //т
      Form2.Button69.Visible :=True; //ь
      Form2.Button68.Visible :=True; //б
      Form2.Button67.Visible :=True; //ю
      Form2.Button66.Visible :=True; //ъ
       //Откл видимость нижнего регистра ENG
      Form2.Button79.Visible :=False; //q
      Form2.Button90.Visible :=False; //w
      Form2.Button89.Visible :=False; //e
      Form2.Button88.Visible :=False; //r
      Form2.Button87.Visible :=False; //t
      Form2.Button86.Visible :=False; //y
      Form2.Button85.Visible :=False; //u
      Form2.Button84.Visible :=False; //i
      Form2.Button83.Visible :=False; //o
      Form2.Button82.Visible :=False; //p
      Form2.Button27.Visible :=False; //[
      Form2.Button100.Visible :=False; ///
      Form2.Button99.Visible :=False; //a
      Form2.Button98.Visible :=False; //s
      Form2.Button97.Visible :=False; //d
      Form2.Button96.Visible :=False; //f
      Form2.Button95.Visible :=False; //g
      Form2.Button94.Visible :=False; //h
      Form2.Button93.Visible :=False; //j
      Form2.Button92.Visible :=False; //k
      Form2.Button91.Visible :=False; //l
      Form2.Button81.Visible :=False; //;
      Form2.Button80.Visible :=False; //'
      Form2.Button109.Visible :=False; //z
      Form2.Button108.Visible :=False; //x
      Form2.Button107.Visible :=False; //c
      Form2.Button106.Visible :=False; //v
      Form2.Button105.Visible :=False; //b
      Form2.Button104.Visible :=False; //n
      Form2.Button103.Visible :=False; //m
      Form2.Button102.Visible :=False; //,
      Form2.Button101.Visible :=False; //.
      Form2.Button26.Visible :=False; ///


      //Откл кнопки
      Form2.Button36.Enabled :=False;
      Form2.Button37.Enabled :=True;
      Form2.Button77.Visible :=False;
      Form2.Button78.Visible :=False;
      Form2.Button110.Visible :=True;
      Form2.Button143.Visible :=True;


end;


procedure Form2_bt1_OnClick (Sender: string; Action: string);
begin
        if CurrentCtrl is TdbEdit then
        TdbEdit(CurrentCtrl).Text := TdbEdit(CurrentCtrl).Text + TdbButton(Sender).Caption;
end;

procedure Form2_btDel_OnClick (Sender: string; var Cancel: boolean);
begin
    if CurrentCtrl is TdbEdit then
        if Length(TdbEdit(CurrentCtrl).Text) > 0 then SetLength(TdbEdit(CurrentCtrl).Text, Length(TdbEdit(CurrentCtrl).Text)-1);
end;

procedure frmLogin_Edit2_OnMouseDown (Sender: string; MouseLeft, MouseRight, MouseMiddle: boolean; Shift, Alt, Ctrl: boolean; X, Y: Integer);
begin
if MouseLeft then ShowKeyboard(frmLogin.Edit2);
end;




procedure frmLogin_Edit1_OnMouseDown (Sender: string; MouseLeft, MouseRight, MouseMiddle: boolean; Shift, Alt, Ctrl: boolean; X, Y: Integer);
begin
    if MouseLeft then ShowKeyboard(frmLogin.Edit1);
end;

procedure Form2_btOk_OnClick (Sender: string; Action: string);
begin
    Form2.Close;
end;
                   
procedure ShowKeyboard (Ctrl: TWinControl);
var
    Form: TAForm;

begin
    Form := TAForm(Ctrl.Parent);
    CurrentCtrl := Ctrl;
    Form2.Top :=  Form.Top + Ctrl.Top+125;
   Form2.Left := Form.Left + Ctrl.Left-270;
    Form2.ShowModal;
end;

25 (edited by chartcatuser 2022-07-19 12:32:47)

Re: Ошибка в новой версии программы.

k245 wrote:

Виртуальная клавиатура симпатичная вышла, хотя я не представляю, как можно на компе без реальной клавиатуры )))
Переключение раскладки - это замена всех заголовков на кнопках с буквами. Так как никакой логики в названии кнопок нет, то нужно выполнить 33 команды вида

Form2.Button1.Caption := 'Й'

Но у меня встречный вопрос: в каких случаях используется эта клавиатура? Кроме того, я бы не рекомендовал любые символы использовать для логина/пароля, особенно для пароля. Есть специальный стандарт ISO, который это регулирует, потому что очень легко спутать 0 и О, 1 и  l и так далее.

Клавиатура используется для ввода логина и пароля на терминале с сенсорным экраном smile

А вот подскажи как сделать подгонять размер на другой форме например frmZakaz  там поле с memo в самом низу у меня никак не получается привязать отдельно на форму клавиатуру со своими размерами вот пытаюсь что не так ?


procedure Form2_bt1_OnClick (Sender: string; Action: string);
begin
        if CurrentCtrl is TdbEdit then
        TdbEdit(CurrentCtrl).Text := TdbEdit(CurrentCtrl).Text + TdbButton(Sender).Caption;
        if CurrentCtrl is TdbMemo then
        TdbMemo(CurrentCtrl).Text := TdbMemo(CurrentCtrl).Text + TdbButton(Sender).Caption;
end;

procedure Form2_btDel_OnClick (Sender: string; var Cancel: boolean);
begin
    if CurrentCtrl is TdbEdit then
        if Length(TdbEdit(CurrentCtrl).Text) > 0 then SetLength(TdbEdit(CurrentCtrl).Text, Length(TdbEdit(CurrentCtrl).Text)-1);
    if CurrentCtrl is TdbMemo then
        if Length(TdbMemo(CurrentCtrl).Text) > 0 then SetLength(TdbMemo(CurrentCtrl).Text, Length(TdbMemo(CurrentCtrl).Text)-1);
end;

procedure ShowKeyboard (Ctrl: TWinControl);
var
    Form: TAForm;
    Form3: TAForm;
begin
    Form := TAForm(Ctrl.Parent);
    Form3 := TAForm(Ctrl.Parent);
    CurrentCtrl := Ctrl;
//Клавиатура на frmLogin
    Form2.Top :=  Form.Top + Ctrl.Top+125;
    Form2.Left := Form.Left + Ctrl.Left-270
//Клавиатура на frmZakaz;
    Form2.Top :=  Form3.Top + Ctrl.Top+225;
    Form2.Left := Form3.Left + Ctrl.Left-170;
    Form2.ShowModal;
end;
В конце скрипта что то не так ?
Только не говори что нужно делать новую клавиатуру smile)))