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

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

26.02.2012, 12:04. Просмотров 3067. Ответов 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 Мб, 8 просмотров)
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