Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.85/33: Рейтинг темы: голосов - 33, средняя оценка - 4.85
5 / 5 / 0
Регистрация: 14.08.2009
Сообщений: 42

Обработчик события изменения ширины колонок StringGrid

14.08.2009, 12:24. Показов 6136. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго всем дня! Вопрос собственно вытекает из названия темы. Как я понял стандартного event-а у StringGrida нет. Как можно реализовать поставленную задачу "Инициализация переменной при изменении ширины колонки"?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
14.08.2009, 12:24
Ответы с готовыми решениями:

TListView Событие при изменении ширины колонок
Приветствую. Собственно вопрос - мне нужно выполнить некоторое действие во время изменения ширины колонок компонента ListView, в...

Stringgrid изменение ширины строки
Добрый вечер, задача такая. При нажатии +, строка в гриде должна увеличиваться, чтобы было видно что написано далее. void __fastcall...

Событие после изменения ширины колонки таблицы
Всем привет! Есть таблица TStringGrid со включенным goColSizing. Нужно изменить ширину таблицы после изменения ширины колонки. Хотел...

6
 Аватар для Otaka
1857 / 714 / 55
Регистрация: 11.12.2008
Сообщений: 1,019
14.08.2009, 12:45
А ты обрабатывай OnMouseMove и если размеры колонок изменились, то делай там что тебе нужно.
0
 Аватар для Jnis
13 / 13 / 2
Регистрация: 06.01.2009
Сообщений: 70
14.08.2009, 14:24
Не очень понятно, ну напишу чето, вдруг ты это хотел:
C++
1
StringGrid1->ColWidths[i] //ширина i колонки(если тебе нужно ее инициализировать или подгонять то нужно ручками в проге ее изменять)
Что бы ширину столбца можно было ручками менять измени в инспекторе объектов у StringGrid-а: Options->goColSizing на true, правда в эвентах вроде нет обработки его, поэтому используй или OnMouseMove как выше, или лучше onMouseUp(сэкономит много ресурсов), но тем не менее придется хранить глобальный массив с шириной столбцов.
0
5 / 5 / 0
Регистрация: 14.08.2009
Сообщений: 42
14.08.2009, 14:33  [ТС]
да на счет
C++
1
    StringGrid1->ColWidths[i
и Options->goColSizing я знаю... меня смущает хранение размеров колонок..... а проще получается нельзя? типа апи-шной ф-ции какой-нить?
0
 Аватар для Jnis
13 / 13 / 2
Регистрация: 06.01.2009
Сообщений: 70
14.08.2009, 15:23
Ну на счет апи функций наврятле, но в голову пришел один извращенский вариант, если никто ниче не придумает, то можешь его использовать, он надежный, но извращенский :
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
//---------------------------------------------------------------------------
int blaW1,blaW,blaC;  //заместо массива только 3 глоб переменные
//------
void __fastcall TForm1::StringGrid1MouseMove(TObject *Sender,
      TShiftState Shift, int X, int Y)
{
   int cx,cy;
   StringGrid1->MouseToCell(X,Y,cx,cy); //определяет ячейку где курсор
   if(cx<0 && cy<0)return;//убирает баг когда при перетаскивании уводишь курсор за таблицу
   if(cx-1>=0)blaW1=StringGrid1->ColWidths[cx-1]; //что бы не вылетало если уменьшаем нулевой столбец
   blaC=cx;
   blaW=StringGrid1->ColWidths[cx];
}
//---------------------------------------------------------------------------
 
void __fastcall TForm1::StringGrid1MouseUp(TObject *Sender,
      TMouseButton Button, TShiftState Shift, int X, int Y)
{
   if(StringGrid1->ColWidths[blaC]!=blaW || blaC>0 && StringGrid1->ColWidths[blaC-1]!=blaW1){
      /*ширина какого-то столбца изменилась*/
   }   
}
//---------------------------------------------------------------------------
Добавлено через 12 минут 26 секунд
если тебе нужно будет знать какой именно столбец изменился то StringGrid1MouseUp будет выглядеть так:
C++
1
2
3
4
5
6
7
8
9
10
void __fastcall TForm1::StringGrid1MouseUp(TObject *Sender,
      TMouseButton Button, TShiftState Shift, int X, int Y)
{
   if(StringGrid1->ColWidths[blaC]!=blaW){
      /*изменилась ширина (blaC)-того столбца*/
   }
   if(blaC>0 && StringGrid1->ColWidths[blaC-1]!=blaW1){
      /*изменилась ширина (blaC-1)-того столбца*/
   }
}
а на какую ширину догадаешься сам как определить
0
5 / 5 / 0
Регистрация: 14.08.2009
Сообщений: 42
14.08.2009, 16:02  [ТС]
2 Jnis:
Спасибо большое за небезразличное отношение к моему вопросу. Я при MouseDown считываю в массивчик, а при MouseUp по циклу сравниваю значения массива и StringGrid1->ColWidths[i]? если есть расхождение, то ..... Но я бы свою прогу щас выкинул бы...столько памяти жрет....
0
 Аватар для Jnis
13 / 13 / 2
Регистрация: 06.01.2009
Сообщений: 70
14.08.2009, 16:26
А зачем каждый раз при нажатии считывать? нельзя ли при запуске проги его заполнить, а потом при UPe если найден измененный столбец "изменять твою величину" и коректировать один элемент массива? Если прада у тебя там ничто еще не изменяет ширину столбцов, но и там можно добавить пару строк, что бы изменять конкретные эл-ты массива.
зы: всегда есть вариант использования моего кривого способа)))
там еще в самом начале StringGrid1MouseMove надо добавить:
TShiftState bla=Shift;
if(Shift==(bla<<ssLeft)) return;
...
уберет один баг и будет экономить проц ))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
14.08.2009, 16:26
Помогаю со студенческими работами здесь

Создать событие отслеживания ширины полей StringGrid
Здравствуйте!! Ребята, подскажите, пожалуйста!!! Я не нашёл события при помощи, которого можно отслеживать изменения ширины полей в...

StringGrid динамическая ширина колонок
День добрый! Скажите, можно ли как-то установить, чтобы ширина столбцов StringGrid менялась по содержимой в них информации? Заранее...

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

Внешний обработчик события
Всем доброго времени суток. есть класс: TPainter::TPainter(TPanel *panelTmp) { this-&gt;panel = panelTmp; } class...

Изменить обработчик события
Здравствуйте!!! Мне нужно изменить обработчик события StringGrid1DrawCell, хочу добавить еще параметров в процедуру. Дополняю...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а привычная функция main(). . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru