Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.96/27: Рейтинг темы: голосов - 27, средняя оценка - 4.96
11 / 11 / 6
Регистрация: 03.04.2011
Сообщений: 631

Нажатие курсором в ячейке StringGrid

26.02.2012, 12:04. Показов 5923. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
может подскажите как код который при нажатии на ячейки в переменной отображает что было нажатие? ну допустим я нажал курсором мыше я любой ячейки компонента StringGrid и моей переменной какой нибудь допустим B после нажатия присвоилось какое то значение. просто как отобразить что на ячейку было нажатие курсором один раз? может есть такой код пример простой киньте пожалуйста очень нужен
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
26.02.2012, 12:04
Ответы с готовыми решениями:

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

Чудеса с курсором в ячейке.
Сравниваю две одинаковые строки из двух листов, полученых экспортом из другой программы. Предварительно строки обработаны в VBA (с...

Запросить Y пользователя нажатие одной из стрелок управления курсором
Запросить Y пользователя нажатие одной из стрелок управления курсором. Определить нажатую клавишу, вывести на экран соответствующий...

14
1 / 1 / 1
Регистрация: 20.10.2011
Сообщений: 5
26.02.2012, 12:59
У TStringGrid есть событие OnClickтие OnClick
Вот и пользуйтесь им:
C++
1
2
3
4
5
6
void __fastcall TForm1::StringGrid1Click(TObject *Sender)
{
ShowMessage("Клик! Выделенная ячейка: \n "
    "Строка: "+IntToStr(StringGrid1->Row)+
    "\nСтолбец: "+IntToStr(StringGrid1->Col));
}
0
117 / 74 / 6
Регистрация: 23.01.2012
Сообщений: 186
26.02.2012, 13:03
для StringGrid есть метод
C++
1
2
3
4
5
6
7
8
void __fastcall TForm1::StringGrid1SelectCell(TObject *Sender, int ACol, int ARow,
          bool &CanSelect)
{
 ваша переменная = StringGrid1->Cells[ACol][ARow];
// или если таблиц много,то 
TStringGrid * tmp_grid = (TStringGrid *)Sender;
ваша переменная = tmp_grid ->Cells[ACol][ARow];
}
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
26.02.2012, 13:24
C++
1
StringGrid->MouseToCell(X, Y, Col, Row);
0
11 / 11 / 6
Регистрация: 03.04.2011
Сообщений: 631
26.02.2012, 13:45  [ТС]
не могу сообразить какой вариант выбрать... ну вот допустим нажимаю я на одну из ячеек StringGrid мне надо чтоб именно этой ячейки с адресом A[i][j] присвоилось какое то значение
0
 Аватар для __bool
288 / 229 / 27
Регистрация: 13.06.2010
Сообщений: 744
26.02.2012, 13:57
Да ё моё..
C++
1
2
3
4
5
void __fastcall TForm1::StringGrid1SelectCell(TObject *Sender, int ACol, int ARow,
          bool &CanSelect)
{
    StringGrid1->Cells[ACol][ARow] = Random(1000);
}
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
26.02.2012, 14:05
lexflax, хорошо бы почитать рекомендованную литературу, ссылка в теме Как использовать компонент StringGrid в виде двумерного массива? , там чего-то про типа
C++
1
SG->Cells[i][j] = "Типа этого";
было, подозреваю.
0
11 / 11 / 6
Регистрация: 03.04.2011
Сообщений: 631
26.02.2012, 14:47  [ТС]
как добавил строку
C++
1
2
void __fastcall TForm1::StringGrid1SelectCell(TObject *Sender, int ACol, int ARow,
                  bool &CanSelect);
стал ошибку выдавать при запуске
inccorrect method declaration in class Tform1
вообще пока такой код просто функции не заполненные
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
#include <vcl.h>
#pragma hdrstop
 
#include "krest.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::StringGrid1Click(TObject *Sender)
{
 
}
//----------------------------------------------------------------------------
void __fastcall TForm1::StringGrid1SelectCell(TObject *Sender, int ACol, int ARow,
                  bool &CanSelect)
{
        StringGrid1->Cells[Col][Row] = Random(10);
}
//---------------------------------------------------------------------------
void __fastcall HODIGROKA(TObject *Sender)
{
 
}
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
#ifndef krestH
#define krestH
//---------------------------------------------------------------------------
#include <Classes.hpp>
#include <Controls.hpp>
#include <StdCtrls.hpp>
#include <Forms.hpp>
#include <Grids.hpp>
//---------------------------------------------------------------------------
class TForm1 : public TForm
{
__published:    // IDE-managed Components
    TStringGrid *StringGrid1;
    void __fastcall StringGrid1Click(TObject *Sender);
    void __fastcall TForm1::StringGrid1SelectCell(TObject *Sender, int ACol, int ARow,
                  bool &CanSelect);
    void __fastcall HODIGROKA(TObject *Sender);
private:    // User declarations
public:     // User declarations
    __fastcall TForm1(TComponent* Owner);
};
//---------------------------------------------------------------------------
extern PACKAGE TForm1 *Form1;
//---------------------------------------------------------------------------
#endif
из за чего может ругаться че ему не нравится?
0
 Аватар для __bool
288 / 229 / 27
Регистрация: 13.06.2010
Сообщений: 744
26.02.2012, 14:50
Вот так надо
C++
1
2
3
4
5
void __fastcall TForm1::StringGrid1SelectCell(TObject *Sender, int ACol, int ARow,
                                  bool &CanSelect)
{
         StringGrid1->Cells[ACol][ARow] = Random(10);
}
Вы смотрите какие параметры то приходят.
0
11 / 11 / 6
Регистрация: 03.04.2011
Сообщений: 631
26.02.2012, 15:08  [ТС]
да тоже самое получается это я уже потом изменя пробовал вдруг пропустит даже как у вас все равно та же сама ошибка

Добавлено через 16 минут
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
//---------------------------------------------------------------------------
 
#include <vcl.h>
#pragma hdrstop
 
#include "krest.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::StringGrid1SelectCell(TObject *Sender, int ACol, int ARow,
                  bool &CanSelect)
{
        StringGrid1->Cells[ACol][ARow] = 2;
}
щас все запускается но результата нет которого хотел добиться, нажимая на ячейки в стрингрид мышкой в них 2 не появляется(((
0
 Аватар для __bool
288 / 229 / 27
Регистрация: 13.06.2010
Сообщений: 744
26.02.2012, 17:25
Все появляется у всех.
Ячейки TStringGrid'а имеют тип String. String в них и пишите!
C++
1
StringGrid1->Cells[ACol][ARow] = "2";
C++
1
StringGrid1->Cells[ACol][ARow] = IntToStr(2);
0
11 / 11 / 6
Регистрация: 03.04.2011
Сообщений: 631
26.02.2012, 17:35  [ТС]
все равно в ячейках не появляется двойка после нажатия курсором на них, препрепил файл посмотрите
Вложения
Тип файла: rar крестики нолики.rar (7.14 Мб, 11 просмотров)
0
11 / 11 / 6
Регистрация: 03.04.2011
Сообщений: 631
26.02.2012, 17:50  [ТС]
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <vcl.h>
#pragma hdrstop
 
#include "krest.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
 
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::StringGrid1SelectCell(TObject *Sender, int ACol, int ARow,
                  bool &CanSelect)
{
        StringGrid1->Cells[ACol][ARow] = IntToStr(2);
}
0
 Аватар для __bool
288 / 229 / 27
Регистрация: 13.06.2010
Сообщений: 744
27.02.2012, 16:00
Вообщем, не знаю как вы "отвязали" имеющееся событие OnSelectCell, но следующая последовательность событий решила вашу проблему:
1) Выберите объект StringGrid1 на форме
2) В инспекторе объектов (Object Inspector) перейдите во вкладку Events
3) Дабл-клик по событию OnSelectCell (кстати обратите внимание, событие не установлено)
4) Наслаждаемся двойками в клетках, на которые кликаем
1
11 / 11 / 6
Регистрация: 03.04.2011
Сообщений: 631
28.02.2012, 05:49  [ТС]
bool огромное спасибо заработало наконец
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
28.02.2012, 05:49
Помогаю со студенческими работами здесь

Дописывание к ячейке StringGrid
Добрый день, как сделать так чтобы нажимая кнопку, которая добавляет информацию в ячейку, не стирала прежнюю информацию,а дописывала ее к...

Фокус на ячейке StringGrid
Добрый вечер! Есть база товаров в StringGrid. Нужно чтобы процедура поиска не только находила нужную ячейку, но и выделяла строку, в...

Выравнивание в ячейке StringGrid
Пожалуйста, дайте полный код процедуры по выравниванию текста в ячейке StringGrid. В интернете находил способы для Delphi, но не смог с...

StringGrid и курсор в ячейке
Доброго времени суток, проблема наверника до ужаса бональна, но прошу помощи Есть StringGrid в ячейку которого программно заносятся...

Как узнать в какой ячейке Grid произошло нажатие?
Имеется Grid 3х3. Каждое его поле разбито ещё на 3х3 тоже Grid'ом. Как при клике мышки, узнать на каком поле и в какой его ячейке произошло...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
Контроль уникальности заводского номера - вариант №2
Maks 24.03.2026
В отличие от предыдущего варианта добавлено прерывание циклов, также добавлены новые переменные для сохранения контекста ошибки перед прерыванием цикла: Процедура ПередЗаписью(Отказ, РежимЗаписи,. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера - вариант №1
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере нетипового документа выдачи шин для спецтехники с табличной частью, разработанного в конфигурации КА2. Данные берутся из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru