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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 31.03.2010, 13:45   #1
Mixim
Форумчанин
 
Регистрация: 29.10.2009
Сообщений: 259
Вопрос Работа со StringGrid в C++ Builder

Я решил начать программировать на C++ Builder'е. До этого из всего множества компиляторов языка C, имел дело исключительно с Borland C++(DOS-версия компилятора, аналог TurboPascal). Всегда писал ООП(Объектно-Ориентированные Программы) в среде разработке Delphi 7.
В моей программе необходимо константными значениями через процедуру заполнить объект StringGrid. Пишу следующий код
Код:
void __fastcall ZapolniStringGrid()
{
Form2->StringGrid1->Cells[0][0]="1";
Form2->StringGrid1->Cells[1][0]="2";
Form2->StringGrid1->Cells[2][0]="3";
Form2->StringGrid1->Cells[3][0]="4";
}
затем вызываю его при нажатии кнопки Button1, но почему-то StringGrid как был пустым, так и остался таким же. Смотрел через отладчик - почему-то отладчик "проходит мимо" строки с вызовом процедуры ZapolniStringGrid и мой StringGrid не заполняется.
Подскажите, что не так в коде? Я использую неправильный тип вызова процедуры?
Из всех классических книг, посвященных программированию, ненавижу всего одну - русский перевод книги Роберта Седжвика-"Фундаментальные алгоритмы C++". Предпочитаю читать её в оригинале.
Mixim вне форума Ответить с цитированием
Старый 31.03.2010, 14:15   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Весь код в студию.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 01.04.2010, 02:57   #3
Mixim
Форумчанин
 
Регистрация: 29.10.2009
Сообщений: 259
Печаль

Цитата:
Сообщение от Stilet Посмотреть сообщение
Весь код в студию.
Код первой формы, которая вызывает вторую форму с объектом которой у меня проблемы:

Код:
#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
#include "Unit2.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------


void __fastcall TForm1::N4Click(TObject *Sender)
{
MessageBox(0, "Разработчик: \nПреподаватель: ", "Справка", MB_OK);
}
//---------------------------------------------------------------------------

void __fastcall TForm1::N2Click(TObject *Sender)
{
Form2->Visible=true;
Form1->Enabled=false;
}
//---------------------------------------------------------------------------
Код второй формы:
Код:
#include <vcl.h>
#pragma hdrstop

#include "Unit2.h"
#include "Unit1.h"

//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
typedef struct Worker
       { int ID;
         char FIO[100];
         char Post[100];
         float Money;
       } Worker;


TForm2   *Form2;
int      KolWorker;
Worker   Spisok[1000];
//---------------------------------------------------------------------------
__fastcall TForm2::TForm2(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall ZapolniStringGrid()
{
Form2->StringGrid1->Cells[0][0]="Идентификационный номер";
Form2->StringGrid1->Cells[1][0]="ФИО сотрудника";
Form2->StringGrid1->Cells[2][0]="Должность";
Form2->StringGrid1->Cells[3][0]="Зарплата сотрудника";

}

void __fastcall TForm2::FormActivate(TObject *Sender)
{
UpDown1->Enabled=true;
Edit1->Text=1;

}
//---------------------------------------------------------------------------


void __fastcall TForm2::N2Click(TObject *Sender)
{
MessageBox(0, "Опишите программу...", "Текст задания", MB_OK);
}
//---------------------------------------------------------------------------

void __fastcall TForm2::FormClose(TObject *Sender, TCloseAction &Action)
{
StringGrid1->Enabled=false;
Form1->Enabled=true;
}
//---------------------------------------------------------------------------

void __fastcall TForm2::Button1Click(TObject *Sender)
{
StringGrid1->Enabled=true;
UpDown1->Enabled=false;
KolWorker=StrToInt(Edit1->Text);
StringGrid1->RowCount=KolWorker + 1;
ZapolniStringGrid;
}
Из всех классических книг, посвященных программированию, ненавижу всего одну - русский перевод книги Роберта Седжвика-"Фундаментальные алгоритмы C++". Предпочитаю читать её в оригинале.
Mixim вне форума Ответить с цитированием
Старый 01.04.2010, 09:50   #4
evgn
Разрабатываюсь....
Пользователь
 
Регистрация: 16.11.2008
Сообщений: 68
По умолчанию

Код:
void __fastcall TForm2::Button1Click(TObject *Sender)
{
StringGrid1->Enabled=true;
UpDown1->Enabled=false;
KolWorker=StrToInt(Edit1->Text);
StringGrid1->RowCount=KolWorker + 1;
ZapolniStringGrid();//<<<<< Скобочки поставь...это ж Си
}
И StringGrid можно заполнить в событии OnCreate формы...

Последний раз редактировалось evgn; 01.04.2010 в 09:52.
evgn вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Borland C++ Builder - импорт из Excel в StringGrid nuser C++ Builder 3 10.01.2015 12:38
Не понимаю:StringGrid[C++Builder] sawer5 Помощь студентам 3 28.02.2010 12:42
работа со StringGrid(borland C++ builder) Greenoren Помощь студентам 4 20.11.2009 22:57
Компонент StringGrid в Builder c++. (*_*) C++ Builder 2 02.06.2009 18:09
Вопрос по C++ Builder (изменение размера StringGrid) Sad_SmiliK Помощь студентам 2 11.03.2009 18:20