Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/8: Рейтинг темы: голосов - 8, средняя оценка - 4.50
21 / 9 / 4
Регистрация: 15.12.2014
Сообщений: 663

Навигация по StringGrid

01.04.2015, 15:16. Показов 1647. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Друзья, подскажите, в какой обработчик нужно засунуть
C++
1
SendMessage (StringGrid1 -> Handle, WM_VSCROLL, SB_BOTTOM, 0 );
чтобы последняя строка была в положении
C++
1
StringGrid1->Row = StringGrid1->RowCount - 1;
, то есть в самом нижней видимой строке грида? Хочу заменить на SendMessage, потому что при удалении строки RowCount - 1 не работает. Вверх уходит. Или подскажите, как починить. Спасибо.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
01.04.2015, 15:16
Ответы с готовыми решениями:

Delphi 7 Stringgrid Нужно сделать цикл для заполнения Stringgrid данными из другого Stringgrid
Нужно чтобы из Stringgrid1 данные переносились в Stringgrid2 Но ТОЛЬКО ПО УСЛОВИЮ Таблицы Stringgrid2 На рис всё показано. За работающий...

Необходимо сложить ячейки в столбце Stringgrid и вывести в другой Stringgrid
Необходимо сложить ячейки в столбце Stringgrid и вывести в другой Stringgrid Количество столбцов и строк задается пользователем

Как перенести строку из одного StringGrid в столбец другого StringGrid?
Всем добра уважаемые спецы в программировании! Не могу сообразить как сделать следующее в StringGrid'е. Имеем StringGrid1 его заполняем...

10
Почетный модератор
Эксперт С++
 Аватар для SatanaXIII
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,906
01.04.2015, 15:30
Цитата Сообщение от Sergey_03 Посмотреть сообщение
потому что при удалении строки RowCount - 1 не работает. Вверх уходит
Ну а после удаления сразу и воткните.
0
21 / 9 / 4
Регистрация: 15.12.2014
Сообщений: 663
01.04.2015, 15:51  [ТС]
Дело в том, что я убрал вертикальный скролл в гриде. С ним изначально работает, без него не работает. Но мне его нужно убрать, что бы внешний вид не портить.

Добавлено через 7 минут
У меня таблица 10 строк вмещает. Попробовал сделать так
C++
1
2
3
4
StringGrid1->RowCount = s1;
 if(StringGrid1->RowCount <= 10)
 {StringGrid1->Row = StringGrid1->RowCount -1;}
 else {StringGrid1->TopRow = StringGrid1->RowCount -10;}
но чегото вроде глючит..вылетало несколько раз с ошибкой поинтер
0
Почетный модератор
Эксперт С++
 Аватар для SatanaXIII
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,906
01.04.2015, 16:05
Где-то я прям видел этот кусок кода. Хмм..
0
21 / 9 / 4
Регистрация: 15.12.2014
Сообщений: 663
01.04.2015, 16:23  [ТС]
Цитата Сообщение от SatanaXIII Посмотреть сообщение
Где-то я прям видел этот кусок кода. Хмм..
Из головы намучал, но нашел решение лучше
C++
1
ShowScrollBar(StringGrid1->Handle,SB_VERT,false);
,включив вертикальный скролл в инспекторе грида, вставил в обработчик размеров формы - работает. Подскажите, в какой обработчик будет правильно?
0
Почетный модератор
Эксперт С++
 Аватар для SatanaXIII
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,906
01.04.2015, 16:37
Ага. Нашел из какой темы код. У вас он очень запоминается.

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

Если в общем:
Цитата Сообщение от Sergey_03 Посмотреть сообщение
Подскажите, в какой обработчик будет правильно?
Ровно в тот, в котором происходит удаление строки.
1
21 / 9 / 4
Регистрация: 15.12.2014
Сообщений: 663
01.04.2015, 16:57  [ТС]
Цитата Сообщение от SatanaXIII Посмотреть сообщение
Ага. Нашел
так ту тему я же создавал, но кода там не было этого..
Цитата Сообщение от SatanaXIII Посмотреть сообщение
опишите пожалуйста словами
есть грид, он то программно заполняется, то программно удаляет некоторые строки. Нужно было, чтобы всегда последняя строка была внизу, но вроде разобрался, кроме того, куда это воткнуть. Наверное в создание формы
Цитата Сообщение от SatanaXIII Посмотреть сообщение
в котором происходит удаление строки
там не работает. скролл виден.
0
Почетный модератор
Эксперт С++
 Аватар для SatanaXIII
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,906
02.04.2015, 09:44
Цитата Сообщение от Sergey_03 Посмотреть сообщение
он то программно заполняется, то программно удаляет некоторые строки
Цитата Сообщение от Sergey_03 Посмотреть сообщение
куда это воткнуть
Хм.. Как на счет воткнуть это туда, где программно удаляются строки?
Цитата Сообщение от Sergey_03 Посмотреть сообщение
Наверное в создание формы
Скорее всего.
1
21 / 9 / 4
Регистрация: 15.12.2014
Сообщений: 663
18.04.2015, 12:44  [ТС]
Такой вопросик есть. Есть две кнопки на форме, есть грид с данными. Кнопками делаю навигацию вверх вниз. Например для навигации вверх в событии MouseDown пишу
C++
1
2
if (StringGrid1->Row > 0)
                    StringGrid1->Row --;
