![]() |
Добро пожаловать, гость ( Вход | Регистрация )
![]() |
-=CHE@TER=- |
![]()
Сообщение
#1
|
Walter Sullivan ![]() ![]() ![]() Группа: Root Admin Сообщений: 1,360 Регистрация: 4-February 08 Пользователь №: 3 Спасибо сказали: 313 раз(а) ![]() |
Delphi programs in API.
На английском. Очень подробно всё описано, плюс есть исходные коды готовых юнитов. Например SmallUtil, в котором есть все частоиспользуемые подпрограммы, и который в размере меньше, чем SysUtils (автор так утверждает - я не проверял). |
![]() ![]() |
-=CHE@TER=- |
![]()
Сообщение
#2
|
Walter Sullivan ![]() ![]() ![]() Группа: Root Admin Сообщений: 1,360 Регистрация: 4-February 08 Пользователь №: 3 Спасибо сказали: 313 раз(а) ![]() |
Поделюсь двумя вещами.
1) Во-первых, в Delphi 7 как-то через одно место сделана работа с позиционированием формы. CODE procedure TForm1.FormActivate(Sender: TObject); begin // в LoadDataFromFileAndChangeFormSize читаем данные из файла // указанного как параметр командной строки и меняем размер формы LoadDataFromFileAndChangeFormSize; // пытаемся отцентрировать форму с новым размером на экране Form1.Position:=poScreenCenter; // <-- вот тут мы падаем и программа зависает end; Прилетает ошибка "Cannot change Visible in OnShow or OnHide", потому что нельзя менять позицию (при чём тут Visible кто-нибудь, кроме Borland, знает?!) во время события onActivate. А проблема там в том, что при изменении позиции зачем-то пересоздаётся форма (долбанный стыд!). Решения этой проблемы в Интернете меня вообще убили - доходило до того, что советовали создать таймер в onActivate, который будет через секунду центрировать форму (когда она уже появится). Ну офигеть просто. Исправить же ситуацию быстро и просто можно через WinAPI: CODE MoveWindow( Form1.Handle, (Screen.Width - Form1.Width) Div 2, (Screen.Height - Form1.Height) Div 2, Form1.Width, Form1.Height, TRUE ); 2) А тут поделюсь одним интересным приёмом. В последнее время наделал кучу PHP-скриптов, для автоматизации всего и вся. Проблема с ними в том, что их постоянно нужно либо: а) Вызывать вручную: CODE php -f file.php somefile.ext б) Либо таскать вместе со скриптом .BAT файл, где это безобразие будет прописано: CODE @php -f file.php %1 Но есть способ проще! Пишем PHP-скрипт, затем переименовываем его в .BAT и добавляем в начало: CODE @php -f %0 %1 %2 %3 %4 %5 %6 %7 %8 %9 & goto :EOF <?php // а тут у нас программа на PHP, которая что-нибудь делает ?> И всё! У нас один .BAT файл и никакого головняка! |
![]() ![]() |
Упрощённая версия | Сейчас: 25th August 2024 - 06:11 |