10 / 10 / 6
Регистрация: 14.03.2011
Сообщений: 392
1

Непонятное поведение процедуры

10.11.2018, 20:35. Показов 479. Ответов 12
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый день уважаемый форумчане.

Имеется процедура, она работает с string_grid, парой глобальных переменных. В этой процедуре перерисовывается string_grid. Так вот когда я вызываю процедуру из кода, грид рисуется неправильно, но стоит запустить процедуру физически кликнув по кнопке то все рисуется нормально.

Добавил таймер, поставил интервал в 100ms, в обработчик добавил процедуру, и программно вызываю таймер, так ешкин кот процедура работает нормально...

Подскажите в чем взаимосвязь ? Не понимаю, как такое может быть...
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.11.2018, 20:35
Ответы с готовыми решениями:

MD5 непонятное поведение
Доброе утро, Помогите разобрать MD5. Есть формула : ss1 = md5(data + password) password -...

Непонятное поведение программы
Есть вот значит структура list, и хэш-таблица, хранящая массив списков. Добавила я туда значения...

Непонятное поведение программы с потоками
Решил начать с примитива и сразу же проблемы! Читаю в переводе книгу Мартина Харвей по...

Непонятное поведение getera property
Помогите разобраться, что делаю не так Имеется следующий класс CPointFromLine = class (CPoint) ...

12
5705 / 2296 / 466
Регистрация: 20.11.2009
Сообщений: 7,720
Записей в блоге: 1
10.11.2018, 21:37 2
явно дело в тех двух переменных, которые инициализируются после того, как происходят пляски со стринггридом, надо в эту сторону копать и смотреть когда что инициализируется и чему что равно в какой-то промежуток времени
0
10 / 10 / 6
Регистрация: 14.03.2011
Сообщений: 392
10.11.2018, 23:15  [ТС] 3
Переменные глобально объявлены только, нигде больше не используются...
0
5705 / 2296 / 466
Регистрация: 20.11.2009
Сообщений: 7,720
Записей в блоге: 1
10.11.2018, 23:25 4
ну код в студию тогда уж.. наверное что-то что-то создается в oncreate, что потом в onshow или типа того переделывается. код даваем сюда)
0
пофигист широкого профиля
4740 / 3176 / 860
Регистрация: 15.07.2013
Сообщений: 18,287
11.11.2018, 02:36 5
СтрингГрид, да и все прочие компоненты надо перерисовывать в стандартном обработчике перерисовки.
Вот такой Ёшкин кот.
0
10 / 10 / 6
Регистрация: 14.03.2011
Сообщений: 392
11.11.2018, 12:01  [ТС] 6
Вот собственно код, а что за стандартный обработчик перерисовки ? Как туда все это дело засунуть ?
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
        
while not db_query.Eof do
        begin
          //Переход на новую строчку грида
          if glob_rowcount <> ZColorStringGrid1.RowCount then
          begin
            glob_rowcount:=ZColorStringGrid1.RowCount;
            ZColorStringGrid1.Height:=ZColorStringGrid1.Height+21;
          end;
          //Цвет
          ZColorStringGrid1.CellStyle[glob_col, glob_row].BGColor:=clWebYellow;
          //Выравнивание
          ZColorStringGrid1.CellStyle[glob_col, glob_row].HorizontalAlignment:=System.Classes.taCenter;
          ZColorStringGrid1.Cells[glob_col, glob_row]:=IntToStr(db_query.FieldByName('otdel').AsInteger);
          //Если строка заполнена переходим на другую строчку
          if glob_counter = 6 then
          begin
            glob_counter:=0;
            Inc(glob_row);
            glob_col:=0;
            ZColorStringGrid1.RowCount:=ZColorStringGrid1.RowCount+1;
          end else begin
            Inc(glob_col);
            Inc(glob_counter);
          end;
          db_query.Next;
        end;
0
5705 / 2296 / 466
Регистрация: 20.11.2009
Сообщений: 7,720
Записей в блоге: 1
11.11.2018, 12:23 7
толку с этого отрывка кода нету. в каком он обработчике происходит? это важно, а не то что этот код делает
0
10 / 10 / 6
Регистрация: 14.03.2011
Сообщений: 392
11.11.2018, 12:42  [ТС] 8
Это все что находится внутри процедуры, больше ничего нет, ну кроме создания mysql подключения и запроса... Вызывается процедура отсюда: тобишь при клике по ячейки

Delphi
1
2
procedure TForm1.ZColorStringGrid1SelectCell(Sender: TObject; ACol,
  ARow: Integer; var CanSelect: Boolean);
0
5705 / 2296 / 466
Регистрация: 20.11.2009
Сообщений: 7,720
Записей в блоге: 1
11.11.2018, 12:48 9
ну так при клике по ячейке она вызывается же? т.е. чтобы вызвалась, нужно выбрать ячейку, пока не выбрал ячейку ничего не отработается, ведь так?

я не понимаю тогда в общем
Цитата Сообщение от Critically Посмотреть сообщение
Добавил таймер, поставил интервал в 100ms, в обработчик добавил процедуру, и программно вызываю таймер, так ешкин кот процедура работает нормально...
0
10 / 10 / 6
Регистрация: 14.03.2011
Сообщений: 392
11.11.2018, 14:24  [ТС] 10
Вот так не работает:
Delphi
1
2
3
4
5
procedure TForm1.ZColorStringGrid1SelectCell(Sender: TObject; ACol,
  ARow: Integer; var CanSelect: Boolean);
begin
Наша процедура; 
end;
А вот так работает:
Delphi
1
2
3
4
5
6
7
8
9
10
11
procedure TForm1.Timer1Timer(Sender: TObject);
begin
 Наша процедура;
 Timer1.Enabled:=False;
end;
 
procedure TForm1.ZColorStringGrid1SelectCell(Sender: TObject; ACol,
  ARow: Integer; var CanSelect: Boolean);
begin
Timer1.Enabled:=True; 
end;
Добавлено через 1 час 28 минут
Почему не работает первый случай я пытаюсь узнать... В этом и вопрос...
0
Модератор
9305 / 6086 / 2384
Регистрация: 21.01.2014
Сообщений: 25,977
Записей в блоге: 3
11.11.2018, 14:27 11
Полный код - у Вас, отладчик - тоже у Вас есть... Вот и смотрите что происходит в каждый конкретный момент...
0
10 / 10 / 6
Регистрация: 14.03.2011
Сообщений: 392
11.11.2018, 14:39  [ТС] 12
Отличный полезный совет, спасибо.
0
5705 / 2296 / 466
Регистрация: 20.11.2009
Сообщений: 7,720
Записей в блоге: 1
11.11.2018, 14:50 13
Цитата Сообщение от Critically Посмотреть сообщение
Отличный полезный совет, спасибо.
ну а какой совет еще дать то тут можно? по словам "не работает" и "почему"? я не настолько крепкий кофе например пью, чтобы гадания производились успешно на гуще)
0
11.11.2018, 14:50
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.11.2018, 14:50
Помогаю со студенческими работами здесь

Непонятное поведение поведение TIM6 на STM32f4discovery
Вводные данные: SYSCLK=168Мгц; AHB Pressotir=1; APB1 Pressotir=4; TIM6_Pessotir=3; Т.о....

Непонятное поведение ОС
Здрасте! Купил новый комп, а он загружается через раз (чаще через несколько раз), выключается...

Непонятное поведение
Всем привет! В книге &quot;Прата - Язык программирования C++. Лекции и управжения 2011&quot; нашёл вот такой...

Непонятное поведение QTextEdit
На форме есть QTextEdit сделанный через Qt Creator. Поначалу все работает, текст вводится,...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru