C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
DrawGrid + CGauge, как объеденить?
bitanga
Отправлено: 16.07.2003, 14:18


Ученик-кочегар

Группа: Участник
Сообщений: 25



Можно ли сделать объект CGauge содержимым ячейки DrawGrid ?
Нужно чтобы в таблице в одной колонке шли цифры, в колонке рядом графическое изображение числа из предыдущей колонки.
Asher
Отправлено: 16.07.2003, 17:27


Мастер участка

Группа: Модератор
Сообщений: 550



По моему проще самому требуемый уровень в ячейке нарисовать, чем столько Gauge привязывать.
Тут на форуме несколько веток есть, на тему как рисовать в ячейках Grid'а, надо только поискать.
Гость_pasha
Отправлено: 19.07.2003, 09:45


Не зарегистрирован







CODE

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

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
// бросьте на форму компоненты TStringGrid и TButton
// установите у StringGrid1 свойство DefaultDrawing = false

int value[3], xg, yg;
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "CGAUGES"
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
       : TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{
   for(int i=0; i<3; i++){
     TCGauge *ga = new TCGauge(StringGrid1);
     ga->Parent = StringGrid1;
     ga->Width  = StringGrid1->DefaultColWidth;
     ga->Height = StringGrid1->DefaultRowHeight;

     ga->Left = StringGrid1->DefaultColWidth;
     ga->Top  = StringGrid1->DefaultRowHeight*i;
     value[i] = i*20+5; xg = 0; yg = i;  ga->Progress = value[i];
     StringGrid1->Repaint();
     }
}
//---------------------------------------------------------------------------
void __fastcall TForm1::StringGrid1DrawCell(TObject *Sender, int ACol,
     int ARow, TRect &Rect, TGridDrawState State)
{
for(int i=0; i<3; i++){
if(ACol == 0 && ARow == i){
 StringGrid1->Canvas->TextOut(Rect.Left, Rect.Top+i, IntToStr(value[i]));
 }}
}
//---------------------------------------------------------------------------


Вернуться в Вопросы программирования в C++Builder