Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Canvas.TextWidth вешает программу.


Страницы:   1 2 3 4

Kolan ©   (2007-02-05 14:58:00) 

Написал функцию для "подгонки" ширины столбцов StringGrid:
procedure TReportGrid.AdjustColWidth;
var
 WidthArr: array of Integer;
 I, J: Integer;
begin
 with MainForm.ReportStringGrid do
 begin
   SetLength(WidthArr, ColCount);
   for I := Low(WidthArr) to High(WidthArr) do
     WidthArr[I] := 0;
   for I := 0 to ColCount - 1 do
     for J := 0 to Cols[I].Count - 1 do
        if Canvas.TextWidth(Cols[I].Strings[J]) > WidthArr[I] then
         WidthArr[I] := Canvas.TextWidth(Cols[I].Strings[J]);

   for I := 0 to ColCount - 1 do
     ColWidths[I] := WidthArr[I]+8;
 end;
end;


Удивительным образом, когда идешь отладчиком, на выделеной строчке все останавливается.
Причем процессор не грузит, ничего. Как все равно что в занятую крит секцию попасть...

Почему?
ЗЫ
 Есть подозрегие что глючит BDS.
ЗЗЫ
 Утечек нет. ReportMemoryLeaks стоит.


Kolan   (2007-02-05 16:17:00) [61]

> procedure TReportGrid.AdjustColWidth;
> ...
> with MainForm.ReportStringGrid do

Понимать так:
TReportGrid - просто класс, который управляет Гридом(ReportStringGrid)лежащим на форме(MainForm).

Просто класс занчит наследаник TObject:
TReportGrid = class
 private


Когда мне надо выровнять колонки я прошу экземпляр TReportGrid: "Выравняй колонки  грида"(AdjustColWidth).
А он выравнивает :)


Kolan   (2007-02-05 16:01:00) [62]

> А если убрать
> ColWidths[I] := WidthArr[I]+8;

Ты издеваешься?
До этого места дело не доходит(проверил) :)


Loginov Dmitry   (2007-02-05 15:57:00) [63]

Как понимать:
procedure TReportGrid.AdjustColWidth;
...
with MainForm.ReportStringGrid do
...
???


Loginov Dmitry   (2007-02-05 15:52:00) [64]

А если убрать
ColWidths[I] := WidthArr[I]+8;
???


Kolan   (2007-02-05 15:49:00) [65]

> Бесполезный код часто вешает программу :)))

Обрати внимание на вопрос.
ЗЫ
 Может я параноик.


Loginov Dmitry   (2007-02-05 15:48:00) [66]

>   for I := Low(WidthArr) to High(WidthArr) do
>     WidthArr[I] := 0;


Бесполезный код часто вешает программу :)))


Kolan   (2007-02-05 15:11:00) [67]

Хм, записал проблемную строчку в Watches. И Watches тоже повисло :), совсем.


Kolan   (2007-02-05 15:06:00) [68]

Причем у мнея есть PageControl. И вот если при вызове соотв функции открыта страница на которой лежит Grid, то все o'кей. А если другая, то зависает.. Что за нах.


Страницы:   1 2 3 4

Наверх

Титульная страница Поиск, карта сайта Написать письмо