|
#31
|
|||
|
|||
Еще есть одна небольшая загвоздка. Как бы так, хорошо бы было если бы в ячейках еще был и текст (0-9). Но тут тогда получается нужно использовать другую таблицу, а там видимо загрузить все в одну ячейку будет сложнее.
Хм... добавить то добавил, но вот только текст получился за картинкой, а нужно наоборот. Последний раз редактировалось Kaktuz, 21.01.2012 в 21:24. |
#32
|
||||
|
||||
Значит неправильно отрисовку делаешь. Обычно делается так, выводится сначала картинка, затем правее от неё текст.
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#33
|
|||
|
|||
Цитата:
|
#34
|
||||
|
||||
Цитата:
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#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; Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. Последний раз редактировалось angvelem, 22.01.2012 в 00:28. |
Этот пользователь сказал Спасибо angvelem за это полезное сообщение: | ||
Kaktuz (22.01.2012)
|
#37
|
|||
|
|||
А.. Его нужно через обработчик вместе с картинкой кидать. Ясно. Будем пробовать.
|
#38
|
|||
|
|||
Начудил что-то, одна хохма получилась
Добавляется, но не стирается. Ах! Да! Плюс что можно выделить несколько клеток сразу, это конечно хорошо, но вот не уверен в том что данные корректно записываются. А возможно поправить одинарный клик на двойной? Последний раз редактировалось Kaktuz, 22.01.2012 в 20:54. |
#39
|
||||
|
||||
В чём начудил? Пиши понятнее.
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#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.
Je venus de nulle part 55.026263 с.ш., 73.397636 в.д. |
#42
|
|||
|
|||
Ругается
Код:
(Sender as TStringGrid).MouseToCell(X, Y, aCol, aRow); |