Am, имеющей строку сетки (TStringGrid
) с 2 столбца и 1 ряд (Property: ColCount = 2 & Rowcount = 1
.читать текст из TStringGrid клеток [AcOl, Arow], который генерируется с помощью функции DrawText на "OnDrawCell" событие
Код для OnDrawCell
Событие:
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
var
Parametertext : string;
begin
case ACol of
0 : Parametertext := 'Test';
1 : Parametertext := 'Test1';
end;
stringgrid1.Brush.Color := clBtnFace;
stringgrid1.Font.Color := clWindowText;
stringgrid1.Canvas.FillRect(Rect);
DrawText(stringgrid1.Canvas.Handle, PChar(parameterText), -1, Rect,
DT_SINGLELINE);
end;
При запуске приложения, я получаю ниже вывод:
Вопрос:
Когда я пытаюсь получить текст с помощью StringGrid1.Cells[0,0]
, StringGrid1.Cells[1,0]
,
я, кроме «Тест» & «Test1», но она всегда дает пустую строку «».
Как получить текст из строковой сетки, используя StringGrid.Cells[aCol,aRow]
?
Я согласен с ответом @ Dsm, но почему вы делаете то, что делаете на мероприятии DrawCell, в первую очередь? Почему бы не назначить значения ячеек в коде, а затем оставить сетку для рисования? – MartynA
Текст там отсутствует. Вы нарисовали (используя ** DRAWText **) текст, назначенный локальной переменной. Почему вы тогда ожидаете, что содержимое локальной переменной будет волшебным образом сохранено в ячейках? Все, что вы сделали, ** нарисовано **. Вот волшебство, которое вы ищете - удалите обработчик OnDrawCell и создайте обработчик OnCreate для формы. Добавьте эти две строки: 'StringGrid1.Cells [0, 0]: = 'Test'; StringGrid1.Cells [1, 0]: = 'Test1'; '. Магия. –
Этот существующий код не новый, у меня нет прав на его изменение. Один и тот же тип кода интегрирован с большим приложением, и я пытаюсь получить значение Grid из инструмента автоматизации (например, завершение теста) ... – bejarun