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

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

10.05.2012, 00:32. Показов 4317. Ответов 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
 Аватар для QWIPQ
144 / 123 / 14
Регистрация: 10.10.2011
Сообщений: 366
Записей в блоге: 2
10.05.2012, 01:19
ну как вариант(мое мнение можешь не согласиться):
- если специализируетесь на нескольких марках то сперва лучше сделать большие кнопки с марками авто(BitButton) под ними подписи с названиями;
- внутри них список машин в виде(ListBox) по клику на лист бокс переходим на комплектации;
- там комплектации и ценовая политика и краткая инфо в виде(DBGrid) + ниже на этой странице выпадающие списки комплектаций с пометкой(TCheckBox) для сравнения нескольких машин, где можн их сравнить;
- при нажатии кнопки "сравнить" подгружалась бы таблица(DBGrid) сверху фотка машины(знак хотябы) над столбцами, самая левая колонка для всех одинакова и фиксирована, под фотками тех. описание последняя строка цена...

P.S. всякое такое красивее реализовывать в Java
P.S.S вот тебе, надеюсь на тебя найдет озарение
1
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
10.05.2012, 01:32  [ТС]
QWIPQ, просто грандиозная идея, не мог не поставить +1

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

Я пока думаю над тем, как сделать выделение в ДБгриде Мышкой, без использования клавы... Гугл не помог...

Это вообще реально?
1
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
10.05.2012, 02:41
Может можно программно жать кнопку?
1
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
10.05.2012, 08:22  [ТС]
Avazart, в смысле? Добавить еще рядом кнопочку "Выбрать", по одной строчке выделять в ДБГриде и жмякать на эту кнопочку?
0
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
10.05.2012, 16:09
Имелось ввиду программно зажимать Ctrl. Просто и эффективно.

Можно и посимпатишнее, но несколько неудобнее вариант. Над каждой ячейкой при наведении на нее курсора отображать checkbox и им менять свойство ячейки selected. Неудобнее это тем, что в checkbox еще целиться надо мышкой, а так ткнул куда попало на ячейку и все.
1
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
10.05.2012, 16:25  [ТС]
BRcr, да, я с чеками уже думал - мне не очень как-то идея... А вот с программным зажатием кнопки... Действительно здоровский вариант!
А на какое событие? OnCellClick?
0
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
10.05.2012, 16:59
Лучше кнопочку рядом примастрячить - нажал ее и начал множественный выбор.
Если на OnCellClick, то придется делать кнопочку на снятие выделения со всех.
1
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
10.05.2012, 17:02  [ТС]
BRcr, да, точно!

Ребят, а теперь не подскажите, в какую сторону копать для зажатия клавиши Ctrl? Чего-то я искать не умею походу...
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
10.05.2012, 17:16
C++
1
Shift.Contains(ssCtrl)
0
 Аватар для QWIPQ
144 / 123 / 14
Регистрация: 10.10.2011
Сообщений: 366
Записей в блоге: 2
10.05.2012, 17:57
ну так контрл будет зажат пока прога работает а допустим ее свернут и откроют ворд например и станут печатать... тут тогда над еще фокус прикрутит чтоб контрл зажимался ток если мышка попала на DBGrid или хотяб форма являлась активным окном
0
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
10.05.2012, 19:00
Цитата Сообщение от The_Immortal Посмотреть сообщение
не подскажите, в какую сторону копать для зажатия клавиши Ctrl?
C++
1
2
3
4
5
6
7
8
9
keybd_event(VK_LCONTROL, // так зажимаем левый Ctrl
            0x1D,
            KEYEVENTF_EXTENDEDKEY | 0,
            0);
 
keybd_event(VK_LCONTROL, // так отжимаем левый Ctrl
            0x1D,
            KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP,
            0);
0
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
10.05.2012, 20:03
Работает, но проблема в том как узнать какую кнопку мыши нажимает пользователь, что бы отделить выделение от простого клика.
MouseDown не настутает как оказалось при клике на по ячейке
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
//---------------------------------------------------------------------------
void __fastcall TForm1::DBGridMouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift,
          int X, int Y)
{
//if (Shift.Contains(ssRight))
// keybd_event( VK_LCONTROL,0x1D,KEYEVENTF_EXTENDEDKEY | 0,0 );
}
//---------------------------------------------------------------------------
void __fastcall TForm1::DBGridCellClick(TColumn *Column)
{
keybd_event( VK_LCONTROL,0x1D,KEYEVENTF_EXTENDEDKEY | 0,0 );
//keybd_event( VK_LCONTROL,0x1D,KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP,0);
}
//---------------------------------------------------------------------------
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
11.05.2012, 02:57
C++
1
2
3
4
5
6
7
8
9
10
void __fastcall TForm1::DBGridMouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift,
          int X, int Y)
{
  if (Button==mbLeft) {
    ShowMessage("Левая");
  }
  if (Button==mbRight) {
    ShowMessage("Правая");
  }
}
0
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
11.05.2012, 03:01
C++
1
2
3
4
5
6
7
8
9
10
void __fastcall TForm1::DBGridMouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift,
          int X, int Y)
{
  if (Button==mbLeft) {
    ShowMessage("Левая");
  }
  if (Button==mbRight) {
    ShowMessage("Правая");
  }
}
Как говорил один препод это написано "левой ногой" тобиш не в тему, потому как
MouseDown не настутает как оказалось при клике на по ячейке
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
11.05.2012, 03:15
Может, оно наступает при нажатии клавиши на элементе управления? Обработку нажатия в пределах ячейки и само нажатия следует делать самостоятельно. У StringGrid есть такая вещь, как
C++
1
StringGrid->MouseToCell(X, Y, Col, Row);
, интересно, у DBGrid оно тоже есть ?

Не по теме:

Ну и грубить-то зачем?



Добавлено через 2 минуты
Вспомнил таки: Как узнать или изменить позицию курсора мыши? Как эмулировать нажатия кнопок мыши?
0
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
11.05.2012, 04:10
Есть
C++
1
DBGrid->MouseCoord(X,Y);
Только что это дает?
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
11.05.2012, 04:20
Дает координаты мыши, так понимаю, если они попадают в координаты ячейки - ловим сообщения:
C++
1
2
3
4
5
6
7
8
9
10
const WM_MOUSEMOVE = 0x200;
const WM_LBUTTONDOWN = 0x201; // Button down
const WM_LBUTTONUP = 0x202; // Button up
const WM_LBUTTONDBLCLK = 0x203; // Double-click
const WM_RBUTTONDOWN = 0x204; // Button down
const WM_RBUTTONUP = 0x205; // Button up
const WM_RBUTTONDBLCLK = 0x206; // Double-click
const WM_MBUTTONDOWN = 0x207; // Button down
const WM_MBUTTONUP = 0x208; // Button up
const WM_MBUTTONDBLCLK = 0x209; // Double-click
0
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
11.05.2012, 04:26
Тобиш хук плюс анализ ректов каждой ячейки?
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
11.05.2012, 04:34
Относительно хука вам виднее , я имел в виду что-нибудь попроще, типа:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
void TForm::MouseClick(TMessage &msg)
{
  switch (msg.Msg) {
    case WM_LBUTTONDOWN:
      //...
    break;
    case WM_RBUTTONDOWN:
      //...
    break;
    default:
    ;
  }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
11.05.2012, 04:34
Помогаю со студенческими работами здесь

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru