Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Grid + Checkbox 
:(
    Опции темы
Сергей Т.
Дата 15.8.2005, 20:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 22.4.2005

Репутация: нет
Всего: нет



Подскажите пожалуйста как правильно организовать Grid в котором есть несколько столбцов. Один скажем просто отображает перечень предметов(объектов), а остальные столбики состоят из checkbox.
PM MAIL   Вверх
chaos
Дата 16.8.2005, 12:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Серийный программист
****


Профиль
Группа: Завсегдатай
Сообщений: 2979
Регистрация: 7.7.2004
Где: Екатеринбург

Репутация: 2
Всего: 44



берешь класс наследуемый от CListCtrl
и реализуешь в нем необходимую функциональность, необходимо его создать со свойством LVS_OWNERDRAWFIXED и перегружаешь DrawItem и добовляешь там чекбоксы

Это сообщение отредактировал(а) chaos - 17.8.2005, 06:54
PM WWW   Вверх
Сергей Т.
Дата 17.8.2005, 16:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 22.4.2005

Репутация: нет
Всего: нет



Уважаемый chaos, можно ли привести небольшой пример. Я только недавно начал использовать Builder и изучать C++, поэтому еще немного теряюсь, как это нужно сделать.

Сергей smile
PM MAIL   Вверх
chaos
Дата 20.8.2005, 10:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Серийный программист
****


Профиль
Группа: Завсегдатай
Сообщений: 2979
Регистрация: 7.7.2004
Где: Екатеринбург

Репутация: 2
Всего: 44



вот тебе пример: Возьмешь кинешь на форму StringGrid
а вот мой код
Код

//---------------------------------------------------------------------------

#include <vcl.h>
#include <stdio.h>
#pragma hdrstop

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

void __fastcall TForm1::StringGrid1DrawCell(TObject *Sender, int ACol,
      int ARow, TRect &Rect, TGridDrawState State)
{
    TStringGrid *SG = dynamic_cast<TStringGrid *>(Sender);
    TCanvas *c = SG->Canvas;
    c->Brush->Color = 0x0FF000;
    c->FillRect(Rect);

    if (2 == ACol)
    {
        TRect r = Rect;
        r.Left += 2;
        r.Right = r.Left + 14;
        if (Checked[ARow])
            DrawFrameControl(c->Handle, &r, DFC_BUTTON,DFCS_BUTTONCHECK|DFCS_CHECKED);
        else
            DrawFrameControl(c->Handle,&r,DFC_BUTTON,DFCS_BUTTONCHECK);
    }
    c->TextOut(Rect.Left+18,Rect.Top+5,SG->Cells[ACol][ARow]);
}
//---------------------------------------------------------------------------

void __fastcall TForm1::FormCreate(TObject *Sender)
{
    Checked = new char[StringGrid1->RowCount];
    char str[10];
    for (int i = 0; i < StringGrid1->ColCount; i++)
    {
        for (int j = 0; j < StringGrid1->RowCount; j++)
        {
           sprintf(str, "Cells: %d:%d", i, j);
           StringGrid1->Cells[i][j] = str;
        }
        Checked[i] = 0;
    }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action)
{
    delete[] Checked;        
}
//---------------------------------------------------------------------------
void __fastcall TForm1::StringGrid1MouseDown(TObject *Sender,
      TMouseButton Button, TShiftState Shift, int X, int Y)
{
     int ARow, ACol;

     TStringGrid *SG = dynamic_cast<TStringGrid *>(Sender);;
     SG->MouseToCell(X, Y, ACol, ARow);
     if (2 == ACol)
        Checked[ARow] = (0 == Checked[ARow] ? 1 : 0);
}
//---------------------------------------------------------------------------


Это сообщение отредактировал(а) chaos - 2.9.2005, 09:59
PM WWW   Вверх
Сергей Т.
Дата 29.8.2005, 10:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 22.4.2005

Репутация: нет
Всего: нет



chaos большое спасибо. Все работает. smile
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C++: Базы данных"
chipset

Данный форум предназначен для обсуждения вопросов прямым образом связанных с C++ и БД. Так, вопросы только по C++ следует задавать в C++:Общие вопросы а вопросы по абстрактным БД в Базах данных или в соответствующих под-форумах.

Благодарим за понимание.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, chipset.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Базы данных | Следующая тема »


 




[ Время генерации скрипта: 0.0415 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.