Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.55/20: Рейтинг темы: голосов - 20, средняя оценка - 4.55
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891

Реорганизация интерфейса

10.05.2012, 00:32. Показов 4625. Ответов 52
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Ребят, спасайте...

Конечному пользователю не нравится, как происходит выбор нескольких записей.
В чем задача: юзеру должна быть представлена информация (скажем, об авто с каким-то характеристиками). // Ну я решил это представить в виде DBGrid (как еще-то?).
Он из этого списка должен выбрать несколько авто: от 1 до n (n - кол-во записей в таблице). // Я поставил в DBGrid MultiSelect.

Ну и вот такую реализацию сочли неудобной... Да, наверное, неудобно, т.к. для выделения запи надо зажимать либо Ctrl + левая кнопка мыши (для выделения выборочных записей), либо Shift + левая кнопка мыши. Но я не знаю, как это передать и что вообще еще можно тут придумать...

Подскажите, пожалуйста...

Вот как примерно это выглядит (выбрана 1 и 3 запись).
Миниатюры
Реорганизация интерфейса  
1
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
10.05.2012, 00:32
Ответы с готовыми решениями:

Реорганизация матрицы
Здравствуйте. У меня такой вопрос, я задал матрицу транспонировал её но возникла проблема с сортировкой строк транспонированной матрицы в...

Реорганизация ЛВС
Доброго всем дня! Прошу у Вас помощи в переорганизации, перенастройке, доведение ния до ума компьютерной сети среднего предприятия. ...

Реорганизация сети
На приход стоит предположительно MikroTik RB951Ui-2HnD, в нем 2 линка от разных провайдеров на 15 и 50 мб, которые работают одновременно. ...

52
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
17.05.2012, 19:25
Студворк — интернет-сервис помощи студентам
Можно так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
class TWindowMain : public TForm
{
    ...
    // Внутри тела класса главного окна
    void WM_QueryEndSession (TMessage &msg);
    BEGIN_MESSAGE_MAP
    MESSAGE_HANDLER (WM_QUERYENDSESSION, TMessage, WM_QueryEndSession)
    END_MESSAGE_MAP (TForm)
    ...
};
 
// А реализацию метода уже где удобно (можно было и внутри класса сразу же сделать,
// а не просто объявление писать)
void
TWindowMain::WM_QueryEndSession (TMessage &msg)
{
    Close();
    TForm::Dispatch(&msg);
}
Можно сяк:
Перехват сообщений без message map


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
// В  *.h
private:    // User declarations
    TWndMethod Old_Form_Proc;
    void __fastcall New_Form_Proc(TMessage& msg);
 
// В  *.cpp
void __fastcall TForm1::FormCreate(TObject * Sender)
{
    Old_Form_Proc = WindowProc;
    WindowProc = New_Form_Proc;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::New_Form_Proc(TMessage& msg)
{
    switch (msg.Msg) {
        case WM_MOVE: // при перемещении формы
            if (Form2) {
                Form2->Top = Top + Height;
                Form2->Left = Left;
                Form2->Width = Width;
            }
            break;
        case WM_SIZE: // при изменении размеров формы
            if (Form2) {
                Form2->Top = Top + Height;
                Form2->Left = Left;
                Form2->Width = Width;
            }
            break;
        default:
            ;
    }
 
    Old_Form_Proc(msg);
}
Источник <https://www.cyberforum.ru/cpp-builder/thread518941.html#post2841038>
1
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
17.05.2012, 19:52
Ну поидее можно и так:
C++
1
2
3
4
5
6
//---------------------------------------------------------------------------
void __fastcall TForm1::ApplicationEvents1Message(tagMSG &Msg, bool &Handled)
{
if(Msg.message == WM_KILLFOCUS) ShowMessage("!!!");
}
//---------------------------------------------------------------------------
только чет само собщение не ловится,а когда оно должно наступать?
1
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
17.05.2012, 19:54  [ТС]
BRcr, спасибо, но все равно не выходит.

C++
1
2
3
4
5
6
7
8
9
10
11
12
void __fastcall TForm2::New_Form_Proc(TMessage& msg)
{
    switch (msg.Msg) {
        case WM_KILLFOCUS:
            if (Form2) {
    keybd_event(VK_LCONTROL, 0x1D, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0);
            }
            break;
    }
 
    Old_Form_Proc(msg);
}
Работает так:
1) свернул форму - ничего не произошло: ктрл не отжался. Развернул обратно - сработал WM_KILLFOCUS.
2) форму послал на задний план - также ничего не произошло.

0
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
17.05.2012, 19:56
Скорее всего это подойдет (компонент ApplicationEvents)
C++
1
2
3
4
5
6
//---------------------------------------------------------------------------
void __fastcall TForm1::ApplicationEvents1Deactivate(TObject *Sender)
{
ShowMessage("!!!"); // Делаем что надо
}
//---------------------------------------------------------------------------
1
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
17.05.2012, 19:59
Цитата Сообщение от Avazart Посмотреть сообщение
а когда оно должно наступать?
Наступает оно по идее "immediately before window loses the keyboard focus."
Надо, значит, другое сообщение поискать, поадекватнее...
1
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
17.05.2012, 20:09  [ТС]
Ооочень странно.
Ребят, попробуйте это, пожалуйста.

У меня работает аналогично:

Цитата Сообщение от The_Immortal Посмотреть сообщение
свернул форму - ничего не произошло: ктрл не отжался. Развернул обратно - сработало.
Добавлено через 3 минуты
Avazart,
Цитата Сообщение от Avazart Посмотреть сообщение
Скорее всего это подойдет (компонент ApplicationEvents)
У меня вообще не сработал

Добавлено через 1 минуту
В .h:
C++
1
2
private:    // User declarations
    void __fastcall ApplicationEvents1Deactivate(TObject *Sender);
В .cpp:

C++
1
2
3
4
void __fastcall TForm2::ApplicationEvents1Deactivate(TObject *Sender)
{
ShowMessage("!!!"); // Делаем что надо
}
Правильно делаю?
0
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
17.05.2012, 20:15
компонент ApplicationEvents !!!!
Обработчик в эвентсах просто выбери и код туда просто вставь...
Проверял у меня работает ( покрайней мере с ShowMessage() c клавишами не проверял )
1
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
17.05.2012, 20:17  [ТС]
Avazart,

Понял!
0
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
17.05.2012, 20:18
В эвенстах чего? Формы?
компонент ApplicationEvents !!!!
0
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
17.05.2012, 20:26  [ТС]
Avazart, да я уже столько самопальных методов сегодня надобавлял, что туплю жестко

ОГРОМНЕЙШЕЕ СПАСИБО!

Мужики, ну что бы я без вас делал????
0
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
17.05.2012, 20:28
Мужики, ну что бы я без вас делал????
Читал бы книги и дружил бы с google -ом...
0
17.05.2012, 20:29  [ТС]

Не по теме:

Avazart, ага и реорганизовал бы интерфейс к году так 2015-му :)

0
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
17.05.2012, 20:41
Не по теме:
Конец света вроде отложили так что может успел бы
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
17.05.2012, 20:41

Реорганизация журнала
Всем добрый день! В лаборатории, в которой я работаю, существует журнал учета работы сканирующего микроскопа. Журнал представляет собой...

Реорганизация охлаждения и термопаста
Недавно общался с человеком который разогнал процессор FX8350 до 4,8 ГГц при напряжении 1,5В. С воздушным охлаждением температура у него...

Реорганизация сети на работе
Приветствую Всех! Наконец то я добрался до создания небольшой сети на работе. Все досталось в ужасном виде, и как бы не обязан я это все...

Реорганизация CSV-файла
есть cvs вида : vendor;model;year;modification;name;type Acura;CL;1998;&quot;2.3 i&quot;;&quot;205/55 R16&quot;;&quot;Заводская комплектация:&quot; ...

Реорганизация локальной сети и сервера
Здравствуйте! В организации где я сейчас работаю, разработана локальная сеть в 2006 году. Есть 1 компьютер (сервер) на нем...


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

Или воспользуйтесь поиском по форуму:
53
Ответ Создать тему
Новые блоги и статьи
Генератор паролей (вариант №3)
Maks 30.10.2026
Финальная версия генератора паролей 1С. Доработка решения в этот раз коснулась только визуальной части, а именно, добавлен реквизит ДопПараметры (тип Булево), который скрывает/ отображает реквизиты:. . .
Магическое мышление и магия, современная наука не отличима от магии (говорит ИИ Джемени)
zorxor 30.10.2026
Джемени, расскажи, пожалуйста, что такое магическое мышление, что такое магия, почему современная наука чем-то напоминает магию? Фраза «Любая достаточно развитая технология неотличима от магии». . .
За какое время ИИ может подобрать пароль по хешу (рассказывает Джемени ИИ)
zorxor 30.10.2026
Расскажи, Джемени, если известен хэш МД5, например, за сколько ИИ сможет подобрать соответствующий пароль? Искусственный интеллект (ИИ) может подобрать простой или средний по сложности пароль по. . .
Кто убил Suno? Почему наше солнышко погасло? (диалог с ИИ Джемени)
zorxor 30.10.2026
Как убивали Suno. Хронология. «Убийство» музыкальной нейросети Suno — это затяжной процесс, в котором технологический хайп стартапа разбился о жесткую реальность судебных исков от гигантов. . .
Генератор паролей (вариант №2)
Maks 30.10.2026
Обновленная версия ранее созданной обработки. Добавлены следующие реквизиты типа Булево: - Буквы; - Цифры; - Символы. Изменена логика команды "Сгенерировать" и процедуры "ПриОткрытии":. . .
Генератор паролей (вариант №1)
Maks 29.10.2026
Реализация из решения ниже выполнена исключительно по моей инициативе, дабы облегчить себе работу в создании паролей для администрируемых мною сервисов и пользователей. Самым главным критерием для. . .
Установка ChatGPT (Codex) на Windows без использования Microsoft Store
Fabien159 28.10.2026
Здравствуйте всем читающим! Опишу процесс установки ChatGPT (Codex) на Windows, если по каким-то причинам у вас не получается устанавить его через Microsoft Store. И так: 1. Скачиваем с. . .
Программное добавление префикса в нумерацию документов
Maks 27.10.2026
Реализация из решения ниже выполнена в самописной конфигурации на БСП (помощь начинающему коллеге). Задача: Программно добавить префикс в нумерацию документов. Решение: В модуле объекта. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru