nyuuzyou/wikis huggingface dataset:
Как запустить любой апплет панели управления?

=== Как запустить любой апплет панели управления? ===
Апплеты в панели управления можно запускать при помощи функции WinExec, запуская control.exe и передав ей в качестве параметра имя апплета. Файлы апплетов (.cpl) обычно находятся в системной директории Windows.
Некоторые из апплетов могут располагаться за пределами системной директории, поэтому их придётся запускать просто по имени.
procedure TForm1.Button1Click(Sender: TObject);
begin
 WinExec('C:\WINDOWS\CONTROL.EXE TIMEDATE.CPL', sw_ShowNormal);
 WinExec('C:\WINDOWS\CONTROL.EXE MOUSE', sw_ShowNormal);
 WinExec('C:\WINDOWS\CONTROL.EXE PRINTERS', sw_ShowNormal);
end;
Source: Взято из http://forum.sources.ru
ID: 01870
Как запустить текущий ScreenSaver

=== Как запустить текущий ScreenSaver ===
 SendMessage(Application.Handle, WM_SYSCOMMAND, SC_SCREENSAVE, 0);
Source: Взято с http://delphiworld.narod.ru
ID: 02378
----
Сначала мы проверяем, установлен ли Screen Saver, если нет - возвращаемся с отрицательным ответом, в противном случае - запускаем его и возвращаем true.
function RunScreenSaver: bool;
var
 b: Boolean;
begin
 Result := False;
 if not SystemParametersInfo(SPI_GETSCREENSAVEACTIVE, 0, @b, 0) then
 exit;
 if not b then
 exit;
 PostMessage(GetDesktopWindow, WM_SYSCOMMAND, SC_SCREENSAVE, 0);
 Result := True;
end;
Source: http://delphiworld.narod.ru/
ID: 02379
Как зарегистрировать базу данных (BDE)?

=== Как зарегистрировать базу данных (BDE)? ===
Session.AddAlias(AliasName, AliasDriver, Params);
Session.SaveConfigFile;
Author: Автор: Vit (www.delphist.com, www.drkb.ru, www.unihighlighter.com, www.nevzorov.org)
Source: Взято с Vingrad.ru http://forum.vingrad.ru
ID: 02541
----
uses
 DBIProcs, DBITypes;
procedure AddBDEAlias(sAliasName, sAliasPath, sDBDriver: string);
var
 h: hDBISes;
begin
 DBIInit(nil);
 DBIStartSession('dummy', h, );
 DBIAddAlias(nil, PChar(sAliasName), PChar(sDBDriver), PChar('PATH:' + sAliasPath), True);
 DBICloseSession(h);
 DBIExit;
end;
{ Sample call to create an alias called WORK_DATA that }
{ points to the C:\WORK\DATA directory and uses the }
{ DBASE driver as the default database driver: }
AddBDEAlias('WORK_DATA', 'C:\WORK\DATA', 'DBASE');
Source: Взято с Delphi Knowledge Base: http://www.baltsoft.com/
ID: 02542
Как зарегистрировать в компонент ActiveX?

запустить "Regsvr32.exe имя_файла" из каталога c:\windows\system(32)
Author: Vit
Source: http://forum.vingrad.ru
ID: 04345
----
1. Регистрация ActiveX:
function RegActiveX(FileName: string): HRESULT;
var
 hMod: Integer;
 RegProc: function: HRESULT; // HRESULT = Longint
begin
 hMod := LoadLibrary(FileName);
 if hMod = 0 then
 raise Exception.Create('Unable to load library"' + FileName + '". GetLastError = ' + IntToStr(GetLastError));
 RegProc := GetProcAddress(hMod, 'DllRegisterServer');
 if RegProc = nil then
 raise Exception.Create('Unable to load "DllRegisterServer" function from "' + FileName + '". GetLastError = ' + IntToStr(GetLastError));
 Result := RegProc;
end;
2. Регистрация Type Library:
procedure RegisterTypeLibrary(FileName: string);
var
 Name: WideString;
 HelpPath: WideString;
 TypeLib: ITypeLib;
begin
 if LoadTypeLib(PWideChar(WideString(FileName)), TypeLib) = S_OK then
 begin
 Name := FileName;
 HelpPath := ExtractFilePath(ModuleName);
 RegisterTypeLib(TypeLib, PWideChar(Name), PWideChar(HelpPath));
 end;
end;
Здесь используется интерфейс ITypeLib и API функция RegisterTypeLib. И то и другое объявлено в модуле ActiveX, если я не ошибаюсь.
Hint: если вы регистрируете библиотеку типов изнутри модуля, то его имя можно получить с помощью следующей функции:
function GetModuleFileName: string;
var
 Buffer: array[0..261] of Char;
begin
 SetString(Result, Buffer, Windows.GetModuleFileName(HInstance, Buffer, SizeOf(Buffer)));
end;
Author: Fantasist
Source: Взято с Vingrad.ru http://forum.vingrad.ru
ID: 04347
Category:COM
Category:ActiveX
Как зарегистрировать свой пункт в меню для моего типа файлов?

=== Как зарегистрировать свой пункт в меню для моего типа файлов? ===
uses 
 Registry; 
procedure AddFileMenue(FilePrefix, Menue, Command: string); 
var 
 reg: TRegistry; 
 typ: string; 
begin 
 reg := TRegistry.Create; 
 with reg do 
 begin 
 RootKey := HKEY_CLASSES_ROOT; 
 OpenKey('.' + FilePrefix, True); 
 typ := ReadString(); 
 if typ = then 
 begin 
 typ := Fileprefix + 'file'; 
 WriteString(, typ); 
 end; 
 CloseKey; 
 OpenKey(typ + '\shell\' + Menue + '\command', True); 
 WriteString(, command + ' "%1"'); 
 CloseKey; 
 Free; 
 end; 
end; 
procedure DeleteFileMenue(Fileprefix, Menue: string); 
var 
 reg: TRegistry; 
 typ: string; 
begin 
 reg := TRegistry.Create; 
 with reg do 
 begin 
 RootKey := HKEY_CLASSES_ROOT; 
 OpenKey('.' + Fileprefix, True); 
 typ := ReadString(); 
 CloseKey; 
 OpenKey(typ + '\shell', True); 
 DeleteKey(Menue); 
 CloseKey; 
 Free; 
 end; 
end; 
{ Example} 
procedure TForm1.Button1Click(Sender: TObject); 
begin 
 AddFileMenue('rtf', 'Edit with Notepad', 'C:\Windows\system\notepad.exe'); 
 { If you now click with the right mousebutton on a *.rtf-file then 
 you can see a Menuepoint: "Edit with Notepad". 
 When Click on that point Notepad opens the file. } 
end; 
procedure TForm1.Button2Click(Sender: TObject); 
begin 
 { Undo your changes in the Registry: } 
 DeleteFileMenue('rtf', 'Edit with Notepad'); 
end; 
Source: Взято с сайта http://www.swissdelphicenter.ch/en/tipsindex.php
ID: 01746
Как зарегистрировать своё расширение?

=== Как зарегистрировать своё расширение? ===
uses Registry;
procedure RegisterFileType(FileType, FileTypeName, Description, ExecCommand: string);
begin
 if (FileType = ) or (FileTypeName = ) or (ExecCommand = ) then exit;
 if FileType[1] <> '.' then
 FileType := '.' + FileType;
 if Description = then
 Description := FileTypeName;
 with TRegIniFile.Create do
 try
 RootKey := HKEY_CLASSES_ROOT;
 WriteString(FileType, , FileTypeName);
 WriteString(FileTypeName, , Description);
 WriteString(FileTypeName + '\shell\open\command', , ExecCommand + ' "%1"');
 finally
 Free;
 end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
 RegisterFileType('txt', 'TxtFile', 'Plain text', 'notepad.exe');
end;
Author: Vit (www.delphist.com, www.drkb.ru, www.unihighlighter.com, www.nevzorov.org)
Source: Взято с Vingrad.ru http://forum.vingrad.ru
ID: 01737
Как засечь время

=== Как засечь время ===
Засекание обычно нужно в двух случаях: самому программисту - узнать, как программа работает быстрее, или для информирования пользователя, сколько программа уже трудится. 
Для засекания времени удобнее всего использовать функцию GetTickCount, но нельзя забывать о ее погрешности при измерении очень коротких промежутков времени, и о том, что программы в Windows работают с непостоянной скоростью. Поэтому не стоит засекать быстрые процессы, и не стоит делать выводы о каком-то алгоритме после одного тестирования. И еще. Если вы тестируете алгоритм, то поставьте его в цикл, выполнив его, например, тысячу раз, а потом получившееся время делите на тысячу. Так точнее. Эта программа засекает, сколько времени меняется цвет точек окна в этой программе.
procedure TForm1.Button1Click(Sender: TObject);
var
 i, t: integer;
begin
 t := GetTickCount;
 randomize;
 for i := 0 to 100000 do
 Form1.Canvas.Pixels[i mod Form1.ClientWidth, i div Form1.ClientWidth] := RGB(random(255), random(255), random(255));
 Form1.Caption := IntToStr(GetTickCount - t);
end;
 e-mail: delphi4all@narod.ru
 e-mail: aleksey@sch103.krasnoyarsk.su
Author: Алексей Денисов
ID: 00198
Как заставить BDE сохранять в БД поле времени с сотыми долями секунды

=== Как заставить BDE сохранять в БД поле времени с сотыми долями секунды ===
Если руками, то в BDE Administrator (BDE Configuration Utility).
Если при инсталляции твоей программы, то -
В пункте Make Registry Changes InstallShield'а создай ключ
 HKEY_LOCAL_MACHINE\SOFTWARE\Borland\Database Engine\Settings\SYSTEM\FORMATS\TIME\MILSECONDS=TRUE
Source: Взято с http://delphiworld.narod.ru
ID: 02639
Как заставить GroupBox прорисовать на форме свой Caption неактивным цветом?

=== Как заставить GroupBox прорисовать на форме свой Caption неактивным цветом? ===
Как заставить GroupBox1 прорисовать на форме свой Caption неактивным цветом? GroupBox1.Enabled := FALSE не помогает. Хотя если то же самое проделать с Label1 или Edit1, то все получается.
GroupBox1.Font.Color := clInactiveCaption;
Author: Гавриш Дмитрий 
Source: Взято с http://delphiworld.narod.ru
ID: 01317
Как заставить Interbase принять COLLATE PXW CYRL по умолчанию

=== Как заставить Interbase принять COLLATE PXW_CYRL по умолчанию ===
(Это очень полезно при прямой работе с IB из различного CASE-инструментария, типа PowerDesigner или ErWIN)
Чтобы не писать каждый раз COLLATE, я сделал следующее:
Создал сохранённую процедуру
create procedure fix_character_sets
as
begin
update
rdb$character_sets
set
rdb$default_collate_name = 'PXW_CYRL'
where
rdb$character_set_name = 'WIN1251'
and
rdb$default_collate_name = 'WIN1251'
;
end
Запустил ее один раз.
Создаю таблицы без указания COLLATE.
После восстановления из архива, запускаю еще раз.
Author: Nomadic
Source: Взято с http://delphiworld.narod.ru
ID: 02880
Category:Базы данных
Category:Interbase
Как заставить ORACLE анализировать все таблицы?

=== Как заставить ORACLE анализировать все таблицы? ===
Конечно, можно использовать dbms_sql, dbms_job... А можно и так:
#!/bin/sh
#
# analyze all tables
#
sqlfile=/tmp/analyze.sql
logfile=/tmp/analyze.log
echo @connect dbo/passwd@ > $sqlfile
$oracle_home/bin/svrmgrl <> $sqlfile
connect dbo/passwd
select 'table', table_name from all_tables where owner = 'dbo';
eof
echo exit >> $sqlfile
cat $sqlfile > $logfile
cat $sqlfile | $oracle_home/bin/svrmgrl >> $logfile
cat $logfile | /usr/bin/mailx -s 'analyze tables' tlk@nbd.kis.ru
rm $sqlfile
rm $logfile
Source: http://www.codenet.ru
ID: 02724
Как заставить TEdit не пикать при нажатии недопустимых клавиш?

=== Как заставить TEdit не пикать при нажатии недопустимых клавиш? ===
Перехватите событие KeyPress и установите key = #0 для недопустимых клавиш.
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
 if ((UpCase(Key) < 'A') or (UpCase(Key) > 'Z')) then Key := #0;
end; 
Source: Взято из http://forum.sources.ru
ID: 00532
----
// Either disable the Beep in the OnKeyPress handler: 
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
 if key = #13 then // #13 = Return 
 begin
 key := #0;
 // Code... 
 end;
end;
// Or in the OnKeyDown-Handler: 
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
var
 Mgs: TMsg;
begin
 if Key = VK_RETURN then
 PeekMessage(Mgs, 0, WM_CHAR, WM_CHAR, PM_REMOVE);
end;
Source: Взято с сайта: http://www.swissdelphicenter.ch
ID: 00981
Как заставить дополнительную клавиатуру всегда работать в режиме цифр?

=== Как заставить дополнительную клавиатуру всегда работать в режиме цифр? ===
Для этого необходимо написать процедуру-обработчик для Application.OnMessage:
procedure TForm1.FormCreate(Sender: TObject);
begin
 Application.OnMessage := AppOnMessage;
end;
procedure TForm1.AppOnMessage(var Msg: TMsg; var Handled: Boolean);
var
 ccode: Word;
begin
 case Msg.Message of
 WM_KEYDOWN, WM_KEYUP:
 begin 
 if (GetKeyState( VK_NUMLOCK ) >= 0) // NumLock не включён
 and ((Msg.lparam and $1000000) = 0)
 then
 begin
 ccode := 0;
 case Msg.wparam of
 VK_HOME: ccode := VK_NUMPAD7;
 VK_UP : ccode := VK_NUMPAD8;
 VK_PRIOR: ccode := VK_NUMPAD9;
 VK_LEFT: ccode := VK_NUMPAD4;
 VK_CLEAR: ccode := VK_NUMPAD5;
 VK_RIGHT: ccode := VK_NUMPAD6;
 VK_END : ccode := VK_NUMPAD1;
 VK_DOWN : ccode := VK_NUMPAD2;
 VK_NEXT : ccode := VK_NUMPAD3;
 VK_INSERT:ccode := VK_NUMPAD0;
 VK_DELETE:ccode := VK_DECIMAL;
 end;
 if ccode <> 0 then Msg.Wparam := ccode;
 end;
 end;
 end;
end;
Source: Взято из http://forum.sources.ru
ID: 01514
ID: 01553
Как заставить запускаться из определенной папки?

Приведенный пример кода проверяет из какой папки запущена программа, если она запущена не из корневой - то переносит себя в корень и запускается оттуда.
program Project1;
uses
 Forms, classes, windows, Sysutils, ShellApi,
 Unit1 in 'Unit1.pas' {Form1};
{$R *.RES}
var
 f: TextFile;
 FileName: string;
begin
 if ParamStr(1) <> '/runasis' then
 begin
 CopyFile(PChar(ParamStr(0)), PChar('c:\' + ExtractFilename(ParamStr(0))), True);
 ShellExecute(0, 'Open', PChar(ExtractFilename(ParamStr(0))), '/runasis', 'c:\', sw_restore);
 FileName := ChangeFileExt(ParamStr(0), '.bat');
 AssignFile(f, FileName);
 Rewrite(f);
 WriteLn(f, ':1');
 WriteLn(f, Format('Erase "%s"', [ParamStr(0)]));
 WriteLn(f, Format('If exist "%s" Goto 1', [ParamStr(0)]));
 WriteLn(f, Format('Erase "%s"', [FileName]));
 CloseFile(f);
 ShellExecute(0, 'Open', PChar(FileName), nil, nil, sw_hide);
 end
 else
 begin
 Application.Initialize;
 Application.CreateForm(TForm1, Form1);
 Application.Run;
 end;
end.
Author: Vit
Source: Vingrad.ru http://forum.vingrad.ru
ID: 04568
Category:Разработка приложений
Как заставить корректно работать mouse wheel в TDBGrid?

=== Как заставить корректно работать mouse wheel в TDBGrid? ===
type
 TForm1 = class(TForm)
 public
 procedure AppMessage(var Msg: TMsg; var Handled: Boolean);
 end;
implementation
procedure TForm1.AppMessage(var Msg: TMsg; var Handled: Boolean);
var
 i: SmallInt;
begin
 { Mouse wheel behaves strangely with dgbgrids - this proc sorts this out }
 if Msg.message = WM_MOUSEWHEEL then
 begin
 Msg.message := WM_KEYDOWN;
 Msg.lParam := 0;
 i := HiWord(Msg.wParam);
 if i > 0 then
 Msg.wParam := VK_UP
 else
 Msg.wParam := VK_DOWN;
 Handled := False;
 end;
end;
// And in the project source:
Application.OnMessage := Form1.AppMessage;
Source: Взято с сайта http://www.swissdelphicenter.ch/en/tipsindex.php
ID: 03042
Category:Базы данных
Category:DBGrid
Как заставить появиться окошко подсказки когда курсор мышки находится над определённым контролом?

=== Как заставить появиться окошко подсказки когда курсор мышки находится над определённым контролом? ===
var
 hintWnd: THintWindow; 
procedure TForm1.ActivateHintNOW( x,y: Integer); 
var
 rect: TRect; 
begin 
 HintTxt := 'qq'; 
 if hintTxt <> then 
 begin 
 rect := hintWnd.CalcHintRect(Screen.Width, hinttxt, nil); 
 rect.Left := rect.Left + x; 
 rect.Right := rect.Right + x; 
 rect.Top := rect.Top + y; 
 rect.Bottom := rect.Bottom + y; 
 hintWnd.ActivateHint( rect, hinttxt); 
 end; 
end; 
Замечание: Не забудьте каждый раз создавать hintWnd:
 hintwnd := THintWindow.Create(self); 
а затем освобождать его
 
 hintwnd.ReleaseHandle; 
Source: Взято из http://forum.sources.ru
ID: 01280
ID: 01591
Как заставить приложение Delphi отвечать на сообщения Windows?

=== Как заставить приложение Delphi отвечать на сообщения Windows? ===
Используем WM_WININICHANGED в качестве примера:
Объявление метода в TForm позволит вам обрабатывать сообщение WM_WININICHANGED:
 procedure WMWinIniChange(var Message: TMessage); message WM_WININICHANGE;
Код в implementation может выглядеть так:
procedure TForm1.WMWinIniChange(var Message: TMessage);
begin
 inherited;
 { ... ваша реакция на событие ... }
end;
Вызов inherited метода очень важен. Обратите внимание также на то, что для функций, объявленных с директивой message (обработчиков событий Windows) после inherited нет имени наследуемой процедуры, потому что она может быть неизвестна или вообще отсутствовать (в этом случае вы в действительности вызываете процедуру DefaultHandler).
Source: Взято из FAQ Epsylon Technologies (095)-913-5608; (095)-913-2934; (095)-535-5349
ID: 02024
Как заставить приложение показывать различные иконки при различных разрешениях дисплея?

=== Как заставить приложение показывать различные иконки при различных разрешениях дисплея? ===
Для этого достаточно текущее разрешение экрана и в соответствии с ним изменить дескриптор иконки приложения. Естевственно, что Вам прийдётся создать в ресурсах новые иконки.
Поместите следующий код в файл проекта (.DPR) Вашего приложения:
Application.Initialize;
Application.CreateForm(TForm1, Form1);
case GetDeviceCaps(GetDC(Form1.Handle), HORZRES) of
 640: Application.Icon.Handle := LoadIcon(hInstance, 'ICON640');
 800: Application.Icon.Handle := LoadIcon(hInstance, 'ICON800');
 1024: Application.Icon.Handle := LoadIcon(hInstance, 'ICON1024');
 1280: Application.Icon.Handle := LoadIcon(hInstance, 'ICON1280');
end;
Application.Run;
Source: Взято из http://forum.sources.ru
ID: 00339
Как заставить работать COM объекты в потоке?

Если вы используете многопоточное приложение то ActiveX(например ADO компоненты) даже созданные в отдельном потоке могут не хотеть работать корректно, из-за неправильной инициализации. Надо чуть-чуть видоизменить DPR файл - в uses добавить модуль ComObj, а самой первой строкой кода в проекте должно идти:
 CoInitFlags := 0;
 Application.Initialize;
Что означает инициализацию COM в каждом потоке
Author: Vit
Source: Взято с Vingrad.ru http://forum.vingrad.ru
ID: 04320
Category:COM
Как заставить работать DB2 через протокол IPX

Как заставить работать DB2 через протокол IPX
Связь Win-клиента c DB2 в сети Netware
Hастройка доступа к DB2
== Связь с использованием протокола IPX/SPX ==
Возможны два варианта доступа:
* через сервер NETWARE;
* прямая адресация.
=== Конфигурация для доступа через сервер ===
; Замечание: Проверялся доступ через сервера NW 3.11 и 3.12. Для 4.х нужно еще разобраться.
==== DB2 Сервер ====
* должна быть установлена OS/2 Warp или OS/2 Warp Connect;
* включена поддержка NETWARE;
* в CONFIG.SYS в переменную среды DB2COMM добавить (через запятую) IPXSPX и перезагрузить систему;
* создать командный файл DBIPXSET.CMD следующего вида:
 db2 update dbm cfg using fileserver <NWSERVER> objectname dbserver
где - <NWSERVER> - имя сервера;
* выполнить командный файл DBIPXSET.CMD;
* перестартовать сервер базы данных;
* создать командный файл DBIPXREG.CMD следующего вида:
 db2 register nwbindery user <USERNAME>
где - <USERNAME> - имя пользователя, обладающего правами администратора на сервере <NWSERVER> ;
* выполнить командный файл DBIPXREG.CMD;
* ответить на запрос пароля.
==== WINDOWS - клиент ====
* установить WINDOWS 3.1 или WfWG 3.11;
* установить клиента NETWARE от версии 4.х;
* при установке включить поддержку WINDOWS;
* установить клиента DB2 для WINDOWS;
* используя программу Client Setup описать новый узел - сервер базы данных :
 Name - <любое имя>
 Protocol - IPX/SPX
 File server - <NWSERVER>
 Object name - dbserver
* описать базу данных и разрешить доступ к ней через ODBC.
=== Конфигурация для доступа через прямую адресацию ===
==== DB2 Сервер ====
* см. п 1.1.1;
* найти в директории x:\sqllib\misc программу DB2IPXAD.EXE и выполнить ее;
* записать полученный адрес;
==== WINDOWS - клиент ====
* см. п. 1.1.2. (первые три шага);
* используя программу Client Setup описать новый узел - сервер базы данных :
 Name - <любое имя>
 Protocol - IPX/SPX
 File server - *
 Object name - <адрес полученный от DB2IPXAD.EXE>
* описать базу данных и разрешить доступ к ней через ODBC.
Source: Взято с http://delphiworld.narod.ru
ID: 02977
Category:Базы данных
Category:DB2
Как заставить системное меню выпасть в указанном месте?

=== Как заставить системное меню выпасть в указанном месте? ===
{
 How to popup the windows system menu?
 Maybe you can use Keybd_event to eumlate ALT+SPACE
 Maybe you can use a TPopupmenu.
 But they always have some problem.
 The method below is a perfect solution!
 BTW: if your form has borderstyle = bsNone, Please do it like this:
 Set forms style = bsSingle; and use the code below to set form boder:
 SetWindowLong(Handle, GWL_STYLE,GetWindowLong(Handle, GWL_STYLE)
 and (not WS_CAPTION) or WS_DLGFRAME or WS_OVERLAPPED);
}
procedure TForm1.Button1Click(Sender: TObject);
const
 { Undocument message ID }
 WM_POPUPSYSTEMMENU = $313;
begin
 SendMessage(Handle, WM_POPUPSYSTEMMENU, 0,
 MakeLong(Mouse.CursorPos.X, Mouse.CursorPos.Y));
end;
ID: 01312
Как заставить форму находиться всегда позади всех окон

=== Как заставить форму находиться всегда позади всех окон ===
type
 TForm1 = class(TForm)
 procedure WndProc(var message: TMessage); override;
 private
 { Private declarations }
 public
 { Public declarations }
 end;
var
 Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.WndProc(var message: TMessage);
begin
 case message.Msg of 
 WM_WINDOWPOSCHANGING: PWindowPos(Message.LParam)^.hwndInsertAfter := HWND_BOTTOM;
 end;
 inherited;
end;
Source: Взято из http://forum.sources.ru
ID: 00445
Как заставить форму не разворачиваться из иконки

=== Как заставить форму не разворачиваться из иконки ===
procedure WMQueryOpen(var Msg: TWMQueryOpen); message WM_QUERYOPEN;
// ... и ее реализация
procedure TMainForm.WMQueryOpen(var Msg: TWMQueryOpen);
begin
 Msg.Result := 0;
end;
Source: http://delphiworld.narod.ru/
ID: 01783
Как заставить формы минимизироваться на панель задач с анимацией

=== Как заставить формы минимизироваться на панель задач с анимацией ===
Дело-то вот в чем: Главным окном программы дельфийской является не главная форма, а окно TApplication, которое имеет нулевые размеры, поэтому его не видно. Именно для него показывается иконка на панели задач. Когда пользователь нажимает кнопку минимизации на главной форме, команда минимизации передается этому окну, и сворачивается именно оно, а для остальных просто делается hide. А так как окно TApplication имеет нулевые размеры, то и анимации никакой не видно. 
А чтобы этого избежать, необходимо: 
В исходном тесте модуля проекта после вызова Application.Initialize выполнить вызов
// В исходном тесте модуля проекта после вызова Application.Initialize
SetWindowLong(Application.Handle, GWL_EXSTYLE,
GetWindowLong(Application.Handle, GWL_EXSTYLE) or WS_EX_TOOLWINDOW);
В исходном тексте модуля главной формы перекрыть следующие методы -
// В классе формы
// Интерфейс
 protected
 procedure CreateParams(var p: TCreateParams); override;
 procedure WMSysCommand(var m: TMessage); message WM_SYSCOMMAND;
// Реализация
procedure TMainForm.CreateParams(var p: TCreateParams);
begin
 inherited;
 p.WndParent := 0;
end;
procedure TMainForm.WMSysCommand(var m: TMessage);
begin
 m.Result := DefWindowProc(Handle, m.Msg, m.wParam, m.lParam);
end;
Вместо SetWindowLong в MDI-приложениях лучше использовать
 ShowWindow(Application.Handle, SW_HIDE);
Source: http://delphiworld.narod.ru/
ID: 01784
Как зафиксировать один или несколько столбцов в TDBGrid с возможностью навигации по этим столбцам?

=== Как зафиксировать один или несколько столбцов в TDBGrid с возможностью навигации по этим столбцам? ===
procedure TDbGridEx.ColEnter;
 procedure ProcessColEnter;
 begin
 if (SelectedIndex <> _Mark) then
 begin
 ColumnMoved(Columns.Count, StaticCol + 1);
 SelectedField := Fields[StaticCol];
 end;
 Exit;
 if (SelectedIndex > StaticCol) then
 begin
 if _LastSelectedIndex = StaticCol then
 begin
 if _Mark = Columns[SelectedIndex].Title.Caption then
 begin
 ColumnMoved(StaticCol + 1, Columns.Count);
 SelectedField := Fields[Columns.Count - 1];
 end
 else
 begin
 ColumnMoved(StaticCol + 1, Columns.Count);
 SelectedField := Fields[StaticCol];
 end;
 end;
 end;
 end;
begin
 if (_EntryCol > 0) or _MouseDown or (StaticCol = 0) then
 begin
 _MouseDown := FALSE;
 end
 else
 begin
 inc(_EntryCol);
 ProcessColEnter();
 dec(_EntryCol);
 end;
 if Assigned(OnColEnter) then OnColEnter(Self);
 _LastSelectedIndex := SelectedIndex;
end;
 (2:5085/33.11)
Author: Ramil Galiev
Author: StayAtHome
Source: Взято с Vingrad.ru http://forum.vingrad.ru
ID: 03032
Category:Базы данных
Category:DBGrid
Как защитить запись в DBGrid от удаления?

=== Как защитить запись в DBGrid от удаления? ===
Поместите следующий код в событие OnKeyDown в DBGrid.
procedure TForm1.DBGrid1KeyDown(Sender: TObject; var Key: Word;
 Shift: TShiftState);
begin
 if (ssCtrl in Shift) and (Key = VK_DELETE) then key := 0;
end;
Source: Взято из http://forum.sources.ru
ID: 03021
Category:Базы данных
Category:DBGrid
Как играть MIDI без медиаплеера?

uses
 MMSystem;
// Play Midi
procedure TForm1.Button1Click;
const
 FileName = 'C:\YourFile.mid';
begin
 MCISendString(PChar('play ' + FileName), nil, 0, 0);
end;
// Stop Midi
procedure TForm1.Button1Click;
const
 FileName = 'C:\YourFile.mid';
begin
 MCISendString(PChar('stop ' + FileName), nil, 0, 0);
end;
Source: http://www.swissdelphicenter.ch/en/tipsindex.php
ID: 03606
Category:Звук