![]() |
|
|
#31
|
|||
|
|||
|
Еще есть одна небольшая загвоздка. Как бы так, хорошо бы было если бы в ячейках еще был и текст (0-9). Но тут тогда получается нужно использовать другую таблицу, а там видимо загрузить все в одну ячейку будет сложнее.
Хм... добавить то добавил, но вот только текст получился за картинкой, а нужно наоборот. Последний раз редактировалось Kaktuz, 21.01.2012 в 21:24. |
|
#32
|
||||
|
||||
|
Значит неправильно отрисовку делаешь. Обычно делается так, выводится сначала картинка, затем правее от неё текст.
|
|
#33
|
|||
|
|||
|
Цитата:
|
|
#34
|
||||
|
||||
|
Цитата:
|
|
#35
|
|||
|
|||
|
Делал так:
Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
StringGrid1.Cells[1,1] := 'Text';
end;
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
begin
with (Sender as TStringGrid) do
with Canvas do
begin
Draw(Rect.Left, Rect.Top, Image1.Picture.Graphic);
end;
end; |
|
#36
|
||||
|
||||
|
Так ведь ты текст не вывел. То что ты его присвоил ячейке не означает, что он выведется на передний план.
Код:
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
begin
with (Sender as TStringGrid).Canvas do
begin
Draw(Rect.Left, Rect.Top, Image1.Picture.Graphic);
TextOut(Rect.Left + Font.Size, Rect.Top + 2, 'Owner Drawn text');
end;
end;Код:
procedure TForm2.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
begin
with (Sender as TStringGrid), Canvas do
begin
Draw(Rect.Left, Rect.Top, Image1.Picture.Graphic);
Brush.Style := bsClear;
if Cells[ACol, ARow] <> '' then
TextOut(Rect.Left + Font.Size, Rect.Top + 2, Cells[ACol, ARow]);
end;
end;Последний раз редактировалось angvelem, 22.01.2012 в 00:28. |
| Этот пользователь сказал Спасибо angvelem за это полезное сообщение: | ||
Kaktuz (22.01.2012)
| ||
|
#37
|
|||
|
|||
|
А..
Его нужно через обработчик вместе с картинкой кидать. Ясно. Будем пробовать. |
|
#38
|
|||
|
|||
|
Начудил что-то, одна хохма получилась
Добавляется, но не стирается. Ах! Да! Плюс что можно выделить несколько клеток сразу, это конечно хорошо, но вот не уверен в том что данные корректно записываются. А возможно поправить одинарный клик на двойной? Последний раз редактировалось Kaktuz, 22.01.2012 в 20:54. |
|
#39
|
||||
|
||||
|
В чём начудил? Пиши понятнее.
|
|
#40
|
|||
|
|||
|
Ну как начудил... Просто данные не сохраняются отдельно и грузятся во всю таблицу сразу.
Вот интересует Код:
if Button = mbLeft then
with (Sender as TDrawGrid), Canvas do
begin
(Sender as TStringGrid).MouseToCell(X, Y, aCol, aRow);
StatusBar1.Panels.Items[1].Text := Format('Y = %d', [aRow]);
StatusBar1.Panels.Items[2].Text := Format('X = %d', [aCol]);
end; |
|
#41
|
||||
|
||||
|
Ну так опиши этот код не на OnMouseDown, а на OnDblClick.
|
|
#42
|
|||
|
|||
|
Ругается
Код:
(Sender as TStringGrid).MouseToCell(X, Y, aCol, aRow); |