nyuuzyou/wikis huggingface dataset:
Получить Bitmap радио кнопок

{
 Diese Funktion liefert ein Bitmap eines RadioButton.
 Parameter:
 Checked = RadioButton ausgewahlt
 Hot = RadioButton aktiv (funktioniert nur unter XP und
 bewirkt z.B. unter Luna einen hellroten Rand)
 BgColor = Hintergrundfarbe des RadioButton
 Wichtig:
 Die Bitmap sollte nach Ausfuhrung der Funktion wieder freigegeben werden!
 XP-Styles werden erst ab Delphi7 unterstutzt.
}
{$IFDEF VER150}
uses
 Themes;
{$ENDIF}
function GetRadioButtonBitmap(Checked, Hot: Boolean; BgColor: TColor): TBitmap;
const
 CtrlState: array[boolean] of Integer = (DFCS_BUTTONRADIO,
 DFCS_BUTTONRADIO or DFCS_CHECKED);
var
 CBRect: TRect;
 {$IFDEF VER150}
 Details: TThemedElementDetails;
 {$ENDIF}
 BgOld: TColor;
 ChkBmp: TBitmap;
 ThemeOK: Boolean;
 x, x2, y: Integer;
begin
 Result := nil;
 try
 Result := TBitmap.Create;
 ChkBmp := TBitmap.Create;
 ThemeOK := False;
 with Result do
 begin
 Width := 16;
 Height := 16;
 with Canvas do
 begin
 Brush.Color := BgColor;
 FillRect(ClipRect);
 ChkBmp.Assign(Result);
 CBRect := ClipRect;
 CBRect.Top := 1;
 CBRect.Left := 1;
 {$IFDEF VER150}
 if ThemeServices.ThemesAvailable then
 begin
 // ab WinXP
 if Checked = True then
 begin
 if Hot = True then
 Details := ThemeServices.GetElementDetails(tbRadioButtonCheckedHot)
 else
 Details := ThemeServices.GetElementDetails(tbRadioButtonCheckedNormal);
 end
 else
 begin
 if Hot = True then
 Details := ThemeServices.GetElementDetails(tbRadioButtonUncheckedHot)
 else
 Details := ThemeServices.GetElementDetails(tbRadioButtonUncheckedNormal);
 end;
 ThemeServices.DrawElement(Handle, Details, CBRect);
 // Prufen ob es tatsachlich geklappt hat (Win2003 liefert leere Images!)
 for x := 15 downto 0 do
 for y := 15 downto 0 do
 if ChkBmp.Canvas.Pixels[x, y] <> Pixels[x, y] then
 begin
 ThemeOK := True;
 break;
 end;
 end;
 {$ENDIF}
 if ThemeOK = False then
 begin
 //alles vor WinXP
 CBRect.Left := ClipRect.Left + 2;
 CBRect.Right := ClipRect.Right - 1;
 CBRect.Top := ClipRect.Top + 2;
 CBRect.Bottom := ClipRect.Bottom - 1;
 DrawFrameControl(Handle, CBRect, DFC_BUTTON, CtrlState[Checked]);
 end;
 end;
 end;
 finally
 end;
end;
ID: 03785
Category:Графика
Category:Bitmap
Получить Handle и имя класса окна под мышкой

=== Получить Handle и имя класса окна под мышкой ===
type 
 TForm1 = class(TForm) 
 Label1: TLabel; 
 Label2: TLabel; 
 Timer1: TTimer; 
 procedure Timer1Timer(Sender: TObject); 
 procedure FormCreate(Sender: TObject); 
 private 
 procedure ShowHwndAndClassName(CrPos: TPoint); 
 public 
 end; 
var 
 Form1: TForm1; 
implementation 
{$R *.DFM} 
procedure TForm1.Timer1Timer(Sender: TObject); 
var 
 rPos: TPoint; 
begin 
 if Boolean(GetCursorPos(rPos)) then ShowHwndAndClassName(rPos); 
end; 
procedure TForm1.ShowHwndAndClassName(CrPos: TPoint); 
var 
 hWnd: THandle; 
 aName: array [0..255] of Char; 
begin 
 hWnd := WindowFromPoint(CrPos); 
 Label1.Caption := 'Handle : ' + IntToStr(hWnd); 
 if Boolean(GetClassName(hWnd, aName, 256)) then 
 Label2.Caption := 'ClassName : ' + string(aName) 
 else 
 Label2.Caption := 'ClassName : not found'; 
end; 
procedure TForm1.FormCreate(Sender: TObject); 
begin 
 Form1.FormStyle := fsStayOnTop; 
 Timer1.Interval := 50; 
end;
Source: http://delphiworld.narod.ru
ID: 01598
Получить время задержки хранителя экрана

=== Получить время задержки хранителя экрана ===
function GetScreenSaverTimeout: Integer;
begin
 SystemParametersInfo(SPI_GETSCREENSAVETIMEOUT, 0, @Result, 0);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
 ShowMessage(IntToStr(GetScreenSaverTimeout) + ' Sec.');
end;
Source: Взято с сайта: http://www.swissdelphicenter.ch
ID: 02382
Получить все возможные разрешения экрана

=== Получить все возможные разрешения экрана ===
procedure TForm1.Button1Click(Sender: TObject);
var 
 DC: THandle; // display context
 Bits: integer; // bits per pixel
 HRes: integer; // horizontal resolution
 VRes: integer; // vertical resolution
 DM: TDevMode; // to Save EnumDisplaySettings
 ModeNum: longint; // video mode number
 Ok: Bool;
 fre: integer; // refresh rate 
begin 
 DC := GetDC(Handle); 
 Bits := GetDeviceCaps(DC, BITSPIXEL); 
 HRes := GetDeviceCaps(DC, HORZRES); 
 VRes := GetDeviceCaps(DC, VERTRES); 
 fre := GetDeviceCaps(DC, VREFRESH); 
 // Show Current Resolution 
 Edit1.Text := Format('%d bit, %d x %d', [Bits, HRes, VRes]); 
 ReleaseDC(Handle, DC); // Show all modes available 
 ModeNum := 0; // The 1st one 
 EnumDisplaySettings(nil, ModeNum, DM); 
 ListBox1.Items.Add(Format('%d bit, %d x %d bei %d Hz', [DM.dmBitsPerPel, 
 DM.dmPelsWidth, DM.dmPelsHeight, Dm.dmDisplayFrequency])); 
 Ok := True; 
 while Ok do 
 begin 
 Inc(ModeNum); // Get next one 
 Ok := EnumDisplaySettings(nil, ModeNum, DM); 
 ListBox1.Items.Add(Format('%d bit, %d x %d bei %d Hz', [DM.dmBitsPerPel, 
 DM.dmPelsWidth, DM.dmPelsHeight, Dm.dmDisplayFrequency])); 
 end; 
end;
Source: http://delphiworld.narod.ru/
ID: 01460
Получить все выделенные элементы TListView

=== Получить все выделенные элементы TListView ===
procedure TForm1.Button1Click(Sender: TObject);
var
 i: integer;
begin
 with Listview1 do
 // MultiSelect := True; 
 // ViewStyle := vsReport; 
 for i := 0 to Items.Count - 1 do
 if Items[i].Selected then
 Items[i].Caption := Items[i].Caption + ' - Selected!';
end;
Source: Взято с сайта: http://www.swissdelphicenter.ch
ID: 01142
Получить даты с понедельника по пятницу текущей недели

=== Получить даты с понедельника по пятницу текущей недели ===
{
 Data sometimes have to be filtered regarding to working
 days (Mo.-Fri.) of the current Week. Following procs set
 your TDateTimePicker automatically. 
} 
function GetMonday(RefDay: TDate): TDate; 
var 
 DoW: Integer; 
 DateOffset: Integer; 
begin 
 DoW := DayOfWeek(RefDay); 
 // Montag der Woche 
 if DoW = 1 then DateOffset := -6 
 else 
 DateOffset := Dow - 2; 
 Result := RefDay - DateOffset; 
end; 
function GetFriday(RefDay: TDate): TDate; 
var 
 DoW: Integer; 
 DateOffset: Integer; 
begin 
 DoW := DayOfWeek(RefDay); 
 { 
 Friday of current week 
 Freitag der Woche 
 } 
 if DoW = 1 then DateOffset := -2 
 else 
 DateOffset := Dow - 6; 
 Result := RefDay - DateOffset; 
end; 
procedure SetWorkingDaysFilter(S, E: TDateTimePicker); 
var 
 N: TDate; 
begin 
 N := Now; 
 S.Date := GetMonday(N); 
 E.Date := GetFriday(N); 
end; 
{Just as short as simple} 
{Einfach und kurz} 
type 
 TForm1 = class(TForm) 
 DStart: TDateTimePicker; 
 DEnd: TDateTimePicker; 
 btSetFilter: TButton; 
 procedure btSetFilterClick(Sender: TObject); 
 end; 
procedure TForm1.btSetFilterClick(Sender: TObject); 
begin 
 SetWorkingDaysFilter(DStart, DEnd); 
end;
Source: http://delphiworld.narod.ru
ID: 00733
Получить дескриптор окна, которое владеет кнопками запущенных программ на панели задач

=== Получить дескриптор окна, которое владеет кнопками запущенных программ на панели задач ===
{ 
 In this article, I wish to describe the useful undocumented function 
 GetTaskmanWindow. The GetTaskmanWindow function returns a handle to 
 the window that ownes the taskbar buttons. 
 Here is the quoting about taskbar from Microsoft MSDN: 
 "The Microsoft® Windows® interface includes a special application desktop 
 toolbar called the taskbar. 
 The taskbar can be used for such tasks as switching between open 
 windows and starting new applications..." 
 and "The taskbar includes the Start menu, taskbar buttons, 
 a shortcut menu, and a status area...". 
 Unfortunately, Win32 API doesn't contain documented 
 function that can be used for accessing to the 
 taskbar so we should again use an undocumented way. 
 Here is the prototype for GetTaskmanWindow: 
 function GetTaskmanWindow (): HWND; 
 As always, Microsoft doesn't provide us with the exports symbols 
 in the User32.lib for this function, so we should load them dynamically using the 
 GetProcAddress and GetModuleHandle functions: 
}
 // getaskmanwnd.cpp (Windows NT/2000) 
// 
// This example will show you how you can obtain a handle to the 
// Windows Taskbar window. 
// Translated from C to Delphi by Thomas Stutz 
// Original Code: 
// (c)1999 Ashot Oganesyan K, SmartLine, Inc 
// mailto:ashot@aha.ru, http://www.protect-me.com, http://www.codepile.com 
function TaskmanWindow: HWND;
type
 TGetTaskmanWindow = function(): HWND; stdcall;
var
 hUser32: THandle;
 GetTaskmanWindow: TGetTaskmanWindow;
begin
 Result := 0;
 hUser32 := GetModuleHandle('user32.dll');
 if (hUser32 > 0) then
 begin
 @GetTaskmanWindow := GetProcAddress(hUser32, 'GetTaskmanWindow');
 if Assigned(GetTaskmanWindow) then
 begin
 Result := GetTaskmanWindow;
 end;
 end;
end;
procedure ShowTaskmanWindow(bValue: Boolean);
var
 hTaskmanWindow: Hwnd;
begin
 hTaskmanWindow := TaskmanWindow;
 if hTaskmanWindow <> 0 then
 begin
 ShowWindow(GetParent(hTaskmanWindow), Ord(bValue));
 end;
end;
// Example to Hide the Taskman Window
procedure TForm1.Button1Click(Sender: TObject);
begin
 ShowTaskmanWindow(False);
end;
Source: Взято с сайта: http://www.swissdelphicenter.ch
ID: 01792
Получить дескриптор панели задач

=== Получить дескриптор панели задач ===
Используем функцию нахождения окна FindWindow, указывая ей в качестве параметров сначала название класса окна, затем его заголовок. Если окно будет найдено, функция выдаст его дескриптор. 
handle_taskbar := FindWindow('Shell_TrayWnd', nil);
Source: http://delphiworld.narod.ru/
ID: 01777
Получить дескриптор текущего курсора

=== Получить дескриптор текущего курсора ===
{
 The GetCursor() API is limited in that it does not, by default, return a handle to the current
 cursor when that cursor is owned by another thread. This article demonstrates a way to retrieve
 the current cursor regardless of what thread owns it.
 For example, when you wish to include the image of the cursor in a screen capture.
}
function GetCursorHandle: HCURSOR;
var
 hWindow: HWND;
 pt: TPoint;
 pIconInfo: TIconInfo;
 dwThreadID, dwCurrentThreadID: DWORD;
begin
 // Find out which window owns the cursor
 // Das zum Mauszeiger zugehцrige Fenster finden
 GetCursorPos(pt);
 hWindow := WindowFromPoint(pt);
 // Get the thread ID for the cursor owner.
 // Thread ID des Fensters ermitteln
 dwThreadID := GetWindowThreadProcessId(hWindow, nil);
 // Get the thread ID for the current thread
 // Thread ID fьr den aktuellen Thread ermitteln
 dwCurrentThreadID := GetCurrentThreadId;
 // If the cursor owner is not us then we must attach to
 // the other thread in so that we can use GetCursor() to
 // return the correct hCursor
 // Wenn der Mauszeiger zu einem anderen Thread gehцrt, mьssen wir
 // an den anderen Thread anhдngen.
 if (dwCurrentThreadID <> dwThreadID) then
 begin
 if AttachThreadInput(dwCurrentThreadID, dwThreadID, True) then
 begin
 // Das Handle des Mauszeigers ermitteln
 // Get the handle to the cursor
 Result := GetCursor;
 AttachThreadInput(dwCurrentThreadID, dwThreadID, False);
 end;
 end
 else
 begin
 Result := GetCursor;
 end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
 CurPosX, CurPoxY: Integer;
 MyCursor: TIcon;
 pIconInfo: TIconInfo;
begin
 MyCursor := TIcon.Create;
 try
 MyCursor.Handle := GetCursorHandle;
 // Retrieves information about the specified cursor.
 // Informationen ьber den Mauszeiger auslesen
 GetIconInfo(MyCursor.Handle, pIconInfo);
 CurPosX := pIconInfo.xHotspot;
 CurPoxY := pIconInfo.yHotspot;
 // Draw the Cursor on the form
 // Den Mauszeiger auf die Form zeichnen
 Canvas.Draw(CurPoxY, CurPoxY, MyCursor);
 finally
 MyCursor.ReleaseHandle;
 MyCursor.Free;
 end;
end;
// Another Solution:
// Andere Mцglichkeit:
procedure TForm1.Timer1Timer(Sender: TObject);
var
 CI: TCursorInfo;
begin
 CI.cbSize := SizeOf(CI);
 GetCursorInfo(CI);
 Image1.Picture.Icon.Handle := CI.hCursor;
end;
Source: Взято с сайта: http://www.swissdelphicenter.ch
ID: 01599
Получить диапазон, прокручиваемый колесиком мышки

=== Получить диапазон, прокручиваемый колесиком мышки ===
// Not supported on Windows 95 
// result = -1: scroll whole page 
function GetNumScrollLines: Integer;
begin
 SystemParametersInfo(SPI_GETWHEELSCROLLLINES, 0, @Result, 0);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
 ShowMessage(IntToStr(GetNumScrollLines));
