![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Глюк 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
> Че за приколы у грида
Не надо на зеркало пенять ...