Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.91/22: Рейтинг темы: голосов - 22, средняя оценка - 4.91
 Аватар для rolandas
23 / 12 / 2
Регистрация: 20.04.2011
Сообщений: 382

Как переключить CapsLock ?

07.02.2021, 22:04. Показов 5359. Ответов 83
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
нужна проверка капслока, и если не включено - включить
код не правильный:

Delphi
1
2
3
4
5
6
7
var
KeyState: TKeyboardState;
 
begin
GetKeyboardState(KeyState);
if (KeyState[VK_CAPITAL]=0) then KeyState[VK_CAPITAL]:=1;
end;
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
07.02.2021, 22:04
Ответы с готовыми решениями:

Как отследить NumLock или CapsLock?
Как сделать, чтобы форма появлялась и "пряталась" в зависимости от состояния Num Lock. С GetKeyboardState возникли проблемы. Очень надо,...

Как определить нажата ли клавиша capslock, numlock, ins в vb.net?
Как определить нажата ли клавиша capslock, numlock, ins в vb.net? Надо для текстового редактора, там внизу на статусбаре должно...

Как в ahk Забиндить на CapsLock нажатие двух клавиш space и ctrl?
Как в ahk Забиндить на CapsLock нажатие двух клавиш space и ctrl? P.S не знал в какую тему написать так что сюда

83
Житель Земли
 Аватар для DenNik
3004 / 3026 / 390
Регистрация: 26.07.2011
Сообщений: 11,465
Записей в блоге: 1
08.02.2021, 13:52
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Alex Prozac Посмотреть сообщение
Каждый string, если явно не указывать его размер, занимает в памяти 256 байт: 256x252600=64665600!
string нынче - это указатель на память. Сравни со вторым вариантом
Миниатюры
Как переключить CapsLock ?   Как переключить CapsLock ?  
0
Житель Земли
 Аватар для DenNik
3004 / 3026 / 390
Регистрация: 26.07.2011
Сообщений: 11,465
Записей в блоге: 1
08.02.2021, 13:59
Шоб было понятнее
Миниатюры
Как переключить CapsLock ?  
0
Модератор
4153 / 2362 / 814
Регистрация: 15.11.2015
Сообщений: 9,497
08.02.2021, 14:22
s: string[255] это по сути статический массив, а
s: string - динамический массив. Поэтому и SizeOf(s) без задания размера показывает размер переменной s, которая является ссылкой на саму строку.
0
193 / 140 / 36
Регистрация: 19.11.2020
Сообщений: 881
08.02.2021, 14:52
Вы все неправильно меряете память. Да, вы знаете сколько ссылок идут на строку.


Но ссылка на строку, это ссылка на структуру record. Где объявляются разные поля, типа кодировки строки, длины строки, и количество ссылок.

Добавлено через 6 минут
Стандартная структуру для строк

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
  PStrRec = ^StrRec;
  StrRec = packed record
  {$IF defined(CPU64BITS)}
    _Padding: Integer; // Make 16 byte align for payload..
  {$ENDIF}
    codePage: Word;
    elemSize: Word;
    refCnt: Integer;
    length: Integer;
  end;
 
 
const
  skew = SizeOf(StrRec);
  rOff = SizeOf(StrRec); { codePage offset }
  overHead = SizeOf(StrRec) + SizeOf(Char);
  CP_UTF16 = 1200;
0
 Аватар для rolandas
23 / 12 / 2
Регистрация: 20.04.2011
Сообщений: 382
08.02.2021, 15:17  [ТС]
вот именно - если все идентификаторы переменных будут уникальными - легче сооброжать.
комбинаций букв и цифр на то дело славо Богу хватает.
а где обьявлять, по мне тоже проще один раз в одном общем месте, чем в разброс по всей программе, то ищи потом.
и почему я своеобразно не прав?
(про эстетику и оптимизацию, перегрузку по рессурсам - пока внимания не обращаю)
другое дело по быстродействию и глюкам из за этого, но если все работает быстро и не глючит - значит работает как надо.
эсть такое модное выражение - не меняй ничего, если хорошо работает.
0
Модератор
4153 / 2362 / 814
Регистрация: 15.11.2015
Сообщений: 9,497
08.02.2021, 15:24
Цитата Сообщение от rolandas Посмотреть сообщение
в расброс по всей программе, то ищи потом.
Зачем искать по всей программе? Все переменные функции объявлены тут же и если текст функции помещается в экран, то даже прокручивать код не нужно, всё перед глазами.

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

Вы, конечно, будете делать так, как привыкли, но это не значит, что так, как вы привыкли - это удобнее.

Не по теме:

В одной статье читал, что в дельфи один большой недостаток - переменная формы объявлена глобальной. :)

0
193 / 140 / 36
Регистрация: 19.11.2020
Сообщений: 881
08.02.2021, 15:27
Цитата Сообщение от rolandas Посмотреть сообщение
то ищи потом.
В смысле?)))) Все переменные которые находятся в функции\процедуре, являются её частью. Их искать не надо, они всегда в начале функции после имени функции.

То есть, ты можешь нажать CTRL + Левый клик мыши по переменной, и тебя сразу кинет на объявление переменной.


Цитата Сообщение от rolandas Посмотреть сообщение
если все идентификаторы переменных будут уникальными
Они и так уникальны, для каждой функции\процедуры

Цитата Сообщение от rolandas Посмотреть сообщение
и почему я своеобразно не прав?
Потому что ты засоряешь память программы безобразным образом, вместо того что бы дать ей использовать стэк каждой функции

Добавлено через 2 минуты
Цитата Сообщение от AzAtom Посмотреть сообщение
переменная формы объявлена глобальной.
Соглашусь что это недостаток... Ухх какой недостаток, потом из одной формы к другой нельзя подобраться, потому что нельзя ссылаться из одного pas в другой, если другой pas уже ссылается на него.
0
Модератор
4153 / 2362 / 814
Регистрация: 15.11.2015
Сообщений: 9,497
08.02.2021, 15:34
Цитата Сообщение от OpXiv Посмотреть сообщение
нельзя ссылаться из одного pas в другой, если другой pas уже ссылается на него.
Возможно ссылаться. Просто Uses Unit2; надо поставить в разделе implementation. И в модуле другой формы так же.

Но да - нельзя из второстепенной формы обращаться к главной форме. В смысле, это неправильно.

Добавлено через 1 минуту
Цитата Сообщение от OpXiv Посмотреть сообщение
Потому что ты засоряешь память программы безобразным образом
Хуже всего, он засоряет себе мозги всей этой кучей переменных.
0
Житель Земли
 Аватар для DenNik
3004 / 3026 / 390
Регистрация: 26.07.2011
Сообщений: 11,465
Записей в блоге: 1
08.02.2021, 17:44
Цитата Сообщение от OpXiv Посмотреть сообщение
из одной формы к другой нельзя подобраться, потому что нельзя ссылаться из одного pas в другой, если другой pas уже ссылается на него.
А нефик втихаря подбираться к формам.

Если второстепенная диалоговая форма предназначена для ввода какой-либо информации, её обработка должна осуществляться в главной форме.
Delphi
1
2
3
4
5
6
7
8
9
procedure TMainForm.Button1Click(Sender: TObject);
begin
  with TDialogForm.Create(Application) do
  begin
    if ShowModal = mrOk then ShowMessage(DialogInput.Text);
    // .....
    Free;
  end;
end;

заметь, я даже удалил переменную второстепенной формы за ненадобностью
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
unit UnitDialog;
 
interface
 
uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ExtCtrls;
 
type
  TDialogForm = class(TForm)
    DialogInput: TLabeledEdit;
    Button1: TButton;
    Button2: TButton;
  end;
 
implementation
 
{$R *.dfm}
 
end.
В более сложных случаях следует разработать правильную модель данных
0
193 / 140 / 36
Регистрация: 19.11.2020
Сообщений: 881
08.02.2021, 17:45
Цитата Сообщение от DenNik Посмотреть сообщение
диалоговая форма
Никто не говорил что это какая - то диалоговая форма.

Это может быть форма настроек, которая должна обратиться к пару компонентам первой формы, и поменять их настройки.
0
Житель Земли
 Аватар для DenNik
3004 / 3026 / 390
Регистрация: 26.07.2011
Сообщений: 11,465
Записей в блоге: 1
08.02.2021, 17:49
Цитата Сообщение от OpXiv Посмотреть сообщение
Это может быть форма настроек, которая должна обратиться к пару компонентам первой формы, и поменять их настройки.
Не должна она это делать. Настройка компонентов осуществляется по принципу, который я только что показал

Цитата Сообщение от OpXiv Посмотреть сообщение
Никто не говорил что это какая - то диалоговая форма.
А ввод и изменение настроек - это ли не диалог? Пользователя с программой
1
193 / 140 / 36
Регистрация: 19.11.2020
Сообщений: 881
08.02.2021, 17:51
Цитата Сообщение от DenNik Посмотреть сообщение
Не должна она это делать.
Почему вы решили что она этого делать не должна ? То есть вы говорите, что, нужно создать сначала форму настроек. А дальше уже делать формы остальные ?

Цитата Сообщение от DenNik Посмотреть сообщение
это ли не диалог?
Это диалог форма?


.... То есть, данный скрин уже все ваши слова опровергает
Миниатюры
Как переключить CapsLock ?  
0
Житель Земли
 Аватар для DenNik
3004 / 3026 / 390
Регистрация: 26.07.2011
Сообщений: 11,465
Записей в блоге: 1
08.02.2021, 17:52
Цитата Сообщение от OpXiv Посмотреть сообщение
форма настроек, которая должна обратиться к пару компонентам первой формы, и поменять их настройки.
Delphi
1
2
3
4
5
6
7
8
9
10
procedure TMainForm.Button1Click(Sender: TObject);
begin
  with TDialogForm.Create(Application) do
  begin
    CheckBox1.Checked:= Image1.Visible;
    if ShowModal = mrOk then Image1.Visible:= CheckBox1.Checked;
    // .....
    Free;
  end;
end;
Миниатюры
Как переключить CapsLock ?  
0
193 / 140 / 36
Регистрация: 19.11.2020
Сообщений: 881
08.02.2021, 17:52
Цитата Сообщение от DenNik Посмотреть сообщение
форма настроек, которая должна обратиться к пару компонентам первой формы, и поменять их настройки.
Нет, вы не правы - в своих убеждениях, представления что такое форма надстроек.
0
Житель Земли
 Аватар для DenNik
3004 / 3026 / 390
Регистрация: 26.07.2011
Сообщений: 11,465
Записей в блоге: 1
08.02.2021, 17:53
Цитата Сообщение от OpXiv Посмотреть сообщение
вы говорите, что, нужно создать сначала форму настроек. А дальше уже делать формы остальные ?
Что мешает сделать наоборот? Пример выше не убеждает, что можно создавать формы в любой последовательности?
0
193 / 140 / 36
Регистрация: 19.11.2020
Сообщений: 881
08.02.2021, 17:54
Цитата Сообщение от DenNik Посмотреть сообщение
формы в любой последовательности?
Это басня о двух концах, где вы упрётесь в ту же проблему, от которой пытались убежать.


Легче попытаться создать общий PAS файл, с переменными, и его подключать везде.
0
Житель Земли
 Аватар для DenNik
3004 / 3026 / 390
Регистрация: 26.07.2011
Сообщений: 11,465
Записей в блоге: 1
08.02.2021, 17:56
Цитата Сообщение от OpXiv Посмотреть сообщение
Это басня о двух концах, где вы упрётесь в ту же проблему, от которой пытались убежать.
Именно в ЭТУ проблему давно уже не упираюсь

Цитата Сообщение от OpXiv Посмотреть сообщение
создать общий PAS файл, с переменными, и его подключать везде.
так и делаю
0
Модератор
 Аватар для D1973
9954 / 6490 / 2461
Регистрация: 21.01.2014
Сообщений: 27,495
Записей в блоге: 3
08.02.2021, 18:22
Цитата Сообщение от OpXiv Посмотреть сообщение
Почему вы решили что она этого делать не должна ?
Это не он решил... Это один из основополагающих принципов ООП, инкапсуляция называется... Дочерняя/подчиненная форма не должна "знать" ничего о родительской главной форме.
1
193 / 140 / 36
Регистрация: 19.11.2020
Сообщений: 881
08.02.2021, 18:23
Цитата Сообщение от D1973 Посмотреть сообщение
"знать" ничего о родительской главной форме.
Тогда как сама IDE Delphi знает в форме настройках, о всех компонентах с которыми работает?))))


Вы по моему сами себе там надумали лишнего)))
0
08.02.2021, 18:27

Не по теме:

Цитата Сообщение от OpXiv Посмотреть сообщение
Вы по моему сами себе там надумали лишнего
Да? Ну дело-то Ваше, я лично Вас ни к чему не призываю, делайте что хотите и как хотите...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
08.02.2021, 18:27

Кто подскажет, как сделать чтобы программа при нажатии на Button1 емулировала нажатие CapsLock
Кто подскажет, как сделать чтобы программа при нажатии на Button1 емулировала нажатие СapsLock.....:declare:

Как переключить язык?
На домашнем компе работает переключение языков в Паскале стандартано: справа-русский, слева-английский. Стоит ХР! Но! Как выхожу из...

Как переключить звук в ТВ
Здравствуйте. Как в ТВ Samsung Series5 переключить звук с наушников на динамик ТВ. Вообщем, вставили наушники в разьем для наушников,...

Как переключить раскладку?
Kak perekluchit tekstovyu raskladky v ubuntu? Добавлено через 6 минут Все разобрался, система-клавиатура.

Как переключить мониторы?
У меня видеокарта geforce 4 mx хочу подключить монитор и телоевизор, но при включении телевизора монитор работать отказывается, а хотелось...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
60
Ответ Создать тему
Новые блоги и статьи
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет! За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Nekobox - outbounds[0].transport: unknown transport type: raw
damix 01.10.2026
Фикс ошибки Правым кликом по серверу -> отладочная информация -> edit Заменить "net": "raw", на "net": "tcp", Нажать кнопку reload.
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru