Delphi - объектно-ориентированный язык программирования, разработанный компанией Borland в 1995 году. Он основан на языке программирования Pascal, но имеет более расширенные возможности и добавлены новые функции.
Delphi является интегрированной средой разработки (IDE), которая позволяет разрабатывать программное обеспечение для различных платформ, включая Windows, macOS, Android и iOS. Delphi достигает многоплатформенности с помощью...
unitMainFrm; interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type
TMainForm = class
(TForm) cbPrinters: TComboBox; lblPrinter: TLabel; procedure
FormCreate(Sender: TObject); procedure
cbPrintersChange(Sender: TObject); private
{ Private declarations } public
{ Public declarations } end
; var
MainForm: TMainForm; implementation
uses
IniFiles, Printers; {$R *.DFM} procedure
TMainForm.FormCreate(Sender: TObject); begin
{ Copy the printer names to the combobox and set the combobox to show the currently selected default printer } cbPrinters.Items.Assign(Printer.Printers); cbPrinters.Text := Printer.Printers[Printer.PrinterIndex]; // Update the label to reflect the default printer lblPrinter.Caption := Printer.Printers[Printer.PrinterIndex]; end
; procedure
TMainForm.cbPrintersChange(Sender: TObject); var
IniFile: TIniFile; TempStr1, TempStr2: string
; S: array
[0..64] of
char; begin
with
Printer do
begin
// Set the new printer based on the ComboBox's selected printer PrinterIndex := cbPrinters.ItemIndex; // Store the printer name into a temporary string TempStr1 := Printers[PrinterIndex]; // Delete the unnecessary portion of the printer name System.Delete(TempStr1, Pos(' on ', TempStr1), Length(TempStr1)); // Create a TIniFile class IniFile := TIniFile.Create('WIN.INI'); try
// Retrieve the device name of the selected printer TempStr2 := IniFile.ReadString('Devices', TempStr1, ''); // Change the default printer to that chosen by the user IniFile.WriteString('windows', 'device', TempStr1 + ',' + TempStr2); // Tell all windows that the default printer changed. StrCopy(S, 'windows'); SendMessage(HWND_BROADCAST, WM_WININICHANGE, 0, LongInt(@S)); finally
IniFile.Free; end
; end
; // Update the label to reflect the new printer selection lblPrinter.Caption := Printer.Printers[Printer.PrinterIndex]; end
; end
.