Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.09.2009, 19:16   #1
2Live
Новичок
Джуниор
 
Регистрация: 02.09.2009
Сообщений: 2
По умолчанию StringGrid1 и StringGrid2. Их связь

здравствуйте подскажите, как можно в StringGrid1 выплывающее меню для ячеек одного столбца. и в результате заполнения этого столбца на StringGrid2 добавлялось такое же кол-во столбцов с названием этих ячеек... в данном случае оба StringGrid находятся в PageControl1.

Есть программа, которую надо восстановить, вот её часть, но не понятно что автор хотел этим сказать...


Код:
void __fastcall TMDIChildForm::PageControl1Change(TObject *Sender)
{
int i;

if(PageControl1->ActivePageIndex==2)
   StringGrid2->ColCount=GridView1->RowCount+1;


  for(i=1;i<StringGrid2->ColCount;i++)
    StringGrid2->Cells[i][0]= GridView1->Cells[1][i-1];
}

Последний раз редактировалось MaTBeu; 02.09.2009 в 22:54.
2Live вне форума Ответить с цитированием
Старый 02.09.2009, 22:43   #2
MaTBeu
Eclipse Foundation
Старожил
 
Аватар для MaTBeu
 
Регистрация: 19.09.2007
Сообщений: 2,604
По умолчанию

Делаем так, берем два грида.
Потом, событие OnSelectCell первого грида пишем код
Код:
void __fastcall TForm1::StringGrid1SelectCell(TObject *Sender, int ACol,
      int ARow, bool &CanSelect)
{
        //StringGrid1->RowCount = StringGrid2->RowCount;
        //StringGrid1->ColCount = StringGrid2->ColCount;
        for(int i = 0; i < StringGrid1->ColCount; i++)
                StringGrid1->Cells[ACol][i] = StringGrid2->Cells[ACol][i];
}
Потом при выборе ячейки одного грида выбраный столбец в одном гриде скопируется в другой.

Так, теперь выпадающее меню для одного столбца.
Кидаем на форму компонент PopupMenu, добавляем туда пункты меню. Заводим две глобальные переменные, которые будут обозначать выбранный столбец и строку.
Потом в событии, опять же OnSelectCell пишем
Код:
void __fastcall TForm1::StringGrid1SelectCell(TObject *Sender, int ACol,
      int ARow, bool &CanSelect)
{
        POINT p;
        GetCursorPos(&p);
        PopupMenu1->Popup(p.x, p.y); //разворачиваем меню
        SelectedRow = ARow; //наши глобальные переменные
        SelectedCol = ACol;    //то же
}
Дальше вешаем нужный нам код на тот или иной пункт меню.
В принципе, можно использовать только одну глобальную переменную - выбранный столбец.

Последний раз редактировалось MaTBeu; 02.09.2009 в 22:54.
MaTBeu вне форума Ответить с цитированием
Старый 03.09.2009, 01:32   #3
2Live
Новичок
Джуниор
 
Регистрация: 02.09.2009
Сообщений: 2
По умолчанию

он выдаёт такую ошибку:
"[C++ Error]Unit1.cpp(20):E2316'___fastcall TForm1::StringGrid1SelectCell(TObje ct *,int,bool &)' is not a member of 'TForm1'"
и почему то начинает ругаться на мою кнопку которая добавляет строки :
Цитата:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
switch(Form1->PageControl1->ActivePageIndex)
{

Form1->StringGrid1->RowCount++;
for(int i=1;i<Form1->StringGrid1->RowCount;i++)
Form1->StringGrid1->Cells[0][i]=i;



}
}
...
просто мне надо бы что бы добалялись столько столбцов во втором гриде скролько добавляется строк в 1, и из столбца названия писались не в столбец, а в строку.
ПРосто не знаю почему ошибку выдаёт. Может не туда записываю, но кроме *.cpp больше некуда ведь. или есть?)
2Live вне форума Ответить с цитированием
Старый 03.09.2009, 08:48   #4
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
is not a member of 'TForm1
А в Обьекте Инспекторов в событиях эта функция поставлена на обработчик OnSelectCell?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 03.09.2009, 20:10   #5
MaTBeu
Eclipse Foundation
Старожил
 
Аватар для MaTBeu
 
Регистрация: 19.09.2007
Сообщений: 2,604
По умолчанию

Цитата:
просто мне надо бы что бы добалялись столько столбцов во втором гриде скролько добавляется строк в 1, и из столбца названия писались не в столбец, а в строку.
А какого вы полезли в визуальное программирование, если не знаете даже куда код писать?

Если вы не напишете хоть кусок своего кода, то тема закроется. Времени у вас до полуночи.
MaTBeu вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
StringGrid1 Ратмир Помощь студентам 2 04.04.2009 14:51
Button1 и на Form2 открылся текст из файла (таблица)в StringGrid1. KSP Общие вопросы Delphi 2 19.09.2007 18:51
не StringGrid1.Cells[1,1]:='Delphi'; а вот так SG1.C[1,1]:='Delphi' Nemesisking Компоненты Delphi 7 08.09.2007 03:27
Связь с БД Elena БД в Delphi 4 03.05.2007 16:08