![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
TStringGrid - скроллинг [D6, Win95/98]
greenrul © (2002-06-28 22:32:00)у меня в StringGird рисуются картинки из ImageList, рисуются при OnDrawCell. Беда в том, что как только появился скроллинг, начались страшные глюки: последняя картинка становилась первой, и далее при скроллинге где ячейка была верхней и левой там картинка СНОВА менялась на последнюю... Может кто чего и понял из описанного 8) но приведу пример:
procedure TMainForm.cellBrowserDrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
var i,ir,ic,l,t:integer;
begin
ic:=0;
ir:=0;
for i:=1 to stotal {общее кол-во картинок} do
begin
If ic=cellBrowser.ColCount then
begin
Inc(ir);
ic:=0;
end;
t:=cellBrowser.CellRect(ic,ir).top
l:=cellBrowser.CellRect(ic,ir).left;
ImageList1.Draw(cellBrowser.Canvas,l,t,i-1);
Inc(ic);
end;
end;
Подскажите плиз!
greenrul (2002-06-29 18:54:00) [1]Спасибо огромное, только сам уже догадался 8)
если не трудно, посмотрите немного аналогичный вопрос - http://delphi.mastak.ru/cgi-bin/forum.pl?look=1&id=1025360912&n=0
Юрий Зотов (2002-06-29 17:37:00) [2]> как узнать какой номер сейчас перерисовывают
Тот, который который находится на пересечении строки с номером ARow и столбца с номером ACol (а эти данные приходят в обработчик). Как написал MBo:
ARow * cellBrowser.ColCount + ACol
Только учтите, что ARow и ACol базированы на нодь, а не единицу (то есть, нумерация строк и столбцов идет с нуля). Если Вам надо базировать отсчет ячеек на единицу, то сделайте сдвиг:
ARow * cellBrowser.ColCount + ACol + 1
greenrul (2002-06-29 13:04:00) [3]СПАСИБО!!
не представляете, как выручили, только один вопросик - как узнать номер ячейки по такому принципу:
1 2
3 4
5 6
как узнать какой номер сейчас перерисовывают
MBo (2002-06-29 06:39:00) [4]procedure TMainForm.cellBrowserDrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
begin
ImageList1.Draw(cellBrowser.Canvas,Rect.Left+1,
Rect.Top+1,ARow*cellBrowser.ColCount+ACol);
end;
greenrul (2002-06-29 03:17:00) [5]please....
оччень нужно
greenrul (2002-06-29 02:04:00) [6]HELP!
greenrul (2002-06-28 23:56:00) [7]Ну помогите ради бога!
ТРИ ЧАСА над этим мучался, и все без толку....
ПЛИЗ,,..
я уверен, мастера - вам это на пять минут, не больше