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

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

Можно ли в Stringgrid вставить картинку?


Muhan ©   (2004-12-03 16:40:00) 

Пытаюсь вставить в стринггрид картинку..не получается...ее просто не видно :( Как сделать чтобы картинка был поверх таблицы? И можно ли в ячейку вставить картинку?
Спасибо.


Muhan   (2004-12-04 01:53:00) [1]

Мне надо вставить картинки в таблицу размерности 25*25.. менять их местами, удалять..в этом духе..так чтобы они были привязаны к яцейкам


novice__man   (2004-12-03 23:35:00) [2]


Muhan ©   (03.12.04 16:40)
Пытаюсь вставить в стринггрид картинку
КАК ПЫТАЕТЕСЬ, КАКОЕ УСЛОВИЕ ДЛЯ ТОГО ЧТО БЫ БЫЛА КАРТИНКА????  ..не получается...ее просто не видно :( Как сделать чтобы картинка был поверх таблицы КАРТИНКА БУДЕТ ТОЛЬКО В ЯЧЕЙКЕ, А НИКАК ПОВЕРХ ТАБЛИЦЫ!!! ? И можно ли в ячейку вставить картинку?
Спасибо.


Какие точно действия пользователя должны приводить к появлению (исчезновению) картинки??

Если не получится пиши на мыло по подробнее, разберемся!


novice__man   (2004-12-03 23:18:00) [3]


Muhan ©   (03.12.04 22:36) [17]

вот именно это и надо...что в одной выводить в другой нет....чтож делать то...тупит очень сильно если использовать это метод OnDrawCell :(


Так укажи как реализовано условие!!!


Muhan   (2004-12-03 22:36:00) [4]

вот именно это и надо...что в одной выводить в другой нет....чтож делать то...тупит очень сильно если использовать это метод OnDrawCell :(


TButton   (2004-12-03 21:51:00) [5]


> Пытаюсь вставить в стринггрид картинку

и как же это вы, интересно, пытаетесь?
код в студию.

> Как сделать чтобы картинка был поверх таблицы?

эээ... да!

> И можно ли в ячейку вставить картинку?

эээ... нет!
картинку можно присвоить свойству objects стринг грида
и потом если тебе нужно в одной ячейке выводить картинку, в другой не выводить, в десятой выводить но другую. ты не забывай что у тебя стринг грид, что у него есть свойство cells. надо выводить картинку - запиши это в ячейке, когда будешь отрисовывать - проверяй что в ячейке написано.


novice__man   (2004-12-03 21:41:00) [6]

Что во что преобразовать?
Раскажите по подробнее о поставленной задаче.
Постараюсь помочь. Сам часто пользую этот метод, подмена шрифта, картинка, цвета...


begin...end   (2004-12-03 21:39:00) [7]

> [13] Muhan ©   (03.12.04 21:36)

StringGrid.MouseToCell(X, Y, Col, Row). Col, Row - переменные.

P.S. Я ушёл спать.


Muhan   (2004-12-03 21:36:00) [8]

а как преобразовать то ? не понятно малех :(


novice__man   (2004-12-03 21:24:00) [9]

Может просто нужно выводить рисунок по какому-либо условию??

Например в ячейке встретился 0.

procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
 Rect: TRect; State: TGridDrawState);
begin
with Canvas do
 begin
  if StringGrid1.Cells[ACol, ARow] = '1' then
     Draw(Rect.Left, Rect.Top, ImageNul.Picture.Graphic);
 end;
end;


begin...end   (2004-12-03 21:13:00) [10]

> [10] Muhan ©   (03.12.04 21:02)

В смысле, координаты картинки имеются в виде координат X/Y, а не в виде Col/Row? Но ведь X/Y можно преобразовать в Col/Row с помощью TStringGrid.MouseToCell.


Muhan   (2004-12-03 21:02:00) [11]

я имею ввиду координаты даются таблицы ..то есть 250*300,
а не номер ячеки(ряд, строка)
хотя может я чего то не понимаю. :(
Спасибо за разъяснения.


begin...end   (2004-12-03 20:57:00) [12]

> [8] Muhan ©   (03.12.04 20:29)

> все понятно..но там координаты :( хотелось бы конкретно
> ячейки...

Ну теперь уже я Вас не понимаю. :-)

А как же ещё обращаться к ячейкам, как не по их координатам?

Допустим, таблица состоит из 5 строк и 5 столбцов.

Объявляете в форме переменную:

MyArray: array [1..5, 1..5] of Boolean

При старте программы (в TForm.OnCreate) заполняете массив значениями False. Хотя не помню - может быть, массив проинициализируется автоматически.

В обработчике OnDrawCell задаёте проверку, нужно ли для данной ячейки рисовать картинку или нет:

if MyArray[ACol, ARow] then // рисуем

При нажатии кнопки (в обработчике OnClick) указываете, что, например, в третьей строке второго столбца должна быть картинка:

MyArray[2, 3] := True

и обновляете таблицу:

StringGrid.Refresh


Muhan   (2004-12-03 20:29:00) [13]

все понятно..но там координаты :( хотелось бы конкретно ячейки...и еще маленько не понятно почему когда ввожу свои цифры то одна ячейка заполняется...а когда не трогаю все ячейки заполняются :(


begin...end   (2004-12-03 18:37:00) [14]

> [6] Muhan ©   (03.12.04 18:26)

Это возможно. По нажатию кнопки в каких-нибудь переменных указываете, в какие именно ячейки нужно вставлять картинки. И вызываете метод TStringGrid.Refresh. А в начале работы программы в этих переменных должно быть указано, что картинки не нужны. Понятно?


Muhan   (2004-12-03 18:26:00) [15]

мне надо чтобы она появлялась не при создании таблицы...а в любой момент!! это возможно?


begin...end   (2004-12-03 17:38:00) [16]

> [3] Muhan ©   (03.12.04 17:13)

Ну можно где-нибудь хранить номера ячеек, в которых надо прорисовывать картинки, и в обработчике OnDrawCell проверять, нужно рисовать картинку в очередной ячейке или нет.


Muhan   (2004-12-03 17:28:00) [17]

ответте плиз


Muhan   (2004-12-03 17:13:00) [18]

Я малеха не дотягиваю до вашего уровня... :)
У меня есть обработчик, я туда загнал код, который вы показали...
Он заполняет все мои ячейки этой самой картинкой....
Как сделать чтобы я сам когда захотел тогда и вбивал.
Вот такая процедурка: ввел ячейку(не координату), нажал кнопку...и картинка появилась...:) вот


wisekaa   (2004-12-03 16:50:00) [19]

Можно,
http://www.delphimaster.ru/cgi-bin/faq.pl?look=1&id=988625107&n=21


cae   (2004-12-03 16:46:00) [20]

http://delphiworld.narod.ru/base/bitmap_in_stringgrid_cell.html


Наверх

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