Модераторы: Snowy, MetalFan, bems, Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Изменение размера ячеек StrinGrid 
:(
    Опции темы
6urunduk
  Дата 3.7.2010, 21:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 27.1.2010

Репутация: нет
Всего: нет



На форме есть StringGrid, в него загружаются картинки из Image в процедуре OnDrawCell 
Код
with (Sender as TStringGrid) do
with Canvas do
begin
   {...}
   Draw(Rect.Left, Rect.Top, Image1.Picture.Graphic);
   {...}
end;
.
Вопрос: как подогнать размер ячеек под размер изображения ?
PM MAIL   Вверх
DarkProg
Дата 5.7.2010, 22:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Законченный романтик
***


Профиль
Группа: Завсегдатай
Сообщений: 1784
Регистрация: 11.3.2009
Где: Земля

Репутация: 4
Всего: 19



Я бы скорее подогнал изображения под размер ячеек, потому как все изображения разных рамеров, а StringGrid как-то не очень оперирует размером каждой отдельной ячейки(я обычно в таких случаях создаю чего-нить своё в виде кучки динамических компонентов)

Вот посему выставьте размер каждой ячейке скажем 300х300 и подгоняйте изображение.

Также попробуйте поискать для интереса решение в DRKB, но я такого не видел как-то.


--------------------
"И твоя голова всегда в ответе за то куда сядет твой зад..."

"Я студент - скажите с какого я ВУЗа..."

 smile  smile  smile 
PM MAIL   Вверх
~FoX~
Дата 6.7.2010, 18:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЕ рыжий!!!
****


Профиль
Группа: Участник Клуба
Сообщений: 2819
Регистрация: 8.10.2003
Где: Зеленоград

Репутация: 5
Всего: 68



Цитата(6urunduk @  3.7.2010,  22:23 Найти цитируемый пост)
Вопрос: как подогнать размер ячеек под размер изображения ? 

Ячеек - ни как, ну то есть можно конечно взять всю перерисовку на себя, но имхо проще использовать что то другое...
Стриггрид позволяет рулить только размерами столбца/строки... Придется сначала померить все картинки находящиеся в столбце/строке, соответственно увеличить ширину/высоту, до самой большой картнки, и только после этого отрисовать все вместе... Что бы было ровно, можно разместить по центру имиджи меньшего размера... Тока ИМХО, будет весьма криво выглядеть...


--------------------
user posted image
…множественность никогда не следует полагать без необходимости…
PM MAIL WWW ICQ Jabber   Вверх
6urunduk
Дата 7.7.2010, 22:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 27.1.2010

Репутация: нет
Всего: нет



~FoX~, вот через размер столбца\строки и подогнал 
Код
//Вставка картинок в ячейки StringGrid
procedure TForm2.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, Form1.Image1.Picture.Graphic);
StringGrid1.Width:=Screen.DesktopWidth;
StringGrid1.Height:=Screen.DesktopHeight;
StringGrid1.DefaultColWidth:=Form1.Image1.Picture.Width;
StringGrid1.DefaultRowHeight:=Form1.Image1.Picture.Height;
end;

DarkProg, вставить нужно одно изображение во все ячейки smile

Но вот проблема: мерцание слишком заметно!!!Просто убивает! как от него избавиться?(от мерцания)
PM MAIL   Вверх
~FoX~
Дата 7.7.2010, 22:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЕ рыжий!!!
****


Профиль
Группа: Участник Клуба
Сообщений: 2819
Регистрация: 8.10.2003
Где: Зеленоград

Репутация: 5
Всего: 68



6urunduk, Во первых, менять размер в момент прорисовки это конечно здорово, но по моему это вызовет либо бесконечный цикл, либо переполнения стека...
Во вторых DefaultColWidth/DefaultRowHeight меняет все и сразу, я бы все таки менял по отдельности - RowHeights[0] := x/ColWidths[0]:=x;    
Ну и в третьих, соблюдай последовательность.......
Цитата(~FoX~ @  6.7.2010,  19:43 Найти цитируемый пост)
Придется сначала померить все картинки находящиеся в столбце/строке, соответственно увеличить ширину/высоту, до самой большой картнки, и только после этого отрисовать все вместе.