end;
Source: Взято с сайта: http://www.swissdelphicenter.ch
ID: 01600
Получить доступ в определенной части GUID

{ Manchmal wird nur ein Teil einer GUID benotigt.... }
{ You maybe have to access just a part of a GUID. }
{ Const for the function Format(...) }
const
 fsGUID: string = 'D1: $%s'#13#10'D2: $%s'#13#10'D3: $%s'#13#10 +
 'D4: $%s $%s $%s $%s $%s $%s $%s $%s';
 fsGUIDParts: string = 'D%d:%s';
// Type for the GUID part to be shown
type
 TGUIDPART = (guidp_NoFormat, guidp_All, guidp_D1,
 guidp_D2, guidp_D3, guidp_D4);
{ This GUIDToStringEx function give you the full GUID string
 according with then format string FStr (you can change it !!!) }
function GUIDToStringEx(Guid: TGuid; FStr: string): string; overload;
begin
 Result := Format(FStr,
 [IntToHex(GUID.D1, 8),
 IntToHex(GUID.D2, 4),
 IntToHex(GUID.D3, 4),
 IntToHex(GUID.D4[0], 2),
 IntToHex(GUID.D4[1], 2),
 IntToHex(GUID.D4[2], 2),
 IntToHex(GUID.D4[3], 2),
 IntToHex(GUID.D4[4], 2),
 IntToHex(GUID.D4[5], 2),
 IntToHex(GUID.D4[6], 2),
 IntToHex(GUID.D4[7], 2)
 ]);
end;
{ This GUIDToStringEx function give you the part of the GUID
 to be shown, according to the part type GUIDPart }
function GUIDToStringEx(Guid: TGuid; Part: TGUIDPART): string; overload;
var
 i: Integer;
 S: string;
begin
 S := ;
 case Part of
 guidp_NoFormat: S := GUIDToString(Guid);
 guidp_All: S := GUIDToStringEx(Guid, fsGUID);
 guidp_D1: S := Format(fsGUIDParts, [1, ' $' + IntToHex(GUID.D1, 8)]);
 guidp_D2: S := Format(fsGUIDParts, [2, ' $' + IntToHex(GUID.D2, 4)]);
 guidp_D3: S := Format(fsGUIDParts, [3, ' $' + IntToHex(GUID.D3, 4)]);
 guidp_D4:
 begin
 for i := 0 to 7 do S := S + ' $' + IntToHex(GUID.D4[i], 2);
 S := Format(fsGUIDParts, [4, S]);
 end;
 else
 S := '?';
 end;
 Result := S;
end;
{ How to use the different GUIDToStringEx functions }
procedure TForm1.Button1Click(Sender: TObject);
var
 NewGUID: TGUID;
begin
 { Create a new GUID }
 NewGUID := StringToGUID(CreateClassID);
 { Standard formated GUID string }
 label1.Caption := GUIDToStringEx(NewGUID, guidp_NoFormat) +
 #13#10+
 { Full formated GUID string acc. with fsGUID}
 GUIDToStringEx(NewGUID, fsGUID) +
 #13#10+
 { Full formated GUID string with default formating}
 GUIDToStringEx(NewGUID, guidp_All) +
 #13#10+
 { Part D3 of the GUID only }
 GUIDToStringEx(NewGUID, guidp_D3);
end;
Source: http://www.swissdelphicenter.ch
ID: 04351
Category:COM
Category:Работа с текстом
Получить заголовок элемента управления под мышкой

=== Получить заголовок элемента управления под мышкой ===
function GetCaptionAtPoint(CrPos: TPoint): string;
var
 TextLength: Integer;
 Text: PChar;
 Handle: HWND;
begin
 Result := 'Empty';
 Handle := WindowFromPoint(CrPos);
 if Handle = 0 then Exit;
 TextLength := SendMessage(Handle, WM_GETTEXTLENGTH, 0, 0);
 if TextLength <> 0 then
 begin
 GetMem(Text, TextLength + 1);
 SendMessage(Handle, WM_GETTEXT, TextLength + 1, Integer(Text));
 Result := Text;
 FreeMem(Text);
 end;
end;
Source: Взято с сайта: http://www.swissdelphicenter.ch
ID: 01601
Получить и установить системные цвета

var
 OldColor: TColor;
 Element: TColor = COLOR_BTNFACE;
 {....}
{ Set the color for a system element. SetSysColors function
 changes the current Windows session only.
 The new colors are not saved when Windows terminates.
 For a list of color elements see Win32 API Help - Function GetSysColor
 Open the ColorDialog - and set the new color systemwide }
procedure TForm1.Button1Click(Sender: TObject);
begin
 if ColorDialog1.Execute then
 begin
 SetSysColors(1, Element, ColorDialog1.Color);
 end;
end;
{ Save the old color value of the element COLOR_BTNFACE to restore on Button2 click }
procedure TForm1.FormShow(Sender: TObject);
begin
 OldColor := GetSysColor(COLOR_BTNFACE);
end;
{ Restore the old color value
 Stellt den alten Farbwert wieder her }
procedure TForm1.Button2Click(Sender: TObject);
begin
 SetSysColors(1, Element, OldColor);
end;
Source: http://delphiworld.narod.ru
ID: 03706
Category:Графика
Category:Цвета и палитры
Получить из регистров информацию о временной зоне (DST)

=== Получить из регистров информацию о временной зоне (DST) ===
HKEYLocalMachine/Software/Microsoft/Windows/CurrentVersion/TimeZones/ - место, где в регистре хранится информация о временных зонах (Timezone). Двоичный код 'TZI' хранит информацию о начале и конце летнего времени. Есть какие-нибудь идеи насчет извлечения этих дат из этой двоичной величины? 
Ок, попробую здесь описать бинарную структуру значения TZI:
int32 Bias; // Минуты от GMT
 // (Сидней -600; 0xfffffda8;
 // или a8, fd, ff, ff)
int32 StandardBias; // Смещение для стандартного времени (0)
int32 DaylightBias; // Смещение для летнего времени (-60
 // или 0xffffffc4 )
int16 ?? // 0
int16 StandardStartMonth; // 3 => Март
int16 StandardStartDayOfWeek??; // 0 => Воскресенье
int16 StandardStartDOWoccurrence; // 1 => 1-й
int16 StandardStartHour; // 2 => 02:00:00.00
int16 StandardStartMins??; // 0 => 02:00:00.00
int16 StandardStartSecs??; // 0 => 02:00:00.00
int16 StandardStartHunds??; // 0 => 02:00:00.00
int16 ?? // 0
int16 DaylightStartMonth; // 0x0a (10) => Октябрь
int16 DaylightStartDayOfWeek??; // 0 => Воскресенье
int16 DaylightStartDOWoccurrence; // 5 => последний
int16 DaylightStartHour; // 2 => 02:00:00.00
int16 DaylightStartMins??; // 0 => 02:00:00.00
int16 DaylightStartSecs??; // 0 => 02:00:00.00
int16 DaylightStartHunds??; // 0 => 02:00:00.00
Source: http://delphiworld.narod.ru
ID: 01636
Получить или установить задний фон в TWebBrowser

// You need a TWebbrowser and 3 TButtons
// First load a page
procedure TForm1.Button1Click(Sender: TObject);
begin
 WebBrowser1.Navigate('www.SwissDelphiCenter.com');
end;
// Show the background color
// Hintergrundfarbe herausfinden
procedure TForm1.Button2Click(Sender: TObject);
begin
 ShowMessage(WebBrowser1.OleObject.Document.bgColor);
end;
// Set the background color
procedure TForm1.Button3Click(Sender: TObject);
begin
 WebBrowser1.OleObject.Document.bgColor := '#000000';
end;
Source: http://www.swissdelphicenter.ch/en/tipsindex.php
ID: 03469
Category:Связь
Category:WebBrowser
Получить информацию о регистрации Windows

=== Получить информацию о регистрации Windows ===
uses
 Registry;
procedure GetOwnerAndCompanyName(var sOwner, sOrganization: string);
var
 reg: TRegistry;
 vi: TOSVersionInfo;
 sWindows: string;
begin
 reg := TRegistry.Create;
 sWindows := '\Windows\';
 try
 vi.dwOSVersionInfoSize := SizeOf(vi);
 GetVersionEx(vi);
 reg.RootKey := HKEY_LOCAL_MACHINE;
 if (vi.dwPlatformId = VER_PLATFORM_WIN32_NT) then sWindows := '\Windows NT\';
 if reg.OpenKey('Software\Microsoft' + sWindows + 'CurrentVersion', False) then
 begin
 // Name
 sOwner := reg.ReadString('RegisteredOwner');
 // Organization
 sOrganization := reg.ReadString('RegisteredOrganization');
 end;
 finally
 reg.Free;
 end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
 sOwner, sOrganization: string;
begin
 GetOwnerAndCompanyName(sOwner, sOrganization);
 Edit1.Text := sOwner;
 Edit2.Text := sOrganization;
end;
Source: http://delphiworld.narod.ru/
ID: 01628
Получить количество вложенных ключей и значений ветви реестра

=== Получить количество вложенных ключей и значений ветви реестра ===
uses Registry;
// Количество вложенных ключей и значений
procedure TForm1.Button1Click(Sender: TObject);
const
 sKey = '\SOFTWARE\Microsoft\Windows\CurrentVersion';
var
 rReg: TRegistry;
 ki: TRegKeyInfo;
begin
 rReg := TRegistry.Create;
 with rReg do
 begin
 RootKey := HKEY_LOCAL_MACHINE;
 if KeyExists(sKey) then
 begin
 OpenKey(sKey, false);
 GetKeyInfo(ki);
 CloseKey;
 lbSubkeys.Caption := IntToStr(ki.NumSubKeys);
 lbValues.Caption := IntToStr(ki.NumValues);
 end;
 end;
 rReg.Free;
end;
Author: ___Nikolay
Source: http://delphiworld.narod.ru/
ID: 02288
Получить номер дня в году

=== Получить номер дня в году ===
function GetDays(ADate: TDate): Extended;
 var
 FirstOfYear: TDateTime;
 begin
 FirstOfYear := EncodeDate(StrToInt(FormatDateTime('yyyy', now)) - 1, 12, 31);
 Result := ADate - FirstOfYear;
 end;
 procedure TForm1.Button1Click(Sender: TObject);
 begin
 label1.Caption := 'Today is the ' + FloatToStr(GetDays(Date)) + '. day of the year';
 end;
Source: Взято с сайта: http://www.swissdelphicenter.ch
ID: 00734
Получить первую или последнюю видимую строку в TRichEdit

=== Получить первую или последнюю видимую строку в TRichEdit ===
function RE_GetLastVisibleLine(RichEdit: TRichEdit): Integer;
const
 EM_EXLINEFROMCHAR = WM_USER + 54;
var
 r: TRect;
 i: Integer;
begin
 { The EM_GETRECT message retrieves the formatting rectangle 
 of an edit control. }
 RichEdit.Perform(EM_GETRECT, 0, Longint(@r));
 r.Left := r.Left + 1;
 r.Top := r.Bottom - 2;
 { The EM_CHARFROMPOS message retrieves information about the character 
 closest to a specified point in the client area of an edit control }
 i := RichEdit.Perform(EM_CHARFROMPOS, 0, Integer(@r.topleft));
 { The EM_EXLINEFROMCHAR message determines which 
 line contains the specified character in a rich edit control }
 Result := RichEdit.Perform(EM_EXLINEFROMCHAR, 0, i);
end;
{ 
 Sending the EM_GETFIRSTVISIBLELINE message to a multi-line edit control 
 finds out which line is the first line visible. 
 This is the line that is currently displayed at the top of the control. 
}
function RE_GetFirstVisibleLine(RichEdit: TRichEdit): Integer;
begin
 Result := RichEdit.Perform(EM_GETFIRSTVISIBLELINE, 0, 0);
end;
Source: Взято с сайта: http://www.swissdelphicenter.ch
ID: 01033
Получить путь к выделенному файлу в TShellListView

=== Получить путь к выделенному файлу в TShellListView ===
Label1.Caption := ShellListView1.Folders[ShellListView1.ItemIndex].PathName
{**************************************************************}
{ 
 To retrieve full paths to each file selected files: 
}
var
 path: string;
begin
 for i:=0 to ShellListView1.SelCount-1 do
 begin
 path := ShellListView1.Folders[ShellListView1.GetNextItem(ShellListView1.Selected,
 sdAll, [isSelected]).Index+i-1].PathName;
 // ... 
 end;
end
Source: Взято с сайта: http://www.swissdelphicenter.ch
ID: 01143
Получить слово под курсором в RichEdit

=== Получить слово под курсором в RichEdit ===
uses 
 RichEdit; 
procedure TForm1.RichEdit1MouseMove(Sender: TObject; Shift: TShiftState; 
 X, Y: Integer); 
var 
 iCharIndex, iLineIndex, iCharOffset, i, j: Integer; 
 Pt: TPoint; 
 s: string; 
begin 
 with TRichEdit(Sender) do 
 begin 
 Pt := Point(X, Y); 
 // Get Character Index from word under the cursor 
 iCharIndex := Perform(Messages.EM_CHARFROMPOS, 0, Integer(@Pt)); 
 if iCharIndex < 0 then Exit; 
 // Get line Index 
 iLineIndex := Perform(EM_EXLINEFROMCHAR, 0, iCharIndex); 
 iCharOffset := iCharIndex - Perform(EM_LINEINDEX, iLineIndex, 0); 
 if Lines.Count - 1 < iLineIndex then Exit; 
 // store the current line in a variable 
 s := Lines[iLineIndex]; 
 // Search the beginning of the word 
 i := iCharOffset + 1; 
 while (i > 0) and (s[i] <> ' ') do Dec(i); 
 // Search the end of the word 
 j := iCharOffset + 1; 
 while (j <= Length(s)) and (s[j] <> ' ') do Inc(j); 
 // Display Text under Cursor 
 Caption := Copy(s, i, j - i); 
 end; 
end; 
Source: http://delphiworld.narod.ru/
ID: 01034
Получить содержимое TStringGrid или TDrawGrid в виде строки

=== Получить содержимое TStringGrid или TDrawGrid в виде строки ===
{ 
 This copies the contents of a TstringGrid/TDrawGrid (only Text!!) into a string. 
 Tabs are inserted between the columns, CR+LF between rows. 
}
use
 Grids;
{...}
{ we need this Cracker Class because the Col/RowCount property
 is not public in TCustomGrid }
type
 TGridHack = class(TCustomGrid);
function GetstringGridText(_Grid: TCustomGrid): string;
var
 Grid: TGridHack;
 Row, Col: Integer;
 s: string;
begin
 // Cast the paramter to a TGridHack, so we can access protected properties
 Grid := TGridHack(_Grid);
 Result := ;
 // for all rows, then for all columns
 for Row := 0 to Grid.RowCount - 1 do
 begin
 for Col := 0 to Grid.ColCount - 1 do
 begin
 // the first column does not need the tab
 if Col > 0 then
 Result := Result + #9;
 Result := Result + Grid.GetEditText(Col, Row);
 end;
 Result := Result + #13#10;
 end;
end;
Source: Взято с сайта: http://www.swissdelphicenter.ch
ID: 01057