Всем добрый день!
Lazarus v.0.9.26 beta установлена на WinXP SP2.
При разработке своего проекта (для меня впервые в Лазарусе) я встретил два непреодолимых препятствия:
1. В Label1.Caption (ListBox, Memo) вывожу строку str1 + str2[1]. Если переменные str1 и str2 содержат английские буквы - всё хорошо, но если в str2 русские буквы - вообще ничего не выводится. Это же справедливо для полей набора данных (вычисляемое поле фамилия + имя[1] + '.' + отчество[1] + '.') - в DBGrid пусто. При этом str1 + str2 выводится при любых значениях.
2. Есть два набора данных SQLQuery. При перемещении по записям SQLQuery1 происходит следующее: в переменную (SelectedPersonID) запоминается ID записи SQLQuery2. SQLQuery2 закрывается -> его параметру присваивается значение некоторого поля SQLQuery1 -> SQLQuery2 открывается. Далее SQLQuery2 пытается переместить свой курсор на запись до закрытия:
try
if not qrtABUsers.Locate( 'ID', SelectedPersonID, [] ) then
qrtABUsers.First;
except
end;
т.е. если такой записи нет, то встаем на первую запись в наборе данных.
Так вот, пока я не закомментировал приведенные выше строки с Locate, происходили ужасные вещи, а именно:
- DBGrid мог не отрисовать часть данных или не вывести вообще ни чего. При попытках перемещения по DBGrid с помощью мыши или клавиатуры его курсор прыгал на любую запись или вообще не реагировал. Двое суток я искал подвох, но когда нашел вообще расстроился. Как вообще результат работы функции Locate в момент открытия набора данных может влиять на последующую навигацию по этим данным?????????????