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

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

Глюк StringGrid


Данилыч ©   (2012-11-19 15:15:00) 

Здравствуйте! Нужен совет мастеров. На форме лежит стандартный стринггрид, вывожу на оншов формы данные в грид. Все бы хорошо но в некоторых строках грида данные почему то не обновляются сразу, а только после щелчка мышью на другой какой то строке :( Пример открываю форму(не основная,а дополнительная информационная) первый раз прога показывает одни данные, закрываю,открываю повторно, показаны следующие данные,но в некоторых строках остаются предыдущие до щелчка на любой из строк. На онклик грида нет процедуры обработки щелчка, только на оншов формы на которой лежит грид. В таком стиле: StringGrid1.Cells[0,0]:='бла-бла-бла' и так для всех строк(цифры конечно соответствуют номерам строк). Че за приколы у грида не пойму :( Больше никакого кода для вывода данных в строки грида нигде в проге нет.


AV   (2012-11-20 17:25:00) [1]

потому что, скорее всего, все-таки обращается.\

или так написать

 private
   function GetSG: TStringGrid;
 public     { Public declarations }
   B: Boolean;
   property SG:TStringGrid read GetSG;

// теперь обращаться не к StringGrid1, а к SG

function TForm1.GetSG: TStringGrid;
begin
 if not(b) then
   raise Exception.Create('Ups');
 Result := sg1;  //StringGrid1
end;

procedure TForm1.FormShow(Sender: TObject);
begin
 b := True; // можно дергать стринггрид
 sg.Cells[Random(5),Random(5)] := TimeToStr(now); // дергаем1
 sg.Cells[Random(5),Random(5)] := TimeToStr(now); // дергаем2
 b := False; // теперь нельзя
end;

procedure TForm1.btn1Click(Sender: TObject);
begin
 sg.Cells[Random(5),Random(5)] := TimeToStr(now); // тут будет ошибка
end;


Данилыч   (2012-11-20 17:19:00) [2]

Замучился уже з гридом, сменил на листвьюв. Теперь все работает как часы! :)
Че за хрень с гридом, можт потом разберусь... Для показа пару строк данных любой список-компонент подойдет :)


AV   (2012-11-20 17:04:00) [3]


> Прикол в том,что грид чистится перед показом, присваиваю
> пробелы последовательно всем строкам(иначе не знаю)

и так тоже не воспроизводится.
http://www.fotolink.su/v.php?id=e10fd57045a99715f79d7e69c8dc8e73

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


Германн   (2012-11-20 01:40:00) [4]


> Данилыч   (19.11.12 23:59) [12]
>
> Прикол в том

Прикол в том, что несмотря на твои заверения типа
> На онклик грида нет процедуры обработки щелчка, только на
> оншов формы на которой лежит грид. В таком стиле: StringGrid1.
> Cells[0,0]:='бла-бла-бла' и так для всех строк


> Больше никакого кода для вывода данных в строки грида нигде
> в проге нет

до сих пор не представлен простой тестовый пример программы, который сей "якобы" глюк TStringGrid демонстрирует.


sniknik   (2012-11-20 01:08:00) [5]

> Прикол в том,что
без подтверждения кодом(достоверной инфой, "нотариально заверенным скриншотом" например) плевать на твои "приколы".


Данилыч   (2012-11-19 23:59:00) [6]

Прикол в том,что грид чистится перед показом, присваиваю пробелы последовательно всем строкам(иначе не знаю)


Ghost del vonte   (2012-11-19 20:12:00) [7]


> первый раз прога показывает одни данные, закрываю,открываю
> повторно, показаны следующие данные,но в некоторых строках
> остаются предыдущие


Может перед показом очищать весь грид от строк? не?


Ghost del vonte   (2012-11-19 20:00:00) [8]


> Аналогично...
>
> http://www.fotolink.su/v.php?id=e2d153b5651add1256d3e71302cd0517


http://www.fotolink.su/v.php?id=b579ebc9786ab9d0dcbd309cae79b59a


Ghost del vonte   (2012-11-19 19:56:00) [9]

Аналогично...

http://www.fotolink.su/v.php?id=e2d153b5651add1256d3e71302cd0517


Данилыч   (2012-11-19 19:15:00) [10]

По логике тоже так быть не должно,я понимаю но тем не менее факты налицо :( Строк StringGrid1.Cells[0,0]:='бла-бла-бла' у меня 16  :) Возможно глючный грид в ломаной Delphi2010 architect ?


AV   (2012-11-19 17:31:00) [11]

http://www.fotolink.su/v.php?id=d32d753ca95d877a0699593e1dfd20a8
проблема не воспроизводится


Данилыч   (2012-11-19 17:27:00) [12]

По наивности в конце еще грид.рефреш прикрутил :) не помогло :(


Данилыч   (2012-11-19 17:25:00) [13]

на оншов формы StringGrid1.Cells[0,0]:='бла-бла-бла' нет больше никакого кода. Такие же операторы для остальных 15 строк грида, только в каждой строке другая инфа


AV   (2012-11-19 17:01:00) [14]

давай минимальный код, иллюстрирующий проблему


Данилыч   (2012-11-19 16:55:00) [15]

На онклик грида нет обработчика


AV   (2012-11-19 16:54:00) [16]

"не верю"

заменить все
TStringGrid.Cells[a, b] := s;
на
 SG_CELL(a, b, s);

где
procedure TForm1.SG_CELL(ACol, ARow: Integer; const Value: string);
begin
 if EnableChange then
  TStringGrid.Cells[ACol, ARow] := Value else
   raise Exception.create(' ошибка логики');
end;

EnableChange включать принудительно, только когда нужно действительно писать в ячейку, после сразу выключать


Amoeba_   (2012-11-19 15:33:00) [17]


> Глюк StringGrid
> Че за приколы у грида

Не надо на зеркало пенять ...


Наверх

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