nyuuzyou/wikis huggingface dataset:
Как узнать, по какой колонке был клик в TListView?

=== Как узнать, по какой колонке был клик в TListView? ===
Метод GetItemAt позволяет получить координаты ListItem, по которой был клик, но только для первой колонки TListView. Если нужно узнать по какому элементу из другой колонки кликнул пользователь, то придётся объявить новый метод в наследованном классе:
uses ComCtrls;
type
 TListViewX = class(TListView)
 public
 function GetItemAtX(X, Y: integer; var Col: integer): TListItem;
 end;
implementation
function TListViewX.GetItemAtX(X, Y: integer; var Col: integer): TListItem;
var
 i, n, RelativeX, ColStartX: Integer;
 ListItem: TlistItem;
begin
 Result := GetItemAt(X, Y);
 if Result <> nil then
 begin
 Col := 0; // Первая колонка
 end
 else if (ViewStyle = vsReport) and (TopItem <> nil) then
 begin
 // Первая, попробуем найти строку
 ListItem := GetItemAt(TopItem.Position.X, Y);
 if ListItem <> nil then
 begin
 // Теперь попробуем найти колонку
 RelativeX := X-ListItem.Position.X-BorderWidth;
 ColStartX := Columns[0].Width;
 n := Columns.Count - 1;
 for i := 1 to n do
 begin
 if RelativeX < ColStartX then break;
 if RelativeX <= ColStartX + StringWidth(ListItem.SubItems[i-1]) then
 begin
 Result := ListItem;
 Col := i;
 break;
 end;
 Inc(ColStartX, Columns[i].Width);
 end;
 end;
 end;
end;
А вот так выглядит событие MouseDown:
procedure TForm1.ListView1MouseDown(Sender: TObject;
 Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
 col: integer;
 li: TListItem;
begin
 li := TListViewX(ListView1).GetItemAtX(x, y, col);
 if li <> nil then
 ShowMessage('Column #' + IntToStr(col));
end;
Source: Взято из http://forum.sources.ru
ID: 00624
----
// Получение по координатам элемента, над которым пользователь щелкнул.
function acGetItemAt(lsv: TListView; X, Y: integer; var Col: integer): TListItem;
var
 i, RelativeX, ColStartX: Integer;
 ListItem: TlistItem;
 HTI: TLVHitTestInfo;
begin
 Result := lsv.GetItemAt(X, Y);
 if Result <> nil then begin
 Col := 0; // Первая колонка
 end
 else if (lsv.ViewStyle = vsReport) and (lsv.TopItem <> nil) then
 begin
 HTI.pt.x := X;
 HTI.pt.y := Y;
 lsv.Perform(LVM_SUBITEMHITTEST, 0, Integer(@HTI));
 Col := HTI.iSubItem;
 Result := lsv.Items[HTI.iItem];
 end;
end;
// Пример использования:
procedure TForm1.ListView1MouseDown(Sender: TObject;
 Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
 col: Integer;
 li: TListItem;
begin
 li := acGetItemAt(ListView1, x, y, col);
 if li <> nil then ShowMessage('Column #' + IntToStr(col));
end;
ID: 00625
----
procedure TFormMain.Listview1ColumnClick(Sender: TObject; Column: TListColumn);
var
 ColumnNr: Integer;
begin
 ColumnNr := Listview1.Column[Column.Index].Index;
 ShowMessage(IntToStr(ColumnNr));
end;
Source: Взято с сайта: http://www.swissdelphicenter.ch
ID: 01136
Как узнать, подключён ли компьютер к сети?

procedure TForm1.Button1Click(Sender: TObject);
begin
 if GetSystemMetrics(SM_NETWORK) and $01 = $01 then
 ShowMessage('Computer is attached to a network!')
 else
 ShowMessage('Computer is not attached to a network!');
end;
Source: Взято из http://forum.sources.ru
ID: 03284
Category:Связь
Как узнать, присутствует ли мышка?

=== Как узнать, присутствует ли мышка? ===
function MousePresent(): Boolean; 
begin 
 if GetSystemMetrics(SM_MOUSEPRESENT) <> 0 then 
 Result := True 
 else 
 Result := False; 
end; 
Source: Взято из http://forum.sources.ru
ID: 01562
Как узнать IP адрес?

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Class\NetTrans\ (для 98-винды)
Ищем параметр IPAddress
Программно можно определить следующим образом:
var
 WSAData: TWSAData;
 p: PHostEnt;
 Name: array[0..$FF] of Char;
begin
 WSAStartup($0101, WSAData);
 GetHostName(name, $FF);
 p := GetHostByName(Name);
 ShowMessage(inet_ntoa(PInAddr(p.h_addr_list^)^));
 WSACleanup;
end;
Source: http://blackman.wp-club.net/
ID: 03351
Category:Связь
Как узнать IP клиента и IP сервера для активного RAS-подключения?

uses Ras, RasError;
type
 TRASIP = record
 dwSize: DWORD;
 dwError: DWORD;
 szIpAddress: packed array[0..RAS_MaxIpAddress] of AnsiChar;
 szServerIpAddress: packed array[0..RAS_MaxIpAddress] of AnsiChar;
 end;
procedure GetDialUpIpAddress(var server, client: string);
var
 RASPppIp: TRASIP;
 lpcp: DWORD;
 ConnClientIP: array[0..RAS_MaxIpAddress] of Char;
 ConnServerIP: array[0..RAS_MaxIpAddress] of Char;
 Entries: PRasConn;
 BufSize, NumberOfEntries, Res: DWORD;
 RasConnHandle: THRasConn;
begin
 New(Entries);
 BufSize := Sizeof(Entries^);
 ZeroMemory(Entries, BufSize);
 Entries^.dwSize := Sizeof(Entries^);
 Res := RasEnumConnections(Entries, BufSize, NumberOfEntries);
 if Res = ERROR_BUFFER_TOO_SMALL then
 begin
 ReallocMem(Entries, BufSize);
 ZeroMemory(Entries, BufSize);
 Entries^.dwSize := Sizeof(Entries^);
 Res := RasEnumConnections(Entries, BufSize, NumberOfEntries);
 end;
 try
 if (Res = 0) and (NumberOfEntries > 0) then RasConnHandle := Entries.hrasconn else exit
 finally
 FreeMem(Entries);
 end;
 FillChar(RASPppIp, SizeOf(RASPppIp), 0);
 RASPppIp.dwSize := SizeOf(RASPppIp);
 lpcp := RASPppIp.dwSize;
 if RasGetProjectionInfo(RasConnHandle, RASP_PppIp, @RasPppIp, lpcp) = 0 then
 begin
 Move(RASPppIp.szServerIpAddress, ConnServerIP, SizeOf(ConnServerIP));
 Server := ConnServerIP;
 Move(RASPppIp.szIpAddress, ConnClientIP, SizeOf(ConnClientIP));
 client := ConnClientIP;
 end;
end;
Author: p0s0l
Source: http://forum.vingrad.ru
ID: 03355
Category:Связь
Как узнать адрес LPT-порта?

=== Как узнать адрес LPT-порта? ===
Эта функция работает в Win95 и Win98.
function GetPortAddress(PortNo: integer): word; assembler; stdcall; 
asm 
 push es 
 push ebx 
 mov ebx, PortNo 
 shl ebx,1 
 mov ax,40h // Dos segment adress 
 mov es,ax 
 mov ax,ES:[ebx+6] // get port adress in 16Bit way :) 
 pop ebx 
 pop es 
end;
Для NT можно заглянуть сюда: http://www.wideman-one.com/gw/tech/Delphi/iopm/index.htm
Source: Взято из http://forum.sources.ru
ID: 01341
Как узнать букву CD-ROM?

=== Как узнать букву CD-ROM? ===
var DriveType: UInt;
DriveType := GetDriveType(PChar('F:\'));
if DriveType = DRIVE_CDROM then ShowMessage('Сидюк');
Source: Взято с сайта http://blackman.wp-club.net/
ID: 01391
----
{ возвращает букву 1-го привода CD-ROM или пустую строку }
function GetFirstCDROM: string;
var
 w: dword;
 Root: string;
 i: integer;
begin
 w := GetLogicalDrives;
 Root := '#:\';
 for i := 0 to 25 do
 begin
 Root[1] := Char(Ord('A') + i);
 if (W and (1 shl i)) > 0 then
 if GetDriveType(Pchar(Root)) = DRIVE_CDROM then
 begin
 Result := Root[1];
 exit;
 end;
 end;
 Result := ;
end;
Source: http://delphiworld.narod.ru/
ID: 01392
----
function GetFirstCDROMDrive: char;
var
 drivemap, mask: DWORD;
 i: integer;
 root: string;
begin
 Result := #0;
 root := 'A:\';
 drivemap := GetLogicalDrives;
 mask := 1;
 for i := 1 to 32 do
 begin
 if (mask and drivemap) <> 0 then
 if GetDriveType(PChar(root)) = DRIVE_CDROM then
 begin
 Result := root[1];
 Break;
 end;
 mask := mask shl 1;
 Inc(root[1]);
 end;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
 ShowMessage(GetFirstCDROMDrive);
end;
Source: Взято с сайта: http://www.swissdelphicenter.ch
ID: 01393
----
procedure TForm1.Button1Click(Sender: TObject);
var
 w: dword;
 Root: string;
 i: integer;
begin
 w := GetLogicalDrives;
 Root := '#:\';
 for i := 0 to 25 do
 begin
 Root[1] := Char(Ord('A') + i);
 if (W and (1 shl i)) > 0 then
 if GetDriveType(Pchar(Root)) = DRIVE_CDROM then
 Form1.Label1.Caption := Root;
 end;
end;
Source: http://delphiworld.narod.ru/
ID: 01394
Как узнать версию ADO?

=== Как узнать версию ADO? ===
{
 With different versions of MDAC available it is sometimes
 useful to know that your application won't fail because a user
 hasn't got the latest version installed.
 The following function returns the ADO version installed,
 you need to place ComObj in the uses clause to use this function.
}
function GetADOVersion: Double;
var
 ADO: OLEVariant;
begin
 try
 ADO := CreateOLEObject('adodb.connection');
 Result := StrToFloat(ADO.Version);
 ADO := Null;
 except
 Result := 0.0;
 end;
end;
// To use this function try something like:
procedure TForm1.Button1Click(Sender: TObject);
const
 ADOVersionNeeded = 2.5;
begin
 if GetADOVersion then
 ShowMessage('Need to install MDAC version 2.7')
 else
 ShowMessage(Format('ADO Version %n, is OK', [GetADOVersion]));
end;
Source: Взято с сайта http://www.swissdelphicenter.ch/en/tipsindex.php
ID: 02656
----
function TfrmMain.GetADOVersion: Double;
var
 ADO: OLEVariant;
begin
 try
 ADO := CreateOLEObject('adodb.connection');
 Result := StrToFloat(ADO.Version);
 ADO := Null;
 except
 Result := 0.0;
 end;
end;
Source: Взято с http://delphiworld.narod.ru
ID: 02657
Как узнать версию BDE?

=== Как узнать версию BDE? ===
uses
 BDE;
{ Without the Registry: }
procedure TForm1.Button1Click(Sender: TObject);
var
 ThisVersion: SYSVersion;
begin
 DbiGetSysVersion(ThisVersion);
 ShowMessage('BORLAND DATABASE ENGINE VERSION = ' + IntToStr(ThisVersion.iVersion));
end;
{ With the Registry: }
function GetBDEVersion: string;
var
 h: hwnd;
 ptr: Pointer;
 proc: TSYSVerProc;
 ver: SYSVersion;
 idapi: string;
 reg: TRegistry;
begin
 try
 reg.RootKey := HKEY_CLASSES_ROOT;
 reg.OpenKey('CLSID\{FB99D710-18B9-11D0-A4CF-00A024C91936}\InProcServer32', False);
 idapi := reg.ReadString();
 reg.CloseKey;
 finally
 reg.Free;
 end;
 Result := '<BDE Bulunamadi>';
 h := LoadLibrary(PChar(idapi));
 if h <> 0 then
 try
 ptr := GetProcAddress(h, 'DbiGetSysVersion');
 if ptr <> nil then
 begin
 proc := ptr;
 Proc(Ver);
 Result := IntToStr(ver.iVersion);
 Insert('.', Result, 2);
 end;
 finally
 FreeLibrary(h);
 end;
end;
Source: Взято с сайта http://www.swissdelphicenter.ch/en/tipsindex.php
ID: 02491
Как узнать версию Internet Explorer?

uses
 Registry;
function GetIEVersion(Key: string): string;
var
 Reg: TRegistry;
begin
 Reg := TRegistry.Create;
 try
 Reg.RootKey := HKEY_LOCAL_MACHINE;
 Reg.OpenKey('Software\Microsoft\Internet Explorer', False);
 try
 Result := Reg.ReadString(Key);
 except
 Result := ;
 end;
 Reg.CloseKey;
 finally
 Reg.Free;
 end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
 ShowMessage('IE-Version: ' + GetIEVersion('Version')[1] + '.' + GetIEVersion('Version')[3]);
 ShowMessage('IE-Version: ' + GetIEVersion('Version'));
 // <major version>.<minor version>.<build number>.
end;
Source: http://www.swissdelphicenter.ch/en/tipsindex.php
ID: 03516
Category:Связь
Category:WebBrowser
Как узнать версию MS Word?

{ ... }
MsWord := CreateOleObject('Word.Basic');
try
 { Return Application Info. This call is the same for English and French Microsoft Word.}
 Lang := MsWord.AppInfo(Integer(16));
except
 try
 { For German Microsoft Word the procedure name is translated }
 Lang := MsWord.AnwInfo(Integer(16));
 except
 try
 { For Swedish Microsoft Word the procedure name is translated }
 Lang := MsWord.PrgmInfo(Integer(16));
 except
 try
 { For Dutch Microsoft Word the procedure name is translated }
 Lang := MsWord.ToepasInfo(Integer(16));
 except
 { If this procedure does not exist there is a different translation of Microsoft Word }
 ShowMessage('Microsoft Word version is not German, French, Dutch, Swedish or English.');
 Exit;
 end;
 end;
 end;
end;
ShowMessage(Lang);
{ ... }
Source: Взято с Delphi Knowledge Base: http://www.baltsoft.com/
ID: 04422
Category:COM
Category:MS Office
Как узнать версию компиллятора?

===== Как узнать версию компиллятора? =====
Иногда надо выполнить разный код в зависимости от версии Дельфи, особенно актуально это при разработки компонентов и модулей, которые используются в разных приложениях. 
В Дельфи предопределены специальные константы компиляции для этого:
 Ver80 - Дельфи 1 
 Ver90 - Дельфи 2 
 Ver93 - С Buider 1 
 Ver100 - Дельфи 3 
 Ver110 - С Buider 3 
 Ver120 - Дельфи 4 
 Ver125 - С Buider 4 
 Ver130 - Дельфи 5 
 Ver140 - Дельфи 6 
 Ver150 - Дельфи 7 
Пример использования:
procedure TForm1.Button2Click(Sender: TObject);
{©Drkb v.3(2007): www.drkb.ru, 
 ®Vit (Vitaly Nevzorov) - nevzorov@yahoo.com}
const Version=
{$Ifdef Ver80}'Дельфи 1';{$EndIf} 
{$Ifdef Ver90}'Дельфи 2';{$EndIf} 
{$Ifdef Ver100}'Дельфи 3';{$EndIf}
{$Ifdef Ver120}'Дельфи 4';{$EndIf} 
{$Ifdef Ver130}'Дельфи 5';{$EndIf}
{$Ifdef Ver140}'Дельфи 6';{$EndIf}
{$Ifdef Ver150}'Дельфи 7';{$EndIf} 
begin
 ShowMessage('Для компиляции этой программы был использован '+Version);
end;
Author: Vit (www.delphist.com, www.drkb.ru, www.unihighlighter.com, www.nevzorov.org)
Source: http://forum.vingrad.ru
ID: 00011
Как узнать версию программы?

=== Как узнать версию программы? ===
function FileVersion(AFileName: string): string;
var
 szName: array[0..255] of Char;
 P: Pointer;
 Value: Pointer;
 Len: UINT;
 GetTranslationString: string;
 FFileName: PChar;
 FValid: Boolean;
 FSize: DWORD;
 FHandle: DWORD;
 FBuffer: PChar;
begin
 try
 FFileName := StrPCopy(StrAlloc(Length(AFileName) + 1), AFileName);
 FValid := False;
 FSize := GetFileVersionInfoSize(FFileName, FHandle);
 if FSize > 0 then
 try
 GetMem(FBuffer, FSize);
 FValid := GetFileVersionInfo(FFileName, FHandle, FSize, FBuffer);
 except
 FValid := False;
 raise;
 end;
 Result := ;
 if FValid then
 VerQueryValue(FBuffer, '\VarFileInfo\Translation', p, Len)
 else
 p := nil;
 if P <> nil then
 GetTranslationString := IntToHex(MakeLong(HiWord(Longint(P^)), LoWord(Longint(P^))), 8);
 if FValid then
 begin
 StrPCopy(szName, '\StringFileInfo\' + GetTranslationString + '\FileVersion');
 if VerQueryValue(FBuffer, szName, Value, Len) then
 Result := StrPas(PChar(Value));
 end;
 finally
 try
 if FBuffer <> nil then FreeMem(FBuffer, FSize);
 except
 end;
 try
 StrDispose(FFileName);
 except
 end;
 end;
end;
В качестве параметра задать имя программы, если своей программы:
FileVersion(Paramstr(0));
Author: Vit
Source: Взято с Vingrad.ru http://forum.vingrad.ru
ID: 03140
Category:Файловая система
Как узнать версию сервера?

=== Как узнать версию сервера? ===
This function gets the connected MS SQL Server version. It returns the version info in 3 OUT parameters.
 VerNum: double eg. 7.00623
 VerStrShort: string eg. '7.00.623'
 VerStrLong: string eg. 'Microsoft SQL Server 7.00 - 7.00.623 (Intel X86)
 Nov 27 1998 22:20:07 
 Copyright (c) 1988-1998 Microsoft Corporation
 Enterprise Edition on 
 Windows NT 5.0 (Build 2195: Service Pack 1)'
I have tested it with MSSQL 7 and MSSQL 2000. I assume it should work for the others. Any feedback and fixes for different versions would be appreciated.
The TQuery parameter that it recieves is a TQuery component that is connected to an open database connection.
procedure GetSqlVersion(Query: TQuery;
 out VerNum: double;
 out VerStrShort: string;
 out VerStrLong: string);
var
 sTmp, sValue: string;
 i: integer;
begin
 // @@Version does not return a Cursor.
 // Read the value from the Record Buffer
 // Can be used to read all sys functions from MS Sql
 sValue := ;
 Query.SQL.Text := 'select @@Version';
 Query.Open;
 SetLength(sValue, Query.RecordSize + 1);
 Query.GetCurrentRecord(PChar(sValue));
 SetLength(sValue, StrLen(PChar(sValue)));
 Query.Close;
 if sValue <> then
 VerStrLong := sValue
 else
 begin
 // Don't know this version
 VerStrLong := '?';
 VerNum := 0.0;
 VerStrShort := '?.?.?.?';
 end;
 if VerStrLong <> then
 begin
 sTmp := trim(copy(VerStrLong, pos('-', VerStrLong) + 1, 1024));
 VerStrShort := copy(sTmp, 1, pos(' ', sTmp) - 1);
 sTmp := copy(VerStrShort, 1, pos('.', VerStrShort));
 for i := length(sTmp) + 1 to length(VerStrShort) do
 begin
 if VerStrShort[i] <> '.' then
 sTmp := sTmp + VerStrShort[i];
 end;
 VerNum := StrToFloat(sTmp);
 end;
end;
Source: Взято с Delphi Knowledge Base: http://www.baltsoft.com/
ID: 02781
Category:Базы данных
Category:MS SQL Server
Как узнать версию таблицы

=== Как узнать версию таблицы ===
function GetTableVersion(Table: TTable): Longint;
var
 hCursor: hDBICur;
 DT: TBLFullDesc;
begin
 Check(DbiOpenTableList(Table.DBHandle, True, False,
 PChar(Table.TableName), hCursor));
 Check(DbiGetNextRecord(hCursor, dbiNOLOCK, @DT, nil));
 Result := DT.tblExt.iRestrVersion;
 Check(DbiCloseCursor(hCursor));
end;
Source: Взято с сайта http://www.swissdelphicenter.ch/en/tipsindex.php
ID: 02609
Как узнать доступен ли DCOM?

function IsDCOMEnabled: Boolean;
var
 Ts: string;
 R: TRegistry;
begin
 r := TRegistry.Create;
 try
 r.RootKey := HKEY_LOCAL_MACHINE;
 r.OpenKey('Software\Microsoft\OLE', False);
 ts := AnsiUpperCase(R.ReadString('EnableDCOM'));
 finally
 r.Free;
 end;
 Result := (Ts = 'Y');
end;
Source: Взято с Delphi Knowledge Base: http://www.baltsoft.com/
ID: 04328
----
function IsDCOMInstalled: Boolean;
var
 OLE32: HModule;
begin
 Result := not (IsWin95 or IsWin95OSR2);
 if not Result then
 begin
 OLE32 := LoadLibrary(COLE32DLL);
 if OLE32 > 0 then
 try
 Result := GetProcAddress(OLE32, PChar('CoCreateInstanceEx')) <> nil;
 finally
 FreeLibrary(OLE32);
 end;
 end;
end;
Source: Взято с Delphi Knowledge Base: http://www.baltsoft.com/
ID: 04329
Category:COM
Как узнать драйвер принтера

Иногда метод GetPrinter() компонента TPrinter возвращает пустую строку, поэтому целесообразно воспользоваться API для получения необходимых параметров из файла Windows.ini.
uses Printers;
{$IFNDEF WIN32}
const MAX_PATH = 144;
{$ENDIF}
procedure TForm1.Button1Click(Sender: TObject);
var
 pDevice: PChar;
 pDriver: PChar;
 pPort: PChar;
 hDMode: THandle;
begin
 if PrintDialog1.Execute then
 begin
 GetMem(pDevice, cchDeviceName);
 GetMem(pDriver, MAX_PATH);
 GetMem(pPort, MAX_PATH);
 Printer.GetPrinter(pDevice, pDriver, pPort, hDMode);
 if lStrLen(pDriver) = 0 then
 begin
 GetProfileString('Devices', pDevice, , pDriver, MAX_PATH);
 pDriver[Pos(',', pDriver) - 1] := #0;
 end;
 if LStrLen(pPort) = 0 then
 begin
 GetProfileString('Devices', pDevice, , pPort, MAX_PATH);
 LStrCpy(pPort, @pPort[lStrLen(pPort) + 2]);
 end;
 Memo1.Lines.Add('Device := ' + StrPas(pDevice));
 Memo1.Lines.Add('Driver := ' + StrPas(pDriver));
 Memo1.Lines.Add('Port := ' + StrPas(pPort));
 FreeMem(pDevice, cchDeviceName);
 FreeMem(pDriver, MAX_PATH);
 FreeMem(pPort, MAX_PATH);
 end;
end;
Source: Взято с http://delphiworld.narod.ru
ID: 03220
Category:Принтер
Как узнать есть ли в заданном CD-ROM'е Audio CD?

=== Как узнать есть ли в заданном CD-ROM'е Audio CD? ===
Можно использовать функцию Windows API GetDriveType() чтобы определить является ли дисковод CD-ROM'мом. И функцию API GetVolumeInformation() чтобы проверить VolumeName на равенство 'Audio CD'. 
Пример:
function IsAudioCD(Drive: Char): Boolean;
var
 DrivePath: string;
 MaximumComponentLength: DWORD;
 FileSystemFlags: DWORD;
 VolumeName: string;
begin
 Result := False;
 DrivePath := Drive + ':\';
 if GetDriveType(PChar(DrivePath)) <> DRIVE_CDROM then
 exit;
 SetLength(VolumeName, 64);
 GetVolumeInformation(PChar(DrivePath), PChar(VolumeName),
 Length(VolumeName), nil, MaximumComponentLength, FileSystemFlags, nil, 0);
 if lStrCmp(PChar(VolumeName), 'Audio CD') = 0 then
 Result := True;
end;
function PlayAudioCD(Drive: Char): Boolean;
var
 mp: TMediaPlayer;
begin
 Result := False;
 Application.ProcessMessages;
 if not IsAudioCD(Drive) then
 exit;
 mp := TMediaPlayer.Create(nil);
 mp.Visible := False;
 mp.Parent := Application.MainForm;
 mp.Shareable := True;
 mp.DeviceType := dtCDAudio;
 mp.FileName := Drive + ':';
 mp.Shareable := True;
 mp.Open;
 Application.ProcessMessages;
 mp.Play;
 Application.ProcessMessages;
 mp.Close;
 Application.ProcessMessages;
 mp.Free;
 Result := True;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
 if not PlayAudioCD('D') then
 ShowMessage('Not an Audio CD');
end;
 DELPHI VCL FAQ Перевод с английского
 Подборку, перевод и адаптацию материала подготовил Aziz(JINX)
 специально для Королевства Дельфи
Source: Взято из 
ID: 01402
Как узнать загрузку CPU определённым процессом?

В коде используется функция ExecCmdine из статьи: Как запустить консольное приложение и перехватить вывод?
procedure ReadProcLoad(Pid: string; var CPU, Mem: string);
var
 t: TStringList;
 s: string;
 function GetLine: string;
 var i: Integer;
 begin
 for i:=0 to t.Count-1 do
 if (Pos(Pid, t[i]) < 10) and (Pos(Pid, t[i]) > 0) then
 Result := t[i];
 end;
begin
 t := TStringList.Create;
 try
 ExecCmdine('top -n1 p '+PID, t);
 try
 s := GetLine;
 s := GetBefore(':',s);
 s := Trim(Copy(s, 1, lastDelimiter(' ', s)));
 Mem := Trim(Copy(s, lastDelimiter(' ', s), Length(s)));
 s := Trim(Copy(s, 1, lastDelimiter(' ', s)));
 CPU := Trim(Copy(s, lastDelimiter(' ', s), Length(s)));
 except
 CPU := '-1';
 Mem := '-1';
 end
 finally
 t.Free;
 end;
end;
В процедуру передаётся PID процесса, а возвращается использование CPU и памяти процессом. Более подробную информацию можно получить запустив в консоли:
 man top
Примечание - под отладчиком Kylix код может не работать. Надо запускать приложение не под Kylix для того чтобы удостовериться что код работает. Кроме того некоторые консольные приложения, типа top не совсем стандартно используют консоль, поэтому я наблюдала такое явление, что top можно запустить только если запускать готовое приложение в терминале.
Author: Vit
ID: 04626
Category:Kylix
Category:Linux
Как узнать заряженность батарей?

=== Как узнать заряженность батарей? ===
procedure TForm1.Button1Click(Sender: TObject);
var
 SysPowerStatus: TSystemPowerStatus;
begin
 GetSystemPowerStatus(SysPowerStatus);
 if Boolean(SysPowerStatus.ACLineStatus) then
 begin
 ShowMessage('System running on AC.');
 end
 else
 begin
 ShowMessage('System running on battery.');
 ShowMessage(Format('Battery power left: %d percent.', [SysPowerStatus.BatteryLifePercent]));
 end;
end;
Source: Взято с сайта http://www.swissdelphicenter.ch/en/tipsindex.php
ID: 01676
Как узнать значения, которые пользователь вводит в TDBGrid?

=== Как узнать значения, которые пользователь вводит в TDBGrid? ===
procedure TForm1.DBGrid1KeyUp(Sender: TObject;
 var Key: Word; Shift: TShiftState);
var
 B: byte;
begin
 for B := 0 to DBGrid1.ControlCount - 1 do
 if DBGrid1.Controls[B] is TInPlaceEdit then
 begin
 with DBGrid1.Controls[B] as TInPlaceEdit do
 begin
 Label1.Caption := 'Text = ' + Text;
 end;
 end;
end;
Source: Взято из http://forum.sources.ru
ID: 03020
Category:Базы данных
Category:DBGrid
Как узнать имена установленных в системе COM-портов?

=== Как узнать имена установленных в системе COM-портов? ===
uses Registry; 
procedure TForm1.Button1Click(Sender: TObject); 
var 
 reg: TRegistry; 
 ts: TStrings; 
 i: integer; 
begin 
 reg := TRegistry.Create; 
 reg.RootKey := HKEY_LOCAL_MACHINE; 
 reg.OpenKey('hardware\devicemap\serialcomm', 
 false); 
 ts := TStringList.Create; 
 reg.GetValueNames(ts); 
 for i := 0 to ts.Count -1 do begin 
 Memo1.Lines.Add(reg.ReadString(ts.Strings[i])); 
 end; 
 ts.Free; 
 reg.CloseKey; 
 reg.free; 
end;
Source: Взято из http://forum.sources.ru
ID: 01343