Все работает. Вопрос собственно в том, возможно ли организовать удержание кнопки. Сейчас одно нажатие приводит к переходу на строку выше. Мне нужно чтобы в зажатом состоянии была имитация зажатия на клавиатуре стрелки вверх, VK_UP вроде. Спасибо.
0
Практикантроп
 Аватар для nick42
4841 / 2726 / 534
Регистрация: 23.09.2011
Сообщений: 5,798
18.04.2015, 20:11
Цитата Сообщение от Sergey_03 Посмотреть сообщение
чтобы последняя строка была в положении
Код C++
1
StringGrid1->Row = StringGrid1->RowCount - 1;
, то есть в самом нижней видимой строке грида
Я для этой цели использую TopRow __
C++
1
2
    int gu= grid1->Height/grid1->DefaultRowHeight;
    if(idx+3>gu) grid1->TopRow = idx+3-gu;
(здесь idx - номер последней введенной строки; под ней остается еще одна пустая). Может пригодится...
1
21 / 9 / 4
Регистрация: 15.12.2014
Сообщений: 663
18.04.2015, 21:24  [ТС]
Цитата Сообщение от nick42 Посмотреть сообщение
Я для этой цели использую TopRow
Спасибо!
По поводу навигации сделал так :
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
36
37
void __fastcall TForm1::Image1MouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift,
          int X, int Y)
{
    Timer1->Interval = 50 ;Timer1->Enabled = 1;
}
 
void __fastcall TForm1::Image1MouseUp(TObject *Sender, TMouseButton Button, TShiftState Shift,
          int X, int Y)
{
    Timer1->Enabled = 0;
}
//------------------------------------------------------------------------------
void __fastcall TForm1::Image2MouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift,
          int X, int Y)
{
    Timer2->Interval = 50 ;Timer2->Enabled = 1;
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::Image2MouseUp(TObject *Sender, TMouseButton Button, TShiftState Shift,
          int X, int Y)
{
       Timer2->Enabled = 0;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{   
      if (StringGrid1->Row > 0)
               StringGrid1->Row --;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Timer2Timer(TObject *Sender)
{
       if (StringGrid1->Row < StringGrid1->RowCount-1)
               StringGrid1->Row ++;
}
//---------------------------------------------------------------------------
таймеры в инспекторе Enabled = 0
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
18.04.2015, 21:24
Помогаю со студенческими работами здесь

Вывести данные из StringGrid-ов на двух формах в StringGrid на третьей форме
Помогите,не разбираюсь,только учусь:(:wall:...Вообщем,имеется программа с 3 формами. На первой из них находится вводный StringGrid с...

Содержимое выделенной строки из первого StringGrid-а перенести во второй StringGrid
Нужно написать программу которая выполняет следующие действия. Есть два StringGrid. По нажатия на кнопку, Содержимое выделенной строки из...

StringGrid: проверить, имеется ли строка с ключевым полем во втором StringGrid-е
Имеются два StringGrid'a, у каждого есть ключевое поле. В первом sg значения ключевого поля могут повторятся, во втором нет. Нужно...

Значение одной ячейки первого StringGrid-а присвоить другой ячейке второго StringGrid-а
скажите пожалуйста, вот нам даны две таблицы stringgrid, как значение одной ячейки,первой таблицы, присвоить другой ячейке второй таблице?

Сохранение из StringGrid массива в файл и загрузка из файла в StringGrid
Всем доброго времени суток =) У меня есть загрузка массива из StringGrid на Delphi 2010: //загрузка из файла procedure...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru