Страница 2 из 12
------------------------------------------------------------ Q-27: Как мне перекодировать строки из Win-кодировки в Dos-кодировку и наоборот?
------------------------------------------------------------ CharToOEM, OEMToChar, CharToOEMBuff, OEMToCharBuff. Заметьте однако, что эти функции не умеют делать таких, например, вещей, как koi8-r в DOS и т. п. ------------------------------------------------------------ Q-28: Как отловить события создания или удаления файлов другими программами?
------------------------------------------------------------ В rxLib есть TrxFolderMonitor. (Win16) FileCDR, но она плохо документирована. ------------------------------------------------------------ Q-29: Как вывести диалог выбора каталога? ------------------------------------------------------------ (DS): SelectDirectory, rxLib: TDirectoryEdit. ------------------------------------------------------------ Q-30: Не перерисовываются окна во время длинного цикла ------------------------------------------------------------ Моя программа довольно долго делает какую-то полезную работу, типа чтения дерева каталогов или обильных вычислений, и в этот момент почти не работают остальные программы. Как разрешить им это делать? Application.ProcessMessages. (AA): Если вы хотите отдавать timeslices в нитях, пользуйтесь Sleep(0); это отдаст остаток слайса системе. (Win16) Если вы хотите разрешить отработку сообщений другим программам, но не вашей, то лучше пользоваться Yield(). ------------------------------------------------------------ Q-31: Как мне запустить какую-нибудь программу ------------------------------------------------------------ Как мне запустить какую-нибудь программу? А как подождать, пока эта программа не отработает? Как выяснить, работает ли программа или уже завершилась? Как принудительно закрыть выполняющуюся программу? WinExec() или ShellExecute. У второй больше возможностей. (SO): CreateProcess() в параметре process info возвращает handle запущенного процесса. Вот и делаешь WaitForSingleObject(pi.hProcess, INFINITE); (AA): (Win16) Delay можно взять из rxLib. handle := WinExec(...); if handle >= 32 then while GetModuleUsage(handle) > 0 do Delay( nn ); else raise .... (AM): Чтобы выяснить, работает ли программа, используйте GetProcessTimes(), параметр lpExitTime. (Win32) Для принудительного завершения процесса -- TerminateProcess. (Win16) (RR): Hадо послать программе сообщение WM_QUIT: Handle := Winexec(App, 0); PostMessage(Handle, WM_QUIT, 0, 0); ------------------------------------------------------------ Q-32: Как сделать так, чтобы при щелчке по кнопке или по TLabel запускался, например, браузер
------------------------------------------------------------ Как сделать так, чтобы при щелчке по кнопке или по TLabel запускался, например, браузер с сайтом программы или почтовая программа с определенным адресом получателя? uses ShellApi; { ... } ShellExecute("https://www.company.com", ... ); ShellExecute("mailto:
Этот e-mail защищен от спам-ботов. Для его просмотра в вашем браузере должна быть включена поддержка Java-script
", ...); ------------------------------------------------------------ Q-33: Как правильно закрыть и удалить форму? ------------------------------------------------------------ Как правильно закрыть и удалить форму? Почему моя MDI Child форма при закрывании просто минимизируется? Обрабатывайте событие OnClose для формы и выставляйте в нем параметр Action в caFree. Дело в том, что его значение по умолчанию для MDI Child форм caMinimize. Кстати, если сделать Action := caNone, то форму нельзя будет закрыть. ------------------------------------------------------------ Q-34: Мне надо добавить много строк в TListbox или в TCombobox или в TMemo ------------------------------------------------------------ Мне надо добавить много строк в TListbox или в TCombobox или в TMemo или в TRichEdit, при этом сам объект постоянно мигает, перерисовываясь. Как избавиться от этого? BeginUpdate/EndUpdate. ------------------------------------------------------------ Q-35: Как мне запрограммировать непрямоугольную форму, например, как у Norton CrashGuard, в форме щита?
------------------------------------------------------------ SetWindowRgn() (Win32). ------------------------------------------------------------ Q-36: Как использовать свои курсоры в программе? ------------------------------------------------------------ {$R CURSORS.RES} const crZoomIn = 1; crZoomOut = 2; Screen.Cursors[crZoomIn] := LoadCursor(hInstance, 'CURSOR_ZOOMIN'); Screen.Cursors[crZoomOut] := LoadCursor(hInstance, 'CURSOR_ZOOMOUT'); С вашей программой должен быть слинкован файл ресурсов, содержащий соответствующие курсоры. ------------------------------------------------------------ Q-37: Как ограничить перемещение курсора мыши какой-либо областью экрана? ------------------------------------------------------------ ClipCursor(). Учтите, что использование этой функции -- плохой тон. ------------------------------------------------------------ Q-38: Как из программы переключить раскладку клавиатуры? ------------------------------------------------------------ ActivateKeyboardLayout(). Учтите, что использование этой функции -- плохой тон. ------------------------------------------------------------ Q-39: Как сделать так, чтобы по Alt-F4 форма не просто закрывалась, а выдавала запрос на сохранение?
------------------------------------------------------------ Обрабатывать OnCloseQuery. |