Конференция "FreePascal" » Проблема с диалогами и другие заморочки [Win32]
 
  • Маг Похмеляйнен (08.01.06 17:22) [0]
    Часть 1. Проблема с диалогами.

    Столкнулся с ненормальным поведением приложения
    при использовании диалогов из набора компонентов Lasarus-а.

    Итак, элементарный проект: форма, на ней две кнопки,
    и компонент OpenDialog.

    Код обработчика нажатя для кнопки следующий:

    procedure TForm1.Button1Click(Sender: TObject);
    begin
     if (OpenDialog1.Execute()) then
       ShowMessage(ExtractFilePath(OpenDialog1.FileName));
    end;

    Как видите, ничего особенного.

    Компилируем.
    Нажимаем кнопку Button1.
    Выскакивает диаложек OpenFile, выбираем файл,
    нажимаем Открыть. Диаложек закрывается.

    Далее, в соответствии с логикой работы программы,
    должен быть немедленно показано сообщение:
    ShowMessage(ExtractFilePath(OpenDialog1.FileName))

    Вместо показа сообщения программа впадает в ступор,
    до тех пор, пока по главной форме не проведут мышкой,
    или не нажмут клавишу на клавиатуре!

    Только после этого появляется долгожданный диалог.

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

    Внимание вопросы: Это правильное поведение диалогов или нет?

    Что можно сделать, чтобы диалоги работали правильно?

    У меня FPC 2.0.0 и Lasarus 0.9.1b

    Спасибо.
  • Маг Похмеляйнен (08.01.06 17:24) [1]
    Часть 2. Упорный Лазарь.

    a) При внесении минимальных изменений в проект -
    - редактирования текста модуля, добавление или удаление
    компонента на форме, проект внезапно перестаёт собираться.

    Сообщения при этом:

    project1.lpr(13,1) Error: Error while linking"
    Closing script ppas.bat

    И всё.

    Если перезапустить Лазаря, проект начинает собираться
    без ошибок.

    Приходится после каждого изменения перезагружать IDE,
    чтобы гарантированно собрать проект.

    Как это исправить?

    b) При установке Lasarus выбирает кодировку сообщений
    для IDE самостоятельно.

    В моём случае это была koi8-r :o)

    При работе в Windows XP SP2 rus с кодировкой win1251
    Lasarus IDE выглядела довольно экзотично.

    Надо понимать, тип кодировки можно выбрать здесь:

    меню Окружение - диалог Параметры окружения - вкладка Рабочий стол - группа Язык.

    Но: как найти нужные пункты, когда вместо человеческих
    сообщений цифробуквенная жуть?

    Конечно, при установке было бы логично, чтобы Lasarus выбирал
    английскую кодировку, что Вы об этом думаете?

    c) Lasarus не использует Буфер Обмена Windows, что порой
    очень неудобно.

    Как можно заставить Лазаря работать со стандартным
    Буфером Обмена Windows? Есть ли такая настройка?

    Спасибо за внимание и терпение!
 
Конференция "FreePascal" » Проблема с диалогами и другие заморочки [Win32]
Есть новые Нет новых   [119099   +89][b:0][p:0]