ПРОГРАММИРОВАНИЕ
НА ЯЗЫКЕ DELPHI

Программирование на языке Delphi,
коды программ, задачи и решения,
хитрости и советы.

 



 




Выберите раздел:

Программирование в Delphi
Программирование на языке Паскаль (Pascal)

В разделе "Программирование в Delphi" изложены некоторые советы и методы составления программ на языке "Дельфи".

Советы будут полезны начинающим программистам, так как содержат примеры, редко описываемые в литературе, но часто встречающиеся в практике.

Хитрости пригодятся программистам, решающим олимпиадные задачи, т.к. помогают сократить код программ, упростить и ускорить их решение.


  • Советы и хитрости программирования в Delphi


Полный набор хитростей и советов - купить посредством SMS


  • Порядок обработки событий

При загрузке формы Дельфи, происходят и обрабатываются следующие события и в следующем порядке:

  1. On Create
  2. On Show
  3. On Paint
  4. On Activate
  5. On Resize
  6. 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

Для создания нового курсора можно выполнить следующий порядок действий:

  1. Открыть в программе "Image Editor" файл ресурсов своего проекта (*.res);
             (Программа "Image Editor" поставляется вместе с Delphi).
  2. Создать в ней курсор и сохранить файл;
  3. В коде программы следует написать:

    const crMyCursor=7; Procedure TForm1.FormCreate(SenderTObject); begin Screen.Cursors[crMyCursor]:= LoadCursor(HInstance,'NewCursor'); Cursor:=crMyCursor; end;
    {'NewCursor'- это имя вашего курсора в (*.res)}

  4. Заново откомпилировать проект (можно предварительно удалить из папки проекта все файлы
             типа(*.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);

К оглавлению  


Полный набор хитростей и советов - купить посредством SMS    Цена: 300 тенге = 2 у.е.

 


В начало страницы  




Copyright © 2008

Rambler's Top100         Resurs.kz: сайты Казахстана и раскрутка сайта