Проблема с TabOrder под Linux

Форум для изучающих FPC и их учителей.

Модератор: Модераторы

Проблема с TabOrder под Linux

Сообщение ya_vanka » 19.02.2015 22:51:51

Добрый день.

Столкнулся с проблемой некорректной отработки свойства TabOrder под Linux (в Windows работает корректно).

Во вложении - проект с формой. На форме ряд контролов. Примерно половина из них (левя часть c Lat. и до выпадающего списка включительно) переключается по Tab, а остальные контролы (checkbox, 3 edit (head, length, width) и 2 button) не переключаются, хотя TabOrder у них назначен и TabStop = true.

Понять не могу в чем дело. Может кто встречался с проблемой и знает решение?

Заранее спасибо.
Вложения
ItemsListDlg.tar.gz
Проект с формой
(3.84 КБ) Скачиваний: 625
ya_vanka
новенький
 
Сообщения: 89
Зарегистрирован: 07.08.2013 14:28:41

Re: Проблема с TabOrder под Linux

Сообщение ya_vanka » 22.02.2015 16:43:35

Люди!
Ну хоть кто-нибудь что-то ответит?
Наблюдается ли у вас эта проблема?
В какую сторону копать?
ya_vanka
новенький
 
Сообщения: 89
Зарегистрирован: 07.08.2013 14:28:41

Re: Проблема с TabOrder под Linux

Сообщение *Rik* » 22.02.2015 19:07:05

ya_vanka писал(а):Люди!
Ну хоть кто-нибудь что-то ответит?
Наблюдается ли у вас эта проблема?
В какую сторону копать?

Не знаю, как вы этот проект делали, в какой версии Lazarus, но я просто попробовал создать проект, кинуть на форму несколько контролов, в т.ч. TCheckBox, проблем не обнаружил.
Аватара пользователя
*Rik*
постоялец
 
Сообщения: 426
Зарегистрирован: 19.04.2011 12:18:51
Откуда: Урал

Re: Проблема с TabOrder под Linux

Сообщение ya_vanka » 23.02.2015 01:27:29

А мой проект вы запускали?
Наблюдаете проблему?

Если да, то получается можно неправильно создать форму. Причем эта неправильность отражается только на TabOrder. Вот я и хочу разобраться в чем состоит эта неправильность.
ya_vanka
новенький
 
Сообщения: 89
Зарегистрирован: 07.08.2013 14:28:41

Re: Проблема с TabOrder под Linux

Сообщение Снег Север » 23.02.2015 10:16:44

Подтверждаю проблему с вашей формой на Mint 64, Lazarus 1.2.6
Причину, к сожалению, не знаю.
Аватара пользователя
Снег Север
долгожитель
 
Сообщения: 2993
Зарегистрирован: 27.11.2007 16:14:47

Re: Проблема с TabOrder под Linux

Сообщение VirtUX » 23.02.2015 12:43:54

Во-первых. У Вас там мешанина с компонентами. Одни поверх других. Потом порядок перехода какой-то хаотичный. И расцветка на некоторых не позволяет получить визуальное отображение фокуса. Или делайте программный переход на следующий компонент, или не городите одни поверх других, или сделайте приемлемый порядок TabOrder. Фокус переключается. Но переодически уходит на компоненты, которые под видимыми сверху. Editы справа фокус получают, если продолжать табулировать. Чекбокс визуально не изменяется при получении фокуса, как и кнопки.
Итого: сделайте удобный дизайн, и наведите порядок в компонентах. ИМХО...
Проверено на openSUSE 13.2 (QT)

Добавлено спустя 9 минут 43 секунды:
в помощь:
Код: Выделить всё
procedure TPointsListDlgForm.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
var
  i, ic: integer;
begin
  if Key = VK_TAB then begin
    ic := ComponentCount - 1;
    for i := 0 to ic do
      if (Components[i] is TWinControl) and TWinControl(Components[i]).Focused then begin
       Caption:= Components[i].Name;
       Break;
      end;
  end;
end;   
Аватара пользователя
VirtUX
энтузиаст
 
Сообщения: 880
Зарегистрирован: 05.02.2008 10:52:19
Откуда: Крым, Алушта

Re: Проблема с TabOrder под Linux

Сообщение Снег Север » 23.02.2015 19:59:03

VirtUX писал(а):мешанина с компонентами

Интересно, что под виндой эта мешанина работает отлично. Впрочем, для меня эта проверка имела "академический" интерес, я под линуксами ничего серьезного не разрабатываю и не собираюсь.
Аватара пользователя
Снег Север
долгожитель
 
Сообщения: 2993
Зарегистрирован: 27.11.2007 16:14:47

Re: Проблема с TabOrder под Linux

Сообщение ya_vanka » 25.02.2015 13:25:09

VirtUX писал(а):У Вас там мешанина с компонентами.


Ну как сказать мешанина. Думаю просто из проекта не совсем понятно как форма должна работать.
То, что 2 MaskEdit находятся под 2 Edit обусловлено лишь тем, что они одновременно не отображаются. В зависимости от режима либо один, либо другой. А находиться должны в одном месте.
Чем вам не понравился порядок TabOrder я тоже не понял.

VirtUX писал(а): Но переодически уходит на компоненты, которые под видимыми сверху

Компоненты TMaskEdit, которые под TEdit имеют свойство Visible = false, так что им фокус не может быть передан.

CheckBox визуально не изменяется, но фокус получает и по пробелу должен переключаться.

Так что, думаю, дело не в "мешанине".



Если кому интересно нашел на англоязычном форуме описание похожей проблемы.

http://forum.lazarus.freepascal.org/ind ... #msg162511
ya_vanka
новенький
 
Сообщения: 89
Зарегистрирован: 07.08.2013 14:28:41

Re: Проблема с TabOrder под Linux

Сообщение pupsik » 25.02.2015 15:12:28

ya_vanka я очень сильно извиняюсь но, вам пытались как можно мягче сказать: пересмотрите расположение компонентов на форме...
У вас реальная мешанина.
Ради интереса, сбросил TabOrder в 0 и... появился фокус. Разбираться чья в этом вина. Ну..у, будем - по умолчанию считать виноватым багнутый лазарь...
pupsik
энтузиаст
 
Сообщения: 1154
Зарегистрирован: 20.08.2014 16:20:13

Re: Проблема с TabOrder под Linux

Сообщение ya_vanka » 25.02.2015 16:29:54

Я тоже извиняюсь если кого обидел или какую глупость написал, но я честно не понимаю что не так с расположением. Буду признателен если вы мне объясните и научите как правильно.

И если можно по-подробнее где вы сбросили TabOrder в 0 и где после этого появился фокус.
ya_vanka
новенький
 
Сообщения: 89
Зарегистрирован: 07.08.2013 14:28:41

Re: Проблема с TabOrder под Linux

Сообщение pupsik » 26.02.2015 13:17:10

по поводу расположения...
все зависит от того что вы хотите. Но такой "разброс" компонентов на форме у меня, к примеру, вызвал шок: "Черт ногу сломит". Почитать... хм...., к примеру что то о интерфейсах, посмотреть как реализовано похожее...

по поводу TabOrder в 0.
после шока и проверки на рабочесть я выделил компоненты и установил TabOrder в 0. При первом варианте фокус фиг его знает куда "прятался", после установки в 0 он стал адекватом. Т.е. переход по табу нормализовался и не "прятался".

п.с.
как я понимаю. Эта панель с компонентами - это нечто редактора. Зачем его совать в одну форму? Можно ведь использовать другую. А потом создавать согласно необходимости.
pupsik
энтузиаст
 
Сообщения: 1154
Зарегистрирован: 20.08.2014 16:20:13

Re: Проблема с TabOrder под Linux

Сообщение VirtUX » 27.02.2015 11:45:37

ya_vanka, Вы обработчик KeyDown, который я выше в примере Вам написал, поставили? Если да, то что Вам не понятно из моих выводов/советов?
Аватара пользователя
VirtUX
энтузиаст
 
Сообщения: 880
Зарегистрирован: 05.02.2008 10:52:19
Откуда: Крым, Алушта

Re: Проблема с TabOrder под Linux

Сообщение ya_vanka » 27.02.2015 15:55:04

VirtUX
Нет, обработчик пока не прикрутил, зато убрал вообще все лишнее. Надеюсь теперь мешанины не будет. Однако проблема сохранилась.
Обработчик постараюсь поставить в ближайшее время.

pupsik
Попробовал выставить TabOrder в 0. Порядок поменялся, а дальше ComboBox все равно не идет.

Добавлено спустя 2 часа 51 минуту 33 секунды:
VirtUX
Добавил ваш код (проект ItemsListDlg_3.zip). Он показывает предыдущий контрол, который имел фокус. Дальше ComboBox по-прежнему не переходит.
Вложения
ItemsListDlg_3.zip
Проект с кодом от VirtUX
(3.59 КБ) Скачиваний: 599
ya_vanka
новенький
 
Сообщения: 89
Зарегистрирован: 07.08.2013 14:28:41

Re: Проблема с TabOrder под Linux

Сообщение ya_vanka » 02.03.2015 19:42:59

Что интересно после ComboBox фокус переходит на панель Pnt1PanelDefPos, хотя у нее TabStop = false.
ya_vanka
новенький
 
Сообщения: 89
Зарегистрирован: 07.08.2013 14:28:41

Re: Проблема с TabOrder под Linux

Сообщение ya_vanka » 10.03.2015 14:03:35

Что-то топик снова подвис.

Наблюдаете ли вы описанную проблему и есть ли идеи как ситуацию исправить?
ya_vanka
новенький
 
Сообщения: 89
Зарегистрирован: 07.08.2013 14:28:41


Вернуться в Обучение Free Pascal

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex [Bot] и гости: 7

Рейтинг@Mail.ru