|
Программирование в Delphi |
|
Порядок обработки событий
При загрузке формы Дельфи, происходят и обрабатываются следующие события и в следующем порядке:
On Create On Show On Paint On Activate On Resize On Paint
Операции с курсором
Показать курсор "Песочные часы":
Screen.Cursor:=crHourglass;
Скрыть/показать курсор:
ShowCursor(false); ShowCursor(true);
Определение и установка позиции мыши:
GetCursorPos(LpPoint:TPoint):boolean;
SetCursorPos(x,y:integer):boolean;
Пример: Блокировка работы мыши.
repeat SetCursorPos(10000,10000); Application.ProcessMessages; until false;
Создание своего курсора в Delphi
Для создания нового курсора можно выполнить следующий порядок действий:
Открыть в программе "Image Editor" файл ресурсов своего проекта (*.res); (Программа "Image Editor" поставляется вместе с Delphi). Создать в ней курсор и сохранить файл; В коде программы следует написать:
const crMyCursor=7; Procedure TForm1.FormCreate(SenderTObject); begin Screen.Cursors[crMyCursor]:= LoadCursor(HInstance,'NewCursor'); Cursor:=crMyCursor; end;
{'NewCursor'- это имя вашего курсора в (*.res)}
Заново откомпилировать проект (можно предварительно удалить из папки проекта все файлы типа(*.exe) и (*.dcu));
Кнопки мыши
Распознать нажатую кнопку мыши можно при помощи переменной Shift:TShiftState, которая отвечает за нажатую кнопку и присутствует во всех событиях "OnMouse..."
Например: Проверить, что нажата левая кнопка.
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin if ssLeft in Shift then begin ShowMessage('Нажата левая кнопка мыши'); end; end;
Запись картинки на диск
Прежде всего, на форму нужно поместить объект "SavePictureDialog". Затем набрать следующий код:
If SavePictureDialog1.Execute then begin SavePictureDialog1.DefaultExt := GraphicExtension(TBitmap); b.SaveToFile(SavePictureDialog1.fileName); end;
Переменную "b" нужно объявить заранее (var b:TBitmap) и присоединить к ней объект Image, в котором содержится изображение. Например, так:
b.Assign(Form1.image5.picture.bitmap);
К оглавлению
Работа со звуком в Delphi
Для работы со звуковыми файлами на форму нужно поместить объект "MediaPlayer". Чтобы открыть звуковой файл, можно воспользоваться следующим кодом:
Procedure Open_Wav(f:string); begin form1.MediaPlayer1.close; form1.MediaPlayer1.FileName:=f; try form1.MediaPlayer1.Open; except end; end;
Здесь "f" - это имя звукового файла. Если указан не полный путь, то файл ищется в текущем каталоге.
Пример открытия и проигрывания звукового файла:
Open_Wav('zv4.wav'); try form1.MediaPlayer1.Play; except end;
Перехват закрытия окна формы
Если перед закрытием окна Вашей программы нужно выполнить какие-то действия, то нужно обработать событие "OnClose". Это можно сделать, например, так:
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin if MessageDlg('Закрыть программу?', mtCustom, [mbYes, mbNo], 0) = mrYes then begin Action := caFree; exit; end else begin Action := caNone; exit; end; end;
К оглавлению
Сменить обои Windows программно
Для выполнения этой задачи можно воспользоваться такой командой:
SystemParametersInfo(SPI_SETDESKWALLPAPER,0,PChar('C:\Windows\Plus.bmp'), SPIF_SENDWININICHANGE);
В разделе "PChar" нужно указать адрес реального файла картинки (*.bmp).
Изменить разрешение экрана программно
В Delphi это поможет сделать следующая процедура:
procedure ChangeDisplayResolution(x,y:word); var dm : TDEVMODE; begin ZeroMemory(@dm, sizeof(TDEVMODE)); dm.dmSize := sizeof(TDEVMODE); dm.dmPelsWidth := x; dm.dmPelsHeight := y; dm.dmFields := DM_PELSWIDTH or DM_PELSHEIGHT; ChangeDisplaySettings(dm, 0); end;
Где х - размер экрана по горизонтали; y - размер по вертикали;
Вывод данных в текстовый файл
Для начала, на форму нужно поместить компонент "SaveDialog". Свойству "DefaultExt" присвоить значение "TextFile"; Свойству "Фильтр" присвоить значение "*.txt"; В коде программы набрать процедуру:
procedure SaveTxtInfo; var f:TextFile; begin If SaveDialog1.Execute then begin AssignFile(f,SaveDialog1.FileName); Rewrite(f); Writeln(f,'Ваши данные'); CloseFile(f); end; end;
Чтение данных из текстового файла
На форму нужно поместить компонент "OpenDialog". Свойству "DefaultExt" присвоить значение "TextFile"; Свойству "Фильтр" присвоить значение "*.txt" и "*.*"; В программе набрать код:
procedure ReadTxtInfo; var f:TextFile; s:string; begin If OpenDialog1.Execute then begin AssignFile(f,OpenDialog1.FileName); Reset(f); Readln(f,s); CloseFile(f); end; end;
Создание и чтение ini-файла в Дельфи
В разделе "Uses" нужно подключить модуль "Inifiles". В приведенном ниже коде продемонстрированы основные приёмы работы с ini-файлами.
procedure TForm1.Button1Click(Sender: TObject); var IniFile:TIniFile; pass:string; begin pass:='zsv'; IniFile := TIniFile.Create('c:\test.INI'); { Создали экземпляр объекта } IniFile.WriteBool('Options', 'Sound', True); { Секция Options: Sound:=true } IniFile.WriteInteger('Options', 'Level', 3); { Секция Options: Level:=3 } IniFile.WriteString('Options' , 'Secret password', Pass); IniFile.WriteString('Windows','Run','c:\windows\reestr.reg'); { Секция Options: в Secret password записать значение переменной Pass } IniFile.ReadSection('Options ', memo1.lines); { Читаем имена переменных } IniFile.ReadSectionValues('Options ', memo2.lines); { Читаем имена и значения } IniFile.ReadSectionValues('Windows ', memo2.lines); { Читаем имена и значения }
IniFile.Free; { Закрыли файл, уничтожили объект и освободили память } end;
Работа с реестром
В разделе "Uses" нужно подключить модуль "Registry".
Данный пример создаёт (если его не было) или открывает ключ реестра HKEY_LOCAL_MACHINE\Softvare\Test и записывает в него два параметра типа Boolean и Integer. (После выполнения удалите созданный ключ из реестра):
procedure TForm1.Button2Click(Sender: TObject); var REG : TRegistry; begin REG := TRegistry.Create; REG.RootKey:=HKEY_LOCAL_MACHINE; REG.OpenKey('Software\Test',true); REG.WriteBool('Test1',true); REG.WriteInteger('Test2',12); REG.CloseKey; REG.Destroy; ShowMessage('Ключ создан, параметры внесены.'); end;
Следующий пример открывает ключ HKEY_LOCAL_MACHINE\Software\Test (контролируя, есть ли он) и пытается читать параметры с проверкой, существуют ли они:
procedure TForm1.Button2Click(Sender: TObject); var REG : TRegistry; B : Boolean; I : Integer; begin REG := TRegistry.Create; REG.RootKey:=HKEY_LOCAL_MACHINE; if REG.OpenKey('Software\Test',false) then begin if REG.ValueExists('Test1') then B:=REG.ReadBool('Test1') else ShowMessage('Параметр Test1 не найден'); if REG.ValueExists('Test2') then I:=REG.ReadInteger('Test2') else ShowMessage('Параметр Test2 не найден'); end else ShowMessage('Ключ HKEY_LOCAL_MACHINE\ Software\Test не найден'); REG.CloseKey; REG.Destroy; end;
Если нужно изменить значение ключа "по умолчанию", тогда вывод делается так:
REG.WriteString('','Мой компьютер');
Переключение языка из программы
var russian,latin:HKL; begin russian:=LoadKeyboardLayout('00000419',0); latin:=LoadKeyboardLayout('00000409',0); ActivateKeyboardLayout(latin,0); end;
Соответственно, для включения русского языка:
ActivateKeyboardLayout(russian,0); |
|
| |