--------------------
user posted image
…множественность никогда не следует полагать без необходимости…
PM MAIL WWW ICQ Jabber   Вверх
graffi
Дата 8.7.2010, 11:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 10
Регистрация: 6.4.2007

Репутация: нет
Всего: нет



А мерцания немножко меньше будет, если поставить DoubleBuffered в true (это свойство формы). Можно в обработчик создания формы сунуть.
PM MAIL   Вверх
6urunduk
Дата 14.7.2010, 20:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 27.1.2010

Репутация: нет
Всего: нет




~FoX~
Цитата

RowHeights[0] := x/ColWidths[0]:=x;    
 , но мы же заранее не знаем коилчества картинок , которые вместятся на экране

graffi
Цитата
DoubleBuffered в true
это в какой версии Делфи ? я пользую 7 , вроде не видел такого)
PM MAIL   Вверх
~FoX~
Дата 15.7.2010, 09:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЕ рыжий!!!
****


Профиль
Группа: Участник Клуба
Сообщений: 2819
Регистрация: 8.10.2003
Где: Зеленоград

Репутация: 5
Всего: 68



Цитата(6urunduk @  14.7.2010,  21:52 Найти цитируемый пост)
это в какой версии Делфи ? я пользую 7 , вроде не видел такого) 

Цитата(graffi @  8.7.2010,  12:37 Найти цитируемый пост)
(это свойство формы)

Цитата(6urunduk @  14.7.2010,  21:52 Найти цитируемый пост)
но мы же заранее не знаем коилчества картинок , которые вместятся на экране

Ох-ох-ох...... Так посчитай!!!  smile 


--------------------
user posted image
…множественность никогда не следует полагать без необходимости…
PM MAIL WWW ICQ Jabber   Вверх
6urunduk
Дата 15.7.2010, 12:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 27.1.2010

Репутация: нет
Всего: нет



~FoX~, а не легче мерцание убрать, нежели просчитывать кол-во каритнок, которые умещаются на форме ?
PM MAIL   Вверх
~FoX~
Дата 15.7.2010, 18:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЕ рыжий!!!
****


Профиль
Группа: Участник Клуба
Сообщений: 2819
Регистрация: 8.10.2003
Где: Зеленоград

Репутация: 5
Всего: 68



6urunduk, А сам подумай?
СтрингГрид не является контейнером, он не хранит изображения, он предоставляет только канвас, т.е. на каждую опирацию  (скрол, перемещение формы, изменение размеров и даже просто провести курсором над изображением)... тебе придется перерисовывать все.... На сколько бы быстро не работал твой алгоритм перерисовки, на сколько бы оптимальны не были изображения, от мерцания ты не избавишься... Проверенно, даже при использовании GDI+....
Хочишь избавица от мерцания загоняй объекты контейнеры (TImage например) в ячейки грида....


--------------------
user posted image
…множественность никогда не следует полагать без необходимости…
PM MAIL WWW ICQ Jabber   Вверх
6urunduk
Дата 15.7.2010, 20:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 23
Регистрация: 27.1.2010

Репутация: нет
Всего: нет



[Б]~ФоХ~[/Б], легче повеситься

Добавлено через 4 минуты и 44 секунды
а если использовать ДравГрид ?
PM MAIL   Вверх
~FoX~
Дата 15.7.2010, 22:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЕ рыжий!!!
****


Профиль
Группа: Участник Клуба
Сообщений: 2819
Регистрация: 8.10.2003
Где: Зеленоград

Репутация: 5
Всего: 68



6urunduk, аналогично


--------------------
user posted image
…множественность никогда не следует полагать без необходимости…
PM MAIL WWW ICQ Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.1619 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.