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

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

Несколько действий для одной кнопки [D7, XP]


Imagination ©   (2014-06-20 14:14:00) 

Добрый день! Нужна ваша помощь!
Написал код, по которому картинка вставляется в ячейку (0,0) Stringgrida! А в (0,1) не хочет(((
В Tag кнопки Button установил 2 (два действия). Вот сам код. Подскажите что не так пожалуйста.

procedure TForm1.Button2Click(Sender: TObject);
var R: TRect;
x,y: Integer;
begin
case Button1.Tag of
0:
begin
x := 0; // номер строки
y := 0; // номер столбца
R.Left := StringGrid1.DefaultColWidth * x + x;
R.Top := StringGrid1.DefaultRowHeight * y + y;
R.Right := StringGrid1.DefaultColWidth * x + StringGrid1.DefaultColWidth + x;
R.Bottom := StringGrid1.DefaultRowHeight * y + StringGrid1.DefaultRowHeight + y;
StringGrid1.Canvas.CopyRect(R, Image1.Canvas, Rect(0, 0, Image1.Width, Image1.Height));
end;
1:
begin
x := 0; // номер строки
y := 1; // номер столбца
R.Left := StringGrid1.DefaultColWidth * x + x;
R.Top := StringGrid1.DefaultRowHeight * y + y;
R.Right := StringGrid1.DefaultColWidth * x + StringGrid1.DefaultColWidth + x;
R.Bottom := StringGrid1.DefaultRowHeight * y + StringGrid1.DefaultRowHeight + y;
StringGrid1.Canvas.CopyRect(R, Image1.Canvas, Rect(0, 0, Image1.Width, Image1.Height));
end;

end;
end;

end.


  (2014-06-20 18:51:00) [1]

Удалено модератором


sniknik   (2014-06-20 17:04:00) [2]

у тебя должен быть какой-то "накопитель" массив например (рекордсет тоже пойдет, как и список объектов), сохранять картинку нужно туда, не рисовать, а сохранять, а рисовать в событии соотнеся координаты грида с твоим массивом (в случае одномерного/рекордсета/списка может не сходится 1 в 1). ищешь по "гридовским" нужную в массиве и рисуешь.


sniknik   (2014-06-20 17:00:00) [3]

> А можно ли форму TImage прикрепить к ячейке Stringgrida?
нет


sniknik   (2014-06-20 16:59:00) [4]

http://www.delphimaster.ru/cgi-bin/forum.pl?id=1401097358&n=18
> Нужно картинку image1 вставить в ячейку (1,1) таблицы Ворд нажав кнопочку! Потом другую картинку image1 в ячейку (1,2)! Потом следующую картинку в ячейку (3,1) и т.д.
...
> в таком случае не буду заморачиваться)))

найми уже программиста. или обращайся с конкретными проблемами...
вот что непонятно в сказанном не раз, в разных темах (тех что по стринг гриду) что рисовать нужно в предназначенном для этого событии (OnDrawCell)?


Imagination   (2014-06-20 16:57:00) [5]

А можно ли форму TImage прикрепить к ячейке Stringgrida?


Dimka Maslov   (2014-06-20 16:48:00) [6]

Не надо мне в личку ничего кидать, у меня без этого работы достаточно.


Imagination   (2014-06-20 16:46:00) [7]

Dimka Maslov ©  
Спасибо большое за отклик. Я новичек и много не понимаю.
Понимаете, нужно чтобы я любую картинку в Image1 загрузил и нажав кнопку она появилась например в ячейке 0,0. Потом выбрав другую картинку в Image1 она пошла в ячейку 0,1. Думал сделать так - выбрал картинку, нажал первый раз на кнопку - она в яч.0,0. Выбрав другую картинку нажав кнопку - она в яч.0,1.
Может я вам в личку всю прогу скину чтобы Вам было нагляднее?


Dimka Maslov   (2014-06-20 16:32:00) [8]

В OnClick кнопки записываем в глобальную переменную (можно в поле формы, или даже в базу данных) некоторый признак, который будет указывать на то, что и где надо рисовать в СтрингГрид. После чего явно вызвать перерисовку СтрингГрида.

В OnDrawCell у СтрингГрида для нужной нам ячейки (её координаты передаются в качестве параметров) мы читаем этот самый глобальный признак и рисуем всё, что мы хотим.

ЗЫ Засорение эфира есть любимое занятие на этом форуме, иначе он давно уже бы кончился.


Imagination   (2014-06-20 16:17:00) [9]

Удалено модератором


Imagination   (2014-06-20 16:14:00) [10]

Удалено модератором


Германн   (2014-06-20 16:07:00) [11]


> Imagination   (20.06.14 16:02) [6]
> Я конечно не пойму о чем вы

http://www.delphimaster.ru/cgi-bin/forum.pl?id=1400830587&n=18
http://www.cyberforum.ru/delphi-beginners/thread1213109.html


Imagination   (2014-06-20 16:02:00) [12]

Удалено модератором


Германн   (2014-06-20 15:59:00) [13]


> Inovet ©   (20.06.14 15:28) [3]
> Это всё та же вставка картинки в Эксель что и 2 месяца назад?

Угу. Только он ник сменил (но не на всех форумах :)


Imagination   (2014-06-20 15:29:00) [14]

Что?


Inovet   (2014-06-20 15:28:00) [15]

Это всё та же вставка картинки в Эксель что и 2 месяца назад?


Imagination   (2014-06-20 15:22:00) [16]

Не могли бы помочь примером, а то я новичек и не понимаю(((


Dimka Maslov   (2014-06-20 14:48:00) [17]

Ерунда полная написана, вот и не работает.

Во-первых "вставлять" картинку в StringGrid надо в OnDrawCell самого СтрингГрида.
Во-вторых, какая религия мешает сразу присвоить y := Button1.Tag и написать код один раз без всякого case?
Ну а про вычисление координат я вообще молчу.


Наверх

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