Форум: "Потрепаться";
Текущий архив: 2004.08.22;
Скачать: [xml.tar.bz2];
ВнизClass Найти похожие ветки
← →
Igor_thief © (2004-08-03 17:34) [0]Есть такая структра: Name: string; ColorFont, ColorBk: TColor; Есть также БД в которой есть поле содержащее некое (меняющееся) количество Name. Мне надо прорисовывать таблицу с учетом више указаной структуры. Т.е. если одно из Name = содержимому поля таблицы, то эта запись прорисовывается с учетом цветов которые указанны в ColorBk и ColorFont для совпавшего Name. Внимание вопрос: я создаю (TDarwParams = class(Tobject)) класс а потом создаю список в который в objects запихую экземпляр класса. Каждый item списка имеет значение Name. Далее при прорисовке я нахожу нужный мне item и делаю прорисовку с учетом данных в List.objects. Мне кажется что это самый оптимальный вариант. Насколько я прав? Если вам известны более оптимальные варианты, то поделитесь.
← →
Алхимик © (2004-08-03 17:37) [1]Сумбурно написано, но вроде верно.
← →
Sandman25 © (2004-08-03 17:39) [2]Вместо класса можно использовать указатель на запись. Если, конечно, в классе нет методов.
← →
Игорь Шевченко © (2004-08-03 17:42) [3]Отсортированный массив записей не проще будет ?
← →
Гаврила © (2004-08-03 17:46) [4]>>Игорь Шевченко © (03.08.04 17:42) [3]
А какая разница ? Этот список по сути и есть массив, массив указателей на запись. Который можно и отсортировать его же методом
← →
Игорь Шевченко © (2004-08-03 17:49) [5]Гаврила © (03.08.04 17:46)
> А какая разница ?
Дополнительные классы не создавать, к примеру
← →
Igor_thief © (2004-08-03 18:44) [6]Игорь Шевченко © (03.08.04 17:42) [3]
Масив предется делать динамическим. Количество элементов ведь меняется. Я об этом говорил.
← →
Igor_thief © (2004-08-03 18:46) [7]Да и сортировать ничего не надо. Есть же в листбоксе быстрый поиск.
← →
Игорь Шевченко © (2004-08-03 21:11) [8]
> Масив предется делать динамическим. Количество элементов
> ведь меняется. Я об этом говорил.
1) Массив пишется с двумя "с".
2) Количество структур Name,ColorFont,BkColor насколько я понял, у тебя не меняется, поэтому, на мой взгляд, массив-таки лучше, именно отсортированный, чтобы по Name сразу определять нцжные цвета.
ЗЫ: Каким боком сюда ListBox относится ?
← →
Гаврила © (2004-08-03 21:59) [9]Мы тут посовещались с Игорме, и решили
Оптимальней по скорости работы программы - массив записей.
Оптимальнее по скорости кодинга - твой вариант
разница не велика, ни в первом, ни во втором
выбор за тобой :-)
← →
Igor_thief © (2004-08-04 12:14) [10]Спасибо!
З.Ы.: ничего сортировать не надо!
procedure TfrmMain.DBGMainDrawDataCell(Sender: TObject; const Rect: TRect;
Field: TField; State: TGridDrawState);
var
ind: integer;
begin
ind := lbColors.Perform(LB_SELECTSTRING, -1 , longint(Pchar(DM.tMainTCompany.AsString)));
if ind <> -1 then
begin
DBGMain.Canvas.Font.Color := TDrawColorsData(lbColors.Items.Objects[ind]).ColorFont;
DBGMain.Canvas.Brush.Color := TDrawColorsData(lbColors.Items.Objects[ind]).ColorBk;
end
else
DBGMain.Canvas.Font.Color := clBlack;
DBGMain.DefaultDrawDataCell(Rect, Field, State);
end;
← →
Игорь Шевченко © (2004-08-04 12:37) [11]ListBox-то нафига ?
Обычный TStringList с этой задачей справляется куда быстрее
← →
Igor_thief (2004-08-04 14:28) [12]Игорь Шевченко © (04.08.04 12:37) [11]
А вы сделайте с TStringList такое:ind := lbColors.Perform(LB_SELECTSTRING, -1 , longint(Pchar(DM.tMainTCompany.AsString)));
← →
Sandman25 © (2004-08-04 14:29) [13][12] Igor_thief (04.08.04 14:28)
IndexOf.
← →
Igor_thief (2004-08-04 14:31) [14]Sandman25 © (04.08.04 14:29) [13]
Точно. И как я про такое забыл?
← →
Sandman25 © (2004-08-04 14:35) [15][14] Igor_thief (04.08.04 14:31)
Даже если бы не было, можно было в цикле поискать.
← →
Igor_thief © (2004-08-05 13:55) [16]Sandman25 © (04.08.04 14:35) [15]
Не, в цыкле не прикольно.
← →
Sandman25 © (2004-08-05 14:10) [17][16] Igor_thief © (05.08.04 13:55)
Ага, прикольнее ненужные объекты создавать. Типа невидимых TMemo и TListBox.
Страницы: 1 вся ветка
Форум: "Потрепаться";
Текущий архив: 2004.08.22;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.035 c