Форум программистов, компьютерный форум, киберфорум
Наши страницы
C++ Builder
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.71/17: Рейтинг темы: голосов - 17, средняя оценка - 4.71
lexflax
11 / 11 / 6
Регистрация: 03.04.2011
Сообщений: 627
1

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

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

может подскажите как код который при нажатии на ячейки в переменной отображает что было нажатие? ну допустим я нажал курсором мыше я любой ячейки компонента StringGrid и моей переменной какой нибудь допустим B после нажатия присвоилось какое то значение. просто как отобразить что на ячейку было нажатие курсором один раз? может есть такой код пример простой киньте пожалуйста очень нужен
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.02.2012, 12:04
Ответы с готовыми решениями:

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

Текст жирным в ячейке StringGrid
Как сделать текст в ячейке StringGrid жирным?

С новой строки в ячейке StringGrid
Приветствую всех. Ребята если кто в курсе, пожалуйста помогите. Например я...

OnClick на опеределеной ячейке в StringGrid
Как обработать событие OnClick на определенной ячейке в StringGrid? Например...

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

14
spaum
1 / 1 / 1
Регистрация: 20.10.2011
Сообщений: 5
26.02.2012, 12:59 2
У 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
_engineer_
117 / 74 / 6
Регистрация: 23.01.2012
Сообщений: 186
26.02.2012, 13:03 3
для 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
LK
Заблокирован
26.02.2012, 13:24 4
C++
1
StringGrid->MouseToCell(X, Y, Col, Row);
0
lexflax
11 / 11 / 6
Регистрация: 03.04.2011
Сообщений: 627
26.02.2012, 13:45  [ТС] 5
не могу сообразить какой вариант выбрать... ну вот допустим нажимаю я на одну из ячеек StringGrid мне надо чтоб именно этой ячейки с адресом A[i][j] присвоилось какое то значение
0
__bool
285 / 226 / 27
Регистрация: 13.06.2010
Сообщений: 744
26.02.2012, 13:57 6
Да ё моё..
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
LK
Заблокирован
26.02.2012, 14:05 7
lexflax, хорошо бы почитать рекомендованную литературу, ссылка в теме Как использовать компонент StringGrid в виде двумерного массива? , там чего-то про типа
C++
1
SG->Cells[i][j] = "Типа этого";
было, подозреваю.
0
lexflax
11 / 11 / 6
Регистрация: 03.04.2011
Сообщений: 627
26.02.2012, 14:47  [ТС] 8
как добавил строку
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
285 / 226 / 27
Регистрация: 13.06.2010
Сообщений: 744
26.02.2012, 14:50 9
Вот так надо
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
lexflax
11 / 11 / 6
Регистрация: 03.04.2011
Сообщений: 627
26.02.2012, 15:08  [ТС] 10
да тоже самое получается это я уже потом изменя пробовал вдруг пропустит даже как у вас все равно та же сама ошибка

Добавлено через 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
285 / 226 / 27
Регистрация: 13.06.2010
Сообщений: 744
26.02.2012, 17:25 11
Все появляется у всех.
Ячейки TStringGrid'а имеют тип String. String в них и пишите!
C++
1
StringGrid1->Cells[ACol][ARow] = "2";
C++
1
StringGrid1->Cells[ACol][ARow] = IntToStr(2);
0
lexflax
11 / 11 / 6
Регистрация: 03.04.2011
Сообщений: 627
26.02.2012, 17:35  [ТС] 12
все равно в ячейках не появляется двойка после нажатия курсором на них, препрепил файл посмотрите
0
Вложения
Тип файла: rar крестики нолики.rar (7.14 Мб, 9 просмотров)
lexflax
11 / 11 / 6
Регистрация: 03.04.2011
Сообщений: 627
26.02.2012, 17:50  [ТС] 13
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
285 / 226 / 27
Регистрация: 13.06.2010
Сообщений: 744
27.02.2012, 16:00 14
Вообщем, не знаю как вы "отвязали" имеющееся событие OnSelectCell, но следующая последовательность событий решила вашу проблему:
1) Выберите объект StringGrid1 на форме
2) В инспекторе объектов (Object Inspector) перейдите во вкладку Events
3) Дабл-клик по событию OnSelectCell (кстати обратите внимание, событие не установлено)
4) Наслаждаемся двойками в клетках, на которые кликаем
1
lexflax
11 / 11 / 6
Регистрация: 03.04.2011
Сообщений: 627
28.02.2012, 05:49  [ТС] 15
bool огромное спасибо заработало наконец
0
28.02.2012, 05:49
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.02.2012, 05:49

не понятное значчение в ячейке StringGrid
Добрый вечер! подскажите пожалуйста, у меня проблема, в программе значение 1...

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

Событие OnClick на fixed ячейке в StringGrid
Есть ли такое событие, которое позволяет отлавливать клин на fixed ячейке в...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru