nyuuzyou/wikis huggingface dataset:
Как отловить ошибку?

=== Как отловить ошибку? ===
Try
 {здесь вы пишите код в котором может произойти ошибка}
Except
 {здесь вы пишите код который выполнится если ошибка произойдёт, если ошибки не будет то этот код не выполняется}
End
Вот как будет выполняться код:
[Line 1]
Try
 [Line 2]
 [Line 3]
 [Line 4]
Except
 [Line 5]
End
[Line 6]
Допустим что [Line x] это строка какого-то Вашего кода. Предположим что при выполнении [Line 3] произошла ошибка, тогда программа будет выполнять строки:
1-2-3(ошибка!)-5-6
Если ошибки нет то будут выполняться следующие линии кода:
1-2-3-4-6
Если надо чтобы ошибка произошла, но перед этим Вы хотите выполнить некие свои действия, то организовать это можно следующим способом:
Try
 {здесь вы пишите код в котором может произойти ошибка}
Except
 {здесь вы пишите код который выполнится если ошибка произойдёт, если ошибки не будет то этот код не выполняется}
 raise;// вызвать вновь ту же ошибку
End
Author: Vit (www.delphist.com, www.drkb.ru, www.unihighlighter.com, www.nevzorov.org)
Source: http://forum.vingrad.ru
ID: 00022
Как отловить правый Enter (NumPad)?

=== Как отловить правый Enter (NumPad)? ===
Для этого можно воспользоваться функцией GetHeapStatus:
procedure TForm1.WMKeyDown(var Message: TWMKeyDown);
begin
 inherited;
 case Message.CharCode of
 VK_RETURN:
 begin // ENTER pressed
 if (Message.KeyData and $1000000 <> 0) then
 begin
 { ENTER on numeric keypad }
 end
 else
 begin
 { ENTER on the standard keyboard }
 end;
 end;
 end;
end;
Author: Full ( http://full.hotmail.ru/ )
Source: Взято из http://forum.sources.ru
ID: 01513
ID: 01535
Как отловить смену фокуса для всех контролов?

=== Как отловить смену фокуса для всех контролов? ===
procedure TForm1.ActiveControlChange(Sender: TObject);
begin
 Caption := TScreen(Sender).ActiveForm.ActiveControl.Name;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
 Screen.OnActiveControlChange := ActiveControlChange;
end;
Author: p0s0l
Source: Взято с Vingrad.ru http://forum.vingrad.ru
ID: 00358
Как отобразить hint в TLabel?

=== Как отобразить hint в TLabel? ===
На форме лежат TEdit, TCheckBox и TLabel. Я бы хотел, чтобы при наведении на TEdit или TCheckBox в TLabel отображалась "подсказка". Т.е. своего рода hint, но только отображаемый в TLabel. Как такое можно сотворить?
Такое поведение Hint в VCL предусмотрено:
procedure TForm1.DisplayHint(Sender: TObject);
begin
 Label1.caption := GetLongHint(Application.Hint);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
 Application.OnHint := DisplayHint;
end;
Теперь все хинты будут показываться на метке.
Author: Vit (www.delphist.com, www.drkb.ru, www.unihighlighter.com, www.nevzorov.org)
Source: Взято с Vingrad.ru http://forum.vingrad.ru
ID: 00586
Как отобразить выбранную строку DBGrid различными цветами?

=== Как отобразить выбранную строку DBGrid различными цветами? ===
Если Вы хотите раскрасить выбранную строку DBGrid, но не хотите использовать опцию dgRowSelect, так как хотели бы редактировать данные, то можно воспользоваться следующей технологией в событии DBGrid.OnDrawColumnCell:
type
 TCustomDBGridCracker = class(TCustomDBGrid);
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject;
 const Rect: TRect; DataCol: Integer; Column: TColumn;
 State: TGridDrawState);
begin
 with Cracker(Sender) do
 if DataLink.ActiveRecord = Row - 1 then
 Canvas.Brush.Color := clRed
 else
 Canvas.Brush.Color := clWhite;
 DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;
Source: Взято из http://forum.sources.ru
ID: 03019
Category:Базы данных
Category:DBGrid
Как отобразить модально MDIChild форму

=== Как отобразить модально MDIChild форму ===
Как выполнить код после создания MDIChild-формы но до появления ее на экране?Как отобразить MDIChild-форму модально? 
1. Убираешь свою MDIChild форму из автосоздания: (MainMenu) Project->Options->Forms. Там её перебрасываешь в: Available forms
2. Переключаешься на свою MDIChild форму и дописываешь в описание класса(пусть например твой класс формы для MDIChild называется TForm2): 
 TForm2 = class(TForm)
 ...
 procedure CreateWindowHandle(const Params: TCreateParams); override;
 private
 { Private declarations }
 public
3. Реализуешь эту процедуру: 
procedure TForm2.CreateWindowHandle(const Params: TCreateParams);
var 
 Comp: TForm2;
begin
 inherited;
 Comp := TForm2(Application.Components[Application.ComponentCount-1]);
 Comp.Visible := False;
end;
uses Unit2; // ссылка на модуль MDIChild формы
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
 vv: TForm2;
begin
 vv := TForm2.Create(Application);
 //... Здесь форма не видна
 vv.Memo1.Lines.Add('123123'); // Типо что-то заполняем на MDIChild форме
 Caption := '2';
 Sleep(2000);
 Caption := '0';
 //.. Здесь форма до сих пор не видна
 vv.Show;
end;
Source: Взято с Vingrad.ru http://forum.vingrad.ru
ID: 00505
Как отобразить не главные окна своей программы в панели задач Windows

=== Как отобразить не главные окна своей программы в панели задач Windows ===
procedure TMyForm.CreateParams(var Params: TCreateParams); { override; }
begin
 inherited CreateParams(Params); { CreateWindowEx }
 Params.ExStyle := Params.ExStyle or WS_Ex_AppWindow;
end;
Source: http://delphiworld.narod.ru/
ID: 01785
----
type
 TForm = class(TForm)
 {...}
 protected
 procedure CreateParams(var Params: TCreateParams); override;
 end;
implementation
{...}
procedure TForm2.CreateParams(var Params: TCreateParams);
begin
 inherited CreateParams(Params);
 Params.ExStyle := Params.ExStyle or WS_EX_APPWINDOW;
 Params.WndParent := GetDesktopWindow;
end;
Source: Взято с сайта: http://www.swissdelphicenter.ch
ID: 01786
----
У многооконного приложения, как Delphi, обычно только одна кнопка на TaskBar. Если же вам понадобилось, чтобы у каждого окна была своя кнопка, воспользуйтесь функцией SetWindowLong, добавив флаг WS_EX_APPWINDOW. 
В модуле первого окна: 
uses Unit2, Unit3;
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
begin
 ShowWindow(Application.Handle, SW_HIDE);
 Form1.Hide;
 Form2.Show;
 Form3.Show;
end;
В модуле второго окна: 
uses Unit3;
{$R *.DFM}
procedure TForm2.FormCreate(Sender: TObject);
begin
 SetWindowLong(Handle, GWL_EXSTYLE,
 GetWindowLong(Handle, GWL_EXSTYLE) or WS_EX_APPWINDOW);
end;
procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
 if Form3.Visible = false then
 Application.Terminate;
end;
В модуле третьего окна: 
uses Unit2;
{$R *.DFM}
procedure TForm3.FormCreate(Sender: TObject);
begin
 SetWindowLong(Handle, GWL_EXSTYLE,
 GetWindowLong(Handle, GWL_EXSTYLE) or WS_EX_APPWINDOW);
end;
procedure TForm3.FormClose(Sender: TObject; var Action: TCloseAction);
begin
 if Form2.Visible = false then
 Application.Terminate;
end;
Source: http://delphiworld.narod.ru/
ID: 01787
----
type
 TForm2 = class(TForm)
 private
 { Private declarations }
 procedure CreateParams(var Params: TCreateParams); override;
 end;
implementation
procedure TForm2.CreateParams(var Params: TCreateParams);
begin
 inherited CreateParams(Params);
 with Params do
 ExStyle := ExStyle or WS_EX_APPWINDOW;
end; 
Source: http://delphiworld.narod.ru/
ID: 01788
Как отправить Email?

Cущствуют следующие возможности:
1) Вызвать почтовую программу по умолчанию с заполненными полями - не позволяет автоматизировать работу, не позволяет послать письмо с вложениями, но исключительно удобно в окнах About.
2) Использовать MAPI - несколько устаревший способ, но вполне работоспособный
* Работа через MAPI
3) Использовать SMTP - там все просто, однако посылка не напрямую, требуется наличие SMTP сервера, например сервера провайдера.
* Пример работы с SMTP
4) Использовать COM интерфейс Outlook - там тоже все просто, но нужно наличие установленного и полностью подключенного Outlook
* Использование COM объекта Outlook
5) Писать свой SMTP Relay сервер и отсылать email напрямую, минуя любые сервера. Для Дельфи6/Дельфи7/Kylix3 можно использовать компоненты Indy (входят в поставку Дельфи) - пример внизу, а так же можно использовать для любых версий Delphi/Kylix компоненты из пакета ICS - Internet component suite.
* Использование SMTP Relay Server
Вот ещё вариант:
* Send e-mails via WinSock API?
Author: Vit
Source: Vingrad.ru http://forum.vingrad.ru
Category:Связь
Category:Электронная почта
Как отправить бинарные данные из CGI приложения?

Не для кого не секрет, как просто можно получать данные различного типа из CGI приложения. Однако, иногда необходимо, чтобы данные сохранялись в виде файла с определённым именем, типа "Test.ZIP". Для этого необходимо добавить в заголовок HTTP пункт "Content-Disposition".
В Delphi для этого используется свойство CustomHeaders. В это TStrings свойство можно добавлять пункты в виде "name=value" - так как HTTP синтаксис name:value здесь не используется.
Пример:
procedure TWebModule1.WebModule1CHECKSTATUSAction(Sender: TObject;
 Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
var
 s: TFileStream;
begin
 s := nil;
 if Request.Query = 'download' then
 try
 Response.Title := 'Download Test.ZIP';
 Response.CustomHeaders.Add('Content-Disposition=filename=Test.zip');
 Response.ContentType := 'application/zip';
 s := TFileStream.Create(fmOpenRead + fmShareDenyNone, 'Test.zip');
 Response.ContentStream := s;
 Response.SendResponse;
 finally
 s.Free;
 end;
end;
Source: http://forum.sources.ru
ID: 03422
Category:Связь
Category:Web
Как отправить сообщение сразу всем элементам управления формы?

=== Как отправить сообщение сразу всем элементам управления формы? ===
Можно использовать Screen.Forms[i].BroadCast(msg); где [i] - индекс той формы, которой Вы хотите переслать сообщение. BroadCast работает со всеми компонентами, потомками TWinControls и отправляет сообщение всем дочерним компонентам из массива Controls. Если один из дочерних компонентов обрабатывает это сообщение и устанавливает Msg.Result в ненулевое значение - дальнейшая рассылка сообщения останавливается.
ID: 02314
Как отследить выход мыши за пределы формы?

=== Как отследить выход мыши за пределы формы? ===
Можно через события OnMouseEnter/OnMouseLeave:
 TYourObject = class(TAnyControl)
 private
 FMouseInPos: Boolean;
 procedure CMMouseEnter(var AMsg: TMessage); message CM_MOUSEENTER;
 procedure CMMouseLeave(var AMsg: TMessage); message CM_MOUSELEAVE;
 end;
implementation
procedure TYourObject.CMMouseEnter(var AMsg: TMessage);
begin
 FMouseInPos := True;
 Refresh;
end;
procedure TYourObject.CMMouseLeave(var AMsg: TMessage);
begin
 FMouseInPos := False;
 Refresh;
end;
Затем считывать параметр FMouseInPos.
Source: Взято с сайта http://blackman.wp-club.net/
ID: 01574
Как отследить завершение работы в приложении?

Нужно отследить момент завершения Windows, и, если пользователь собирается выключить компьютер - программа должна вывести диалог запроса. Если пользователь нажимает кнопку YES - разрешаем выключение, если NO - отменяем. С помощью VCL компонентов это делается элементарно:
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
 // Спрашиваем пользователя, если инициировано завершение работы.
 if MessageDlg('Вы уверены?', mtConfirmation, mbYesNoCancel, 0) = mrYes then
 CanClose := True // Разрешаем завершение работы.
 else
 CanClose := False; // Не разрешаем завершение работы.
end;
Author: Mazenrat
Source: Vingrad.ru http://forum.vingrad.ru
ID: 04565
----
Пример отслеживания завершения приложения написанного на чистом API:
program kvd;
uses
 Windows,
 Messages;
var
 hWnd: THandle;
 WndClass: TWndClass;
 Msg: TMsg;
function WindowProc(hWnd: THandle; uMsg, wParam, lParam: Integer): Integer; stdcall;
begin
 Result := 0;
 case uMsg of
 WM_QUERYENDSESSION:
 Result := Integer(False);
 WM_DESTROY:
 PostQuitMessage(0);
 else
 Result := DefWindowProc(hWnd, uMsg, wParam, lParam);
 end;
end;
begin
 FillChar(WndClass, SizeOf(WndClass), 0);
 with WndClass do
 begin
 hInstance := SysInit.hInstance;
 lpszClassName := 'dd';
 lpfnWndProc := @WindowProc;
 end;
 RegisterClass(WndClass);
 hWnd := CreateWindow('dd', , 0, 0, 0, 0, 0, 0, 0, hInstance, NIL);
 if hWnd = 0 then
 Exit;
 ShowWindow(hWnd, SW_HIDE);
 while GetMessage(Msg, 0, 0, 0) do
 begin
 TranslateMessage(Msg);
 DispatchMessage(Msg);
 end;
end.
Author: Fantasist
Source: Vingrad.ru http://forum.vingrad.ru
ID: 04566
Category:Разработка приложений
Как отследить изменения дисплея?

=== Как отследить изменения дисплея? ===
Для этого необходимо создать обработчик для перехвата сообщения WM_DISPLAYCHANGE. Применяется это в тех случаях, если Ваше приложение зависит от разрешения экрана (например, приложение работает с графикой).
Далее следует пример обработчика сообщения:
type 
 TForm1 = class(TForm) 
 Button1: TButton; 
 private 
 procedure WMDisplayChange(var Message: TMessage); message WM_DISPLAYCHANGE; 
 public 
 { Public declarations } 
 end; 
var
 Form1: TForm1; 
implementation 
{$R *.DFM} 
procedure TForm1.WMDisplayChange(var Message: TMessage); 
begin 
 { Do Something here } 
 inherited; 
end;
Source: Взято из http://forum.sources.ru
ID: 01452
----
Эта программа отслеживает изменение характеристик экрана. 
 private
 procedure WMDISPLAYCHANGE(var Msg: TWMDISPLAYCHANGE); message WM_DISPLAYCHANGE;
procedure TForm1.FormCreate(Sender: TObject);
var
 bp: integer;
begin
 bp := GetDeviceCaps(GetDC(0), BITSPIXEL);
 Form1.Caption := 'Бит на точку - ' + IntToStr(bp) +
 ' (' + FloatToStr(IntPower(2, bp)) +
 ' цветов). Разрешение ';
 Form1.Caption := Form1.Caption + 
 IntToStr(GetDeviceCaps(GetDC(0), HORZRES)) + 'X';
 Form1.Caption := Form1.Caption + 
 IntToStr(GetDeviceCaps(GetDC(0), VERTRES)) + ' ';
end;
procedure TForm1.WMDISPLAYCHANGE(var Msg: TWMDISPLAYCHANGE);
var
 bp: integer;
begin
 bp := Msg.BitsPerPixel;
 Form1.Caption := 'Бит на точку - ' + IntToStr(bp) + 
 ' (' + FloatToStr(IntPower(2, bp)) + 
 ' цветов). Разрешение ';
 Form1.Caption := Form1.Caption + IntToStr(Msg.Width) + 'X';
 Form1.Caption := Form1.Caption + IntToStr(Msg.Height) + ' ';
end;
 e-mail: delphi4all@narod.ru
 e-mail: aleksey@sch103.krasnoyarsk.su
Author: Алексей Денисов
ID: 01453
----
type
 private 
 procedure WMDisplayChange(var msg: TMessage); message WM_DISPLAYCHANGE; 
 public 
 end; 
end; 
var 
 Form1: TForm1; 
implementation 
{$R *.DFM} 
procedure TForm1.WMDisplayChange(var msg: TMessage); 
begin 
 ShowMessage('Display settings changed!'); 
 inherited; 
end;
Source: http://delphiworld.narod.ru/
ID: 01454
Как отслеживать изменение файла?

FindFirstChangeNotification
 FindNextChangeNotification
 FindCloseChangeNotification
вместе с
 WaitForSingleObject
Author: Baa
Source: Взято с Vingrad.ru http://forum.vingrad.ru
ID: 03185
== См.также ==
* Мониторинг изменений на диске
Category:Файловая система
Как отчитывать промежутки времени с точностью, большей чем 60 мсек?

=== Как отчитывать промежутки времени с точностью, большей чем 60 мсек? ===
Для начала описываешь процедуру, которая будет вызываться по сообщению от таймера :
procedure FNTimeCallBack(uTimerID, uMessage: UINT; dwUser, dw1, dw2: DWORD); stdcall;
begin
 // Тело процедуры.
end; 
а дальше в программе (например по нажатию кнопки) создаешь Таймер и вешаешь на него созданную процедуру
uTimerID := timeSetEvent(10, 500, @FNTimeCallBack, 100, TIME_PERIODIC); 
Подробности смотри в Help. Hу и в конце убиваешь таймер:
timeKillEvent(uTimerID); 
И все. Точность этого способа до 1 мсек. минимальный интервал времени можно задавать 1 мсек.
Author: tlv@f3334.dd.vaz.tlt.ru StayAtHome
Source: Взято с Vingrad.ru http://forum.vingrad.ru
ID: 00189
Как очистить canvas

procedure TForm1.Button1Click(Sender: TObject);
begin
 PatBlt(Form1.Canvas.Handle, 0, 0, Form1.ClientWidth, Form1.ClientHeight, WHITENESS);
end;
Source: http://forum.sources.ru
ID: 03717
----
Canvas.Brush.Color := ClWhite;
Canvas.FillRect(Canvas.ClipRect);
ID: 03718
----
Есть два хороших способа очистить Canvas. Их скорости очень близки. В первом способе используются возможности Delphi, во втором - WinAPI. Первый способ удобнее тем, что позволяет закрашивать Canvas любым цветом.
procedure TForm1.Button1Click(Sender: TObject);
begin
 Form1.Canvas.Brush.Color := clRed;
 Form1.Canvas.FillRect(Form1.ClientRect);
 PatBlt(Form1.Canvas.Handle, 0, 0,
 Form1.ClientWidth, Form1.ClientHeight, WHITENESS);
end;
Author: Даниил Карапетян
Author: Алексей Денисов
ID: 03720
----
InValidateRect(Canvas.handle,NIL,True);
Если вы используете холст формы, то попробуйте следующее:
InvalidateRect(Form1.Handle, nil, True);
(или взамен передать дескриптор компонента)
Это очистит хост:
Canvas.FillRect(Canvas.ClipRect);
Source: http://delphiworld.narod.ru/
ID: 03721
Category:Графика
Как очистить базу данных, оставив только структуру?

=== Как очистить базу данных, оставив только структуру? ===
ЗАМЕЧАНИЕ: Этот пример не работает в режиме редактирования, так как таблица должна быть открыта в эксклюзивном режиме.
procedure TForm1.Button2Click(Sender: TObject);
begin
 { Opens the table in exclusive mode }
 try
 with Table1 do
 begin
 Active := False;
 Exclusive := True;
 Active := True;
 try
 EmptyTable;
 except
 ShowMessage('Cannot empty database');
 end;
 end
 except
 ShowMessage('cannot open table in exclusive mode');
 end
end;
Примечание Vit: если требуется очистить таблицу не прибегая к эксклюзивному доступу или используя другие способы доступа помимо BDE то рекомендуется выполнить запрос:
 DELETE FROM MyTable
Которая полностью очистит таблицу. Для MS SQL Server существует и другой способ - выполнение запроса:
 TRUNCATE TABLE MyTable
Различие между DELETE и TRUNCATE заключается в том, что для операции DELETE создаётся запись в Transaction log, что обеспечивает более высокую надёжность, но при больших таблицах выполнение DELETE может быть весьма долгим. Напротив, TRUNCATE в Transaction log не попадает и таблица любых размеров необратимо очищается практически мгновенно вне зависимости от её размера. DELETE - стандартная операция SQL и поддерживается всеми базами данных, напротив, TRUNCATE - операция не стандартная, поэтому поддерживается лишь отдельными базами данных.
Source: Взято из http://forum.sources.ru
ID: 02545
Как очистить буфер клавиатуры?

=== Как очистить буфер клавиатуры? ===
procedure EmptyKeyQueue;
var
 msg: TMsg;
begin
 while PeekMessage(msg, 0, WM_KEYFIRST, WM_KEYLAST, PM_REMOVE or PM_NOYIELD) do
 ;
end;
begin
 EmptyKeyQueue;
end.
Source: Взято с Delphi Knowledge Base: http://www.baltsoft.com/
ID: 01522
Как очистить все окошки редактирования на форме?

=== Как очистить все окошки редактирования на форме? ===
procedure ClearEdits;
var
 i: Integer;
begin
 for i := 0 to ComponentCount-1 do
 if (Components[i] is TEdit) then
 (Components[i] as TEdit).Text := ;
end;
Source: Взято из http://forum.sources.ru
ID: 00535
Как очистить кэш в IE?

В примере описывается как программно в Internet Explorer нажать кнопку "Clear cache".
Вам нужно будет использовать WinINet в Вашей TfrmMain:
Uses WinINet;
и добавить к TButton следующий обработчик btnEmptyCache:
procedure TfrmMain.btnEmptyCacheClick(Sender: TObject);
var
 lpEntryInfo: PInternetCacheEntryInfo;
 hCacheDir: LongWord;
 dwEntrySize: LongWord;
 dwLastError: LongWord;
begin
 dwEntrySize := 0;
 FindFirstUrlCacheEntry(nil, TInternetCacheEntryInfo(nil^), dwEntrySize);
 GetMem(lpEntryInfo, dwEntrySize);
 hCacheDir := FindFirstUrlCacheEntry(nil, lpEntryInfo^, dwEntrySize);
 if (hCacheDir <> 0) then
 DeleteUrlCacheEntry(lpEntryInfo^.lpszSourceUrlName);
 FreeMem(lpEntryInfo);
 repeat
 dwEntrySize := 0;
 FindNextUrlCacheEntry(hCacheDir, TInternetCacheEntryInfo(nil^), dwEntrySize);
 dwLastError := GetLastError();
 if (GetLastError = ERROR_INSUFFICIENT_BUFFER) then
 begin
 GetMem(lpEntryInfo, dwEntrySize);
 if (FindNextUrlCacheEntry(hCacheDir, lpEntryInfo^, dwEntrySize)) then
 DeleteUrlCacheEntry(lpEntryInfo^.lpszSourceUrlName);
 FreeMem(lpEntryInfo);
 end;
 until (dwLastError = ERROR_NO_MORE_ITEMS);
end;
Source: Взято из http://forum.sources.ru
ID: 03506
Category:Связь
Category:WebBrowser
Как очистить очередь печати принтера?

uses ..., WinSpool;
procedure TForm1.Button1Click(Sender: TObject);
var
 PrintersInfo, TmpPrintersInfo: PPrinterInfo1;
 pcbNeeded, pcReturned, jpcbNeeded, jpcReturned: DWORD;
 I, J: Integer;
 hPrinter: THandle;
 JobInfo, TmpJobInfo: PJobInfo3;
begin
 EnumPrinters(PRINTER_ENUM_LOCAL, nil, 1, PrintersInfo, 0, pcbNeeded, pcReturned);
 if GetLastError = ERROR_INSUFFICIENT_BUFFER then
 begin
 GetMem(PrintersInfo, pcbNeeded);
 try
 if EnumPrinters(PRINTER_ENUM_LOCAL, nil, 1,
 PrintersInfo, pcbNeeded, pcbNeeded, pcReturned) then
 begin
 TmpPrintersInfo := PrintersInfo;
 for I := 0 to pcReturned - 1 do
 begin
 if OpenPrinter(TmpPrintersInfo^.pName, hPrinter, nil) then
 begin
 EnumJobs(hPrinter, 0, 100, 1, nil, 0, jpcbNeeded, jpcReturned);
 if GetLastError in [NO_ERROR, ERROR_INSUFFICIENT_BUFFER] then
 begin
 GetMem(JobInfo, jpcbNeeded);
 try
 if EnumJobs(hPrinter, 0, 100, 3, JobInfo, jpcbNeeded, jpcbNeeded, jpcReturned) then
 begin
 TmpJobInfo := JobInfo;
 for J := 0 to jpcReturned - 1 do
 begin
 if not SetJob(hPrinter, TmpJobInfo^.JobId, 0, nil, JOB_CONTROL_DELETE) then
 RaiseLastOSError;
 Inc(TmpJobInfo);
 end;
 end
 else
 RaiseLastOSError;
 finally
 FreeMem(JobInfo);
 end;
 end
 else
 RaiseLastOSError;
 end
 else
 RaiseLastOSError;
 Inc(TmpPrintersInfo);
 end;
 end
 else
 RaiseLastOSError;
 finally
 FreeMem(PrintersInfo);
 end;
 end
 else
 RaiseLastOSError;
end;
Author: Rouse_
Source: Взято из http://forum.sources.ru
ID: 03256
Category:Принтер
Как очистить пункт меню Документы кнопки Пуск?

=== Как очистить пункт меню Документы кнопки Пуск? ===
Вызовите Windows API функцию SHAddToRecentDocs() передав nil вместо имени файла в качестве параметра.
uses ShlOBJ;
procedure TForm1.Button1Click(Sender: TObject);
begin
 SHAddToRecentDocs(SHARD_PATH, nil);
end;
Source: Взято из http://forum.sources.ru
ID: 01800
Как очистить экран в консольном приложении?

=== Как очистить экран в консольном приложении? ===
Нужно просто использовать GetConsoleScreenBufferInfo() для ввода нескольких пустых строк.
program Project1;
{$APPTYPE CONSOLE}
uses
 Windows;
{$R *.RES}
var
 sbi: TConsoleScreenBufferInfo;
 i: Integer;
begin
 Writeln('A Console Applicaiton');
 Writeln('Press Enter To Clear The Screen');
 GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), sbi);
 Readln;
 GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), sbi);
 for i := 0 to sbi.dwSize.y do
 WriteLn;
 WriteLn('Press Enter To End');
 ReadLn;
end.
Author: Олег Кулабухов
Source: Взято с http://delphiworld.narod.ru
ID: 02192
----
uses
 Windows;
procedure ClearConsoleWindow;
var
 ConsoleHandle: THandle;
 ConsoleInfo: TConsoleScreenBufferInfo;
 Coord: TCoord;
 WrittenChars: DWORD;
begin
 FillChar(ConsoleInfo, SizeOf(TConsoleScreenBufferInfo), 0);
 FillChar(Coord, SizeOf(TCoord), 0);
 ConsoleHandle := GetStdHandle(STD_OUTPUT_HANDLE);
 GetConsoleScreenBufferInfo(ConsoleHandle, ConsoleInfo);
 FillConsoleOutputCharacter(ConsoleHandle, ' ', ConsoleInfo.dwSize.X * ConsoleInfo.dwSize.Y, Coord, WrittenChars);
 SetConsoleCursorPosition(ConsoleHandle, ConsoleInfo.dwCursorPosition);
end;
Author: Krid
Source: Взято из http://forum.sources.ru
ID: 02193
Как пpогpаммно вывести окно свойств экpана

=== Как пpогpаммно вывести окно свойств экpана ===
ShellExecute(Application.Handle, 'open', 'desk.cpl', nil, nil, sw_ShowNormal); 
Source: http://delphiworld.narod.ru/
ID: 01840
----
Для этого воспользуемся 'Rundll32.exe' и запустим её в 'shellexecute'. Не забудьте добавить 'shellapi' в Ваш список uses. 
// Эта функция совместима со всеми версиями Windows
function GetSystemDir: TFileName;
var
 SysDir: array [0..MAX_PATH-1] of char;
begin
 SetString(Result, SysDir, GetSystemDirectory(SysDir, MAX_PATH));
 if Result = then
 raise Exception.Create(SysErrorMessage(GetLastError));
end;
procedure TForm1.Button1Click(Sender: TObject);
var
 x: Tfilename;
begin
 x := getsystemdir;
 ShellExecute(Form11.Handle, 'open', Pchar('rundll32.exe'),
 'shell32.dll,Control_RunDLL Desk.cpl,@0,3', PChar(X), SW_normal);
end;
Source: http://delphiworld.narod.ru/
ID: 01841