Форум: "Основная";
Текущий архив: 2003.11.13;
Скачать: [xml.tar.bz2];
Внизпроверка значения в ячейке StringGrida Найти похожие ветки
← →
denis24 (2003-10-29 17:10) [0]Проверяю значение в сабже
try
if StrToFloat(StringGrid1.Cells [acol,arow])< 0 then
begin
With TStringGrid(Sender),TStringGrid(Sender).Canvas Do
.
.
.
end;
except
exit;
end;
Вылазит ощибка при strtofloat (это понятно там string),но вот почему не перескакивает на следующую ячейку и не рисует в ней?
Зациклилось на этой?
← →
BOA_KAA (2003-10-29 17:14) [1]Что не перескакивает? Что не рисует? Что зациклилось?
← →
denis24 (2003-10-29 17:20) [2]procedure Tmainform.StringGrid1DrawCell(Sender: TObject; ACol,
ARow: Integer; Rect: TRect; State: TGridDrawState);
← →
Eugene1501 (2003-10-29 17:22) [3]Полностью текст процедуры приведи.
← →
BOA_KAA (2003-10-29 17:23) [4]вопрос.абсолютно.непонятен.
Что нужно получить?
← →
denis24 (2003-10-29 17:27) [5]procedure Tmainform.StringGrid1DrawCell(Sender: TObject; ACol,
ARow: Integer; Rect: TRect; State: TGridDrawState);
begin
try
if (arow<>0) and (acol<>0) then
begin
if StrToFloat(StringGrid1.Cells [acol,arow])< 0 then
begin
With TStringGrid(Sender),TStringGrid(Sender).Canvas Do
Begin
FillRect(Rect);
Brush.Color:=ClYellow; //
← →
denis24 (2003-10-29 17:29) [6]хочу что бы рисовало отрицат число другим цветом
← →
denis24 (2003-10-29 17:48) [7]никто не знает?
← →
Kudesnik (2003-10-29 18:15) [8]Как я понимаю, не рисует в следующей ячейке, потому что ей первую никак не дорисовать. Она начинает, получет ошибку вылетает. Понимает, что ячейка так и не нарисовалась, пытается снова, и т. д. Не очень понял что именно понятно о вылезании ошибки. На самом деле она вылезает когда таблица рисуется первый раз и ячейки ещё пустые. StrToFloat получает на входе пустую строку, а ей это страшно не нравится (нет чтобы просто в 0 отконвертить...) Если убрать эту ошибку, то всё работает. Вот текст рабочей процедуры:
procedure Tmainform.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
var
fTemp: real;
begin
try
if (ARow<>0) and (ACol<>0) then
begin
if StringGrid1.Cells [ACol,ARow] <> "" then
fTemp := StrToFloat(StringGrid1.Cells [ACol,ARow])
else
fTemp := 0;
if fTemp < 0 then
begin
with TStringGrid(Sender),TStringGrid(Sender).Canvas Do
begin
FillRect(Rect);
Brush.Color:=ClYellow;
Font.Color:=ClBlue;
Font.Style:=[fsBold];
Font.Size:=14;
TextOut(Rect.Left+2,Rect.Top+2,Cells[ACol,ARow]);
end;
end;
end;
except
exit;
end;
end;
← →
BOA_KAA (2003-10-29 18:24) [9]Чтобы не вылетало для OnCreate формы сделать StringGrid1.OnDrawCell:=nil;
Затем вернуть (где надо) StringGrid1.OnDrawCell:=StringGrid1DrawCell;
Все остальное - FAQ"овый вопрос (см.
> Kudesnik (29.10.03 18:15) [8]
)
Только вот путаница: сначала Brush установить, потом FillRect
← →
Anatoly Podgoretsky (2003-10-29 21:22) [10]Ошибка вылетать не может она подавлена блоком
try
except
end;
может только в ИДЕ при неверной настройки. Зацикливание на 1,1 тоже только при просмотре в ИДЕ, поскольку придется перерисовываться после каждого просмотра.
Запускался ли проект вне среды и была ли ошибка, если была то какая.
← →
denis24 (2003-10-30 11:43) [11]точно .только в иде.
Спасибо Anatoly Podgoretsky
← →
ZEE (2003-10-30 11:58) [12]так чтоб в ИДЕ работало надо читать Kudesnik (29.10.03 18:15) [8]
if StringGrid1.Cells [ACol,ARow] <> "" then...
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.11.13;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.05 c