Sashay |
Отправлено: 11.02.2004, 10:01 |
|
Не зарегистрирован
|
Уважаемые господа,
Помогите, пожалуйста, со следующем:
Есть компонент StringGrid (4096x48). Использую его для графического вывода двоичных диаграмм. Т.е. каждая ячейка имеет свой графический объект. Проблема в том, что когда я его очищаю (последовательно каждую ячейку), этот процесс длится слишком долго. Есть ли возможность очистить StringGrid мгновенно (не по ячейкам)?
С уважением,
Александр
|
|
trigger |
Отправлено: 11.02.2004, 11:57 |
|
Не зарегистрирован
|
может что-то типа такого:
for(int x = 0; xRowCount;x++)
StringGrid1->Rows[x]->Clear();
не мгновенно конечно. но все же не каждую ячейку ... |
|
Valdemar |
Отправлено: 11.02.2004, 13:52 |
|
Мастер участка
Группа: Участник
Сообщений: 433
|
Можно, конечно, сделать как предложил trigger, но в этом случае если с ячейками таблицы были связаны объекты, то эти объекты не будут удалены при очистке таблицы, а останутся в памяти и доступа к ним не будет (если нет других указателей на них). А памяти они занимать будут не мало (4096x48хразмер объекта). |
|
Sashay |
Отправлено: 11.02.2004, 14:40 |
|
Не зарегистрирован
|
Спасибо за ответы,
К сожалению, очистка по рядам особой скорости не прибавила, хотя ускорение заметно.
Есть ли какие еще мнения по этому вопросу?
Заранее спасибо,
Александр
|
|
trigger |
Отправлено: 11.02.2004, 15:18 |
|
Не зарегистрирован
|
если данные ячеек — простые символы, то может можно использовать DBGrid + ClientDataSet
и очищать собственно сам датасет.
типа
ClientDataSet->EmptyDataSet();
у DBGrid'а и StringGrid'а много похожих методов и свойств, так что возможно переход будет не сложным и переписывать придется немного
(хотя врядли:) |
|
Admin |
Отправлено: 11.02.2004, 16:37 |
|
Владимир
Группа: Администратор
Сообщений: 1190
|
Может проще его не очищать,
а динамически создавать и удалять,
перед удалением — делать невидимым.
CODE |
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
TStringGrid* SG;
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
// создаем
void __fastcall TForm1::BitBtn1Click(TObject *Sender)
{
SG = new TStringGrid(Form1);
SG->Parent = Form1;
}
//---------------------------------------------------------------------------
// удаляем
void __fastcall TForm1::BitBtn2Click(TObject *Sender)
{
SG->Visible = false;
delete SG;
}
//---------------------------------------------------------------------------
|
|
|