Форум программистов, компьютерный форум, киберфорум
Наши страницы

Delphi для начинающих

Войти
Регистрация
Восстановить пароль
 
mikhea
0 / 0 / 0
Регистрация: 11.02.2010
Сообщений: 14
#1

Мерцание кнопок внутри StringGrid - Delphi

19.10.2012, 15:14. Просмотров 487. Ответов 2
Метки нет (Все метки)

Добрый день!
Столкнулся с такой проблемой. Есть StringGrid, внутри него несколько столбцов с кнопками, на каждой кнопке картинка. Количество строк динамически изменяется в процессе работы с программой (их можно добавлять, удалять и т.д.), соответственно, количество кнопок тоже меняется. Так вот, при прокрутке таблицы и перемещнии строк кнопки начинают жутко мерцать, а сама форма - тормозить и подвисать. Причем чем больше строк, тем более выражена проблема (что, впрочем, вполне логично). Кто-нибудь знает, можно ли как-нибудь уменьшить мерцание и торможение? Возможно, у меня не очень хорошо написан обработчик OnTopLeftChanged.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.10.2012, 15:14
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Мерцание кнопок внутри StringGrid (Delphi):

Как динамический создать TImage+TGroupBox внутри 5 кнопок в центр формы? - Delphi
Привет всем Как динамический создать TImage+TGroupBox внутри 5 кнопок в центр формы? Добавлено через 5 минут И при ресайзе все...

Delphi 7 Stringgrid Нужно сделать цикл для заполнения Stringgrid данными из другого Stringgrid - Delphi
Нужно чтобы из Stringgrid1 данные переносились в Stringgrid2 Но ТОЛЬКО ПО УСЛОВИЮ Таблицы Stringgrid2 На рис всё показано. За работающий...

Содержимое выделенной строки из первого StringGrid-а перенести во второй StringGrid - Delphi
Нужно написать программу которая выполняет следующие действия. Есть два StringGrid. По нажатия на кнопку, Содержимое выделенной строки из...

Необходимо сложить ячейки в столбце Stringgrid и вывести в другой Stringgrid - Delphi
Необходимо сложить ячейки в столбце Stringgrid и вывести в другой Stringgrid Количество столбцов и строк задается пользователем

Значение одной ячейки первого StringGrid-а присвоить другой ячейке второго StringGrid-а - Delphi
скажите пожалуйста, вот нам даны две таблицы stringgrid, как значение одной ячейки,первой таблицы, присвоить другой ячейке второй таблице?

Перенос столбца(информации) из StringGrid в другой StringGrid - Delphi
Не могу разобраться с тем, как перенести значения(нажатием кнопки "записать") выданные программой в 1 таблице,из крайнего столбца, во 2...

2
volvo
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
24629 / 16299 / 5007
Регистрация: 22.10.2011
Сообщений: 28,856
Записей в блоге: 5
19.10.2012, 15:18 #2
Возможно, тебе виднее. Ты видишь свой обработчик, мы - нет.
0
mikhea
0 / 0 / 0
Регистрация: 11.02.2010
Сообщений: 14
19.10.2012, 15:36  [ТС] #3
Цитата Сообщение от UI Посмотреть сообщение
Возможно, тебе виднее. Ты видишь свой обработчик, мы - нет.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
procedure TfrmMy.grdMyTopLeftChanged(Sender: TObject);
var
  Rect: TRect;
  i, j: integer;
  gCol: integer;      //Столбец таблицы, соотв. создаваемой кнопке
begin
  try
    for i:=0 to grdMy.RowCount-1 do
      for j:=0 to 5 do
      begin
        if (j = 0) or (j = 1) then
          gCol := j+1
        else
          gCol := j+3;
        Rect := grdMy.CellRect(gCol, i);
        if (grdMy.Objects[gCol, i] is TControl) then
          with TControl(grdMy.Objects[gCol, i]) do
          begin
            if (Rect.Right = Rect.Left) then
              Visible := False
            else
            begin
              if ((Rect.Top = 0) and (Rect.Bottom <> 0) and (i <> 0)) then
                continue;      //Избавляемся от ошибки, периодически возникающей
                               //на границе видимой области
              InflateRect(Rect, -1, -1);
              OffsetRect(Rect, grdMy.Left + 2, grdMy.Top + 2);
              BoundsRect := Rect;
              Visible := True;
            end;
          end;
      end;
  except
  end;
end;
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.10.2012, 15:36
Привет! Вот еще темы с ответами:

Перенос столбца из StringGrid в другой StringGrid - Delphi
Здравствуйте подскажите как перенести данные из столбца № 2 StringGrid2, в столбца № 2 StringGrid1.

Мерцание - Delphi
При нажатии на кнопку картинка перемещается,как сделать чтобь она не мерцала?

Мерцание - Delphi
Необходимо перерисовывать картинку(изменяя размер). Во время перерисовки идет заметное моргание. Как с этим справится?

мерцание - Delphi
начала делать машину, в которой должны мерцать окошки и осталось совсем не много.. дело в том что у меня почему то окошек не видно(( и я...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.