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

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

14.08.2009, 12:24. Показов 6195. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru