Советы по Delphi. Версия 1.4.3 от 1.1.2001
Шрифт:
Диалоги
Использование InputBox и InputQuery
Тема: Использование InputBox, InputQuery и ShowMessage
Данная функция демонстрирует 3 очень мощных и полезных процедуры, интегрированных в Delphi.
Диалоговые окна InputBox и InputQuery позволяют пользователю вводить данные.
Функция InputBox используется в том случае, когда не имеет значения что пользователь выбирает для закрытия диалогового окна – кнопку OK или кнопку Cancel (или нажатие клавиши Esc). Если вам необходимо знать какую кнопку нажал пользователь (OK
ShowMessage – другой простой путь отображения сообщения для пользователя.
Текст на кнопках MessageDlg
Как можно сменить текст на кнопках диалогового окна MessageDlg? Английский язык для текста кнопок пользователь хочет заменить на родной.
Текст кнопок извлекается из списка строк, расположенных в файле …\DELPHI\SOURCE\VCL\CONSTS.PAS. Отредактируйте его, после чего пересоберите VCL.
– Steve Schafer
VS дополняет:
Но можно ничего не менять. Вместо MessageDlg использовать MessageBox – функция WINDOWS. И, если ваш WINDOWS русифицирован, то надписи на кнопках в диалоговых окнах будут на русском языке.
Изменения в TOpenDialog
Delphi 1
Почитайте про Open Dialog Box (диалоговое окно открытия файла) в файле помощи Windows API. Ознакомьтесь в статье с описанием аргумента lpTemplateName. Главное, вы можете создать новое диалоговое окно для Open Dialog Box и заменить стандартный диалог вашим собственным.
Как вывести диалог выбора каталога?
Одной строкой
Nomadic советует:
A: (DS): SelectDirectory, rxLib: TDirectoryEdit.
Сообщения
Как послать самостийное сообщение всем главным окнам в Windows?
Nomadic советует:
Пример:
Кстати, для посылки сообщения дочерним контролам некоего контрола можно использовать метод Broadcast.
Как избавиться от торможения модальных окон?
Igor Nikolaev aKa The Sprite советует:
Hемодальные диалоговые окна, находящиеся на экране во время выполнения длительных операций,могут реагировать на действия пользователя очень медленно. Это ограничение Windows, и обойти его можно так:
Моя программа довольно долго делает какую-то полезную работу, типа чтения дерева каталогов или обильных вычислений, и в этот момент почти не работают остальные программы. Как разрешить им это делать?
Nomadic отвечает:
A: Application.ProcessMessages.
(AA): Если вы хотите отдавать timeslices в нитях, пользуйтесь Sleep(0); это отдаст остаток слайса системе.
(Win16) Если вы хотите разрешить отработку сообщений другим программам, но не вашей, то лучше пользоваться Yield.
Файловая система
Метка диска под Win32
По моему глубокому убеждению для получения метки диска в среде Win95 необходимо использовать FindFile. Но это не работает, так?
Правильно, FindFile в Win32 больше не возвращает имя диска, поскольку в не-FAT файловых системах (например, в NTFS) это работает иначе, чем в FAT. Вместо этого используйте функцию API GetVolumeInformation.
– Peter Below
Восстанавление длинных имен файлов по известным коротким
boris советует: