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

=== Как определить установлена ли звуковая карта? ===
if WaveOutGetNumDevs > 0 then
 ShowMessage('Wave-Device present')
else
 ShowMessage('No Wave-Device present');
ID: 02262
----
function IsSoundCardInstalled: Boolean;
type
 SCFunc = function: UInt; stdcall;
var
 LibInst: LongInt;
 EntryPoint: SCFunc;
begin
 Result := False;
 LibInst := LoadLibrary(PChar('winmm.dll'));
 try
 if LibInst <> 0 then
 begin
 EntryPoint := GetProcAddress(LibInst, 'waveOutGetNumDevs');
 if (EntryPoint <> 0) then
 Result := True;
 end;
 finally
 if (LibInst <> 0) then
 FreeLibrary(LibInst);
 end;
end;
Source: Взято с Delphi Knowledge Base: http://www.baltsoft.com/
ID: 02261
Как определить цвет код произвольной точки экрана?

function GetPixelColor(x, y: Integer): Cardinal;
var
 DC: HDC;
begin
 DC := CreateDC('MONITOR', nil, nil, nil);
 Result := GetPixel(DC, x, y);
 DeleteDC(DC);
end;
Author: Baa.
Source: http://forum.vingrad.ru
ID: 03685
ID: 03686
Category:Графика
Category:Цвета и палитры
Как оптимизировать запросы?

=== Как оптимизировать запросы? ===
Вот несколько простых рекомендаций для оптимизации запросов:
* пробуйте разный порядок таблицы в запросе для получения оптимальной производительности (также и для явного join)
* пробуйте ваши запросы в WISQL, включив Show Query Plan и Show Statistics.
* используйте индексы по полям, участвующим в условиях where.
* не забывайте делать SET STATISTICS по индексам, созданным вами специально для ускорения запросов.
К сожалению, не существует точных правил по оптимизации запросов - это путь проб и ошибок, т.к. невозможно заранее предсказать ни ваши запросы, ни ваши реальные данные.
; Примечание: бывают ситуации, когда оптимизатор "настаивает" на использовании всех индексов по определенному столбцу, даже если создан специальный композитный индекс по всем полям where. В этом случае необходимо принудительно заставить оптимизатор IB использовать нужный запрос, причем скорость отработки такого запроса может ускориться на порядок.
Author: Дмитрий Кузьменко (http://www.ibase.ru)
ID: 02889
Category:Базы данных
Category:Interbase
Как остановить автодобавление из DBGrid?

=== Как остановить автодобавление из DBGrid? ===
Добавьте в событие "BeforeInsert" Вашего TTables следующие строки:
procedure TForm1.Tbable1BeforeInsert(DataSet: TDataset);
begin
 Abort;
end;
ИЛИ
procedure TForm8.DBGrid1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
 if (Key = VK_DOWN) then
 begin
 TTable1.DisableControls();
 TTable1Next();
 if TTable1.EOF then
 Key := 0
 else
 TTable1.Prior();
 TTable1.EnableControls();
 end ;
end;
Source: Взято из http://forum.sources.ru
ID: 03015
Category:Базы данных
Category:DBGrid
Как остановить или запустить IB сервис?

=== Как остановить или запустить IB сервис? ===
Do you need to shutdown the Interbase db service e.g. for an installation program and afterwards restart it?
You could do this with a lot of Delphi code involving unit WinSvc and function calls to
 OpenSCManager()
 EnumServicesStatus()
 OpenService()
 StartService() or ControlService().
But luckily there is a much easier solution that uses the NET.EXE program which has been part of Windows since Windows for Workgroups (Wfw 3.11). Just create the two batch files
 IBSTOP.BAT
 IBSTART.BAT
and call them from your code. You may want to call them and wait for their termination.
 IBSTOP.BAT
 =============
 @echo off
 net stop "InterBase Guardian" >NULL
 net stop "InterBase Server" >NULL
 IBSTART.BAT
 =============
 @echo off
 net start "Interbase Guardian" >NULL
Source: Взято с Delphi Knowledge Base: http://www.baltsoft.com/
ID: 02890
Category:Базы данных
Category:Interbase
Как осуществить быстрый поиск в Listbox?

=== Как осуществить быстрый поиск в Listbox? ===
Очень просто, смотри пример....
считаем, сто есть поле Edit1, в котором набираем текст, и ListBox, в котором ищем нужную строку, (как в Help).
procedure TForm1.Edit1Change(Sender: TObject);
begin
 ListBox1.Perform(LB_SELECTSTRING, -1, LongInt(PChar(Edit1.Text)));
end;
Source: Взято из http://forum.sources.ru
ID: 00655
Как осуществить ввод текста в компоненте Label?

=== Как осуществить ввод текста в компоненте Label? ===
Многие программисты задавая такой вопрос получают на него стандартный ответ "используй edit box." На самом же деле этот вопрос вполне решаем, хотя лейблы и не основаны на окне и, соответственно не могут получать фокус ввода и, соответственно не могут получать символы, вводимые с клавиатуры. Давайте рассмотрим шаги, которые были предприняты мной для разработки данного компонента.
Первый шаг, это кнопка, которая может отображать вводимый текст:
type
 TInputButton = class(TButton)
 private
 procedure WmChar (var Msg: TWMChar);
 message wm_Char;
 end;
procedure TInputButton.WmChar (var Msg: TWMChar);
var
 Temp: String;
begin
 if Char (Msg.CharCode) = #8 then
 begin
 Temp := Caption;
 Delete (Temp, Length (Temp), 1);
 Caption := Temp;
 end
 else
 Caption := Caption + Char (Msg.CharCode);
end;
С меткой (label) дела обстоят немного сложнее, так как придётся создать некоторые ухищрения, чтобы обойти её внутреннюю структуру. В принципе, проблему можно решить созданием других скрытых компонент (кстати, тот же edit box). Итак, посмотрим на объявление класса:
type
 TInputLabel = class (TLabel)
 private
 MyEdit: TEdit;
 procedure WMLButtonDown (var Msg: TMessage);
 message wm_LButtonDown;
 protected
 procedure EditChange (Sender: TObject);
 procedure EditExit (Sender: TObject);
 public
 constructor Create (AOwner: TComponent); override;
 end;
Когда метка (label) создана, то она в свою очередь создаёт edit box и устанавливает несколько обработчиков событий для него. Фактически, если пользователь кликает по метке, то фокус перемещается на (невидимый) edit box, и мы используем его события для обновления метки. Обратите внимание на ту часть кода, которая подражает фокусу для метки (рисует прямоугольничек), основанная на API функции DrawFocusRect: 
constructor TInputLabel.Create (AOwner: TComponent);
begin
 inherited Create (AOwner);
 MyEdit := TEdit.Create (AOwner);
 MyEdit.Parent := AOwner as TForm;
 MyEdit.Width := 0;
 MyEdit.Height := 0;
 MyEdit.TabStop := False;
 MyEdit.OnChange := EditChange;
 MyEdit.OnExit := EditExit;
end;
procedure TInputLabel.WMLButtonDown (var Msg: TMessage);
begin
 MyEdit.SetFocus;
 MyEdit.Text := Caption;
 (Owner as TForm).Canvas.DrawFocusRect (BoundsRect);
end;
procedure TInputLabel.EditChange (Sender: TObject);
begin
 Caption := MyEdit.Text;
 Invalidate;
 Update;
 (Owner as TForm).Canvas.DrawFocusRect (BoundsRect);
end;
procedure TInputLabel.EditExit (Sender: TObject);
begin
 (Owner as TForm).Invalidate;
end;
Source: Взято из http://forum.sources.ru
ID: 00587
Как осуществить поиск слов по маске?

=== Как осуществить поиск слов по маске? ===
Может у кого-нибудь есть готовая функция поиска(выборки) слов по маске (с использованием символов '*' и '?').
Такая функция в Дельфи есть: MatchesMask из модуля masks.
Author: MBo 
Source: Взято с Vingrad.ru http://forum.vingrad.ru
ID: 00137
Как осуществить поиск ячейки по её значению?

var
 Rnge: OleVariant;
begin
 Rnge := WS.Cells;
 Rnge := Rnge.Find('Is this text on the sheet?');
 if Pointer(IDispatch(Rnge)) <> nil then
 { The text was found somewhere, so colour it pink }
 Rnge.Interior.Color := clFuchsia;
end;
Source: Delphi Knowledge Base: http://www.baltsoft.com/
ID: 04390
Category:COM
Category:MS Office
Как отбрасывать тень от текста

Вот ещё одну функцию обнаружил DrawShadowText(...), которая позволяет отбрасывать тень от текста на hdc контексте. Большой минус состоит в том, что она появилась только в XP. Чтобы пример заработал, нужно в системной директории найти новую версию библиотеки comctl32.dll и скопировать её в папку с примером. У меня эта библиотека лежала в папке
 C:\WINDOWS\WinSxS\x86_Microsoft.Windows.Common-Controls_6595b64144ccf1df_6.0.0.0_x-ww_1382d70a
unit Unit1;
interface
uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, ExtCtrls, StdCtrls, ComCtrls;
type
 TShadowText = function(
 dc : HDC;
 pszText : PWideChar;
 cch : DWORD;
 prc : PRECT;
 dwFlags : DWORD;
 crText : TColor;
 crShadow : TColor;
 ixOffset : Integer;
 iyOffset : Integer): Integer; stdcall;
type
 TForm1 = class(TForm)
 Image1: TImage;
 TB_PosX: TTrackBar;
 TB_PosY: TTrackBar;
 Label1: TLabel;
 Label2: TLabel;
 procedure TB_PosXChange(Sender: TObject);
 procedure TB_PosYChange(Sender: TObject);
 procedure FormCreate(Sender: TObject);
 procedure FormDestroy(Sender: TObject);
 private
 lib: THandle;
 DrawShadowText: TShadowText;
 procedure ShadowText;
 public
 { Public declarations }
 end;
var
 Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
 lib := LoadLibrary(PChar(GetCurrentDir + '\comctl32.dll'));
 if lib = 0 then
 begin
 MessageBox(Handle, 'Библиотеки нет...', '!', MB_OK or MB_ICONERROR);
 exit;
 end;
 @DrawShadowText := GetProcAddress(lib, 'DrawShadowText');
 if @DrawShadowText = nil then
 begin
 FreeLibrary(lib);
 MessageBox(Handle, 'Функции нет... не та библиотека!', '!', MB_OK or MB_ICONERROR);
 exit;
 end;
 ShadowText;
end;
procedure TForm1.ShadowText;
var
 rect: TRECT;
 text: PWChar;
begin
 if @DrawShadowText = nil then
 exit;
 text := 'forum.sources.ru' + #13 + 'самый лучший форум';
 Image1.Canvas.Brush.Color := clWhite;
 Image1.Canvas.FillRect(Image1.ClientRect);
 rect.Left := Image1.Width div 10;
 rect.Top := Image1.Height div 4;
 rect.Right := Image1.Width;
 rect.Bottom := Image1.Height;
 Image1.Canvas.Font.Size := 20;
 Image1.Canvas.Font.Style := Image1.Canvas.Font.Style + [fsBold];
 Image1.Canvas.Font.Name := 'Times New Roman';
 DrawShadowText(Image1.Canvas.Handle,
 text, Length(text),
 @rect, 1, //-> центрировать текст
 clRed, clBlack,
 TB_PosX.Position, TB_PosY.Position);
end;
procedure TForm1.TB_PosXChange(Sender: TObject);
begin
 ShadowText();
end;
procedure TForm1.TB_PosYChange(Sender: TObject);
begin
 ShadowText();
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
 if lib <> 0 then FreeLibrary(lib);
end;
end.
Author: Deni
Source: http://forum.sources.ru
ID: 03746
Category:Графика
Category:Рисование
Как отключать стили XP для отдельных контролов?

=== Как отключать стили XP для отдельных контролов? ===
Темы должны быть включены и манифест лежать на форме:
unit Unit1;
interface
uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, ExtCtrls, StdCtrls, ComCtrls, XPMan;
type
 TForm1 = class(TForm)
 Button1: TButton;
 Button2: TButton;
 Button3: TButton;
 Button4: TButton;
 Button5: TButton;
 XPManifest1: TXPManifest;
 procedure FormCreate(Sender: TObject);
 private
 procedure Unload2Themes(var M:TMSG); message WM_USER+1;
 public
 { Public declarations }
 end;
var
 Form1: TForm1;
implementation
{$R *.dfm}
function SetWindowTheme(hwnd: HWND; pszSubAppName: LPCWSTR; 
 pszSubIdList: LPCWSTR): HRESULT; stdcall; external 'uxtheme.dll';
procedure TForm1.Unload2Themes(var M: TMSG);
begin
 SetWindowTheme(Button4.Handle, ' ', ' ');
 SetWindowTheme(Button5.Handle, ' ', ' ');
 SetWindowTheme(Form1.Handle, ' ', ' ');
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
 PostMessage(Handle, WM_USER+1, 0, 0)
end;
end.
Author: Krid
Source: Взято из http://forum.sources.ru
ID: 00402
Как отключить комбинацию Alt+Tab

=== Как отключить комбинацию Alt+Tab ===
Если вы хотите зло подшутить над глупым пользователем, а он оказывается не такой уж и глупый, и усиленно пытается переключиться на другую программу, вы можете круто его обломать: 
procedure TurnSysKeysOff;
var
 OldVal: LongInt;
begin
 SystemParametersInfo(97, Word(True), @OldVal, 0);
end;
procedure TurnSysKeysBackOn;
var
 OldVal: LongInt;
begin
 SystemParametersInfo(97, Word(False), @OldVal, 0);
end;
Source: http://delphiworld.narod.ru/
ID: 01480
Как отключить курсор мыши

=== Как отключить курсор мыши ===
// Выключение курсора
procedure TForm1.Button1Click(Sender: TObject);
var
 CState: Integer;
begin
 CState := ShowCursor(True);
 while Cstate >= 0 do
 CState := ShowCursor(False);
end;
// Включение курсора
procedure TForm1.Button2Click(Sender: TObject);
var
 CState: Integer;
begin
 CState := ShowCursor(True);
 while CState < 0 do
 CState := ShowCursor(True);
end;
Source: http://delphiworld.narod.ru/
ID: 02336
Как открыть CD-ROM, если их несколько в системе?

=== Как открыть CD-ROM, если их несколько в системе? ===
// DriveTools 1.0 *
// (c) 1999 Jan Peter Stotz *
// If you find bugs, has ideas for missing featurs, feel free to contact me *
// jpstotz@gmx.de *
// Date last modified: May 22, 1999 *
unit DriveTools;
interface
uses
 Windows, SysUtils, MMSystem;
function CloseCD(Drive: Char): Boolean;
function OpenCD(Drive: Char): Boolean;
implementation
function OpenCD(Drive: Char): Boolean;
var
 Res: MciError;
 OpenParm: TMCI_Open_Parms;
 Flags: DWord;
 S: string;
 DeviceID: Word;
begin
 Result := false;
 S := Drive + ':';
 Flags := mci_Open_Type or mci_Open_Element;
 with OpenParm do
 begin
 dwCallback := 0;
 lpstrDeviceType := 'CDAudio';
 lpstrElementName := PChar(S);
 end;
 Res := mciSendCommand(0, mci_Open, Flags, Longint(@OpenParm));
 if Res <> 0 then
 exit;
 DeviceID := OpenParm.wDeviceID;
 try
 Res := mciSendCommand(DeviceID, MCI_SET, MCI_SET_DOOR_OPEN, 0);
 if Res = 0 then
 exit;
 Result := True;
 finally
 mciSendCommand(DeviceID, mci_Close, Flags, Longint(@OpenParm));
 end;
end;
function CloseCD(Drive: Char): Boolean;
var
 Res: MciError;
 OpenParm: TMCI_Open_Parms;
 Flags: DWord;
 S: string;
 DeviceID: Word;
begin
 Result := false;
 S := Drive + ':';
 Flags := mci_Open_Type or mci_Open_Element;
 with OpenParm do
 begin
 dwCallback := 0;
 lpstrDeviceType := 'CDAudio';
 lpstrElementName := PChar(S);
 end;
 Res := mciSendCommand(0, mci_Open, Flags, Longint(@OpenParm));
 if Res <> 0 then
 exit;
 DeviceID := OpenParm.wDeviceID;
 try
 Res := mciSendCommand(DeviceID, MCI_SET, MCI_SET_DOOR_CLOSED, 0);
 if Res = 0 then
 exit;
 Result := True;
 finally
 mciSendCommand(DeviceID, mci_Close, Flags, Longint(@OpenParm));
 end;
end;
end.
Source: Взято из http://forum.sources.ru
ID: 01399
Как открыть HTML-файл в стандартном браузере?

//-------------------------------------------------------------
// HTMLView - пример, показывающий, как открыть HTM/HTML файл в браузере,
// установленном по умолчанию.
// Пример использует Win32API функцию ShellExecute с параметром 'open',
// которая заставляет систему найти в реестре приложение, связанное
// с расширением HTM/HTML.
//-------------------------------------------------------------
unit HTMLUnit;
interface
uses
 Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
 StdCtrls, ShellAPI;
type
 TForm1 = class(TForm)
 OpenDialog1: TOpenDialog;
 Button1: TButton;
 Button2: TButton;
 Label1: TLabel;
 procedure Button1Click(Sender: TObject);
 procedure Button2Click(Sender: TObject);
 private
 { Private declarations }
 public
 { Public declarations }
 end;
var
 Form1 : TForm1;
 HTMLFile : Array[0..79] of Char;
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
begin
 if OpenDialog1.Execute then
 begin
 // получаем имя выбранного файла
 StrPCopy(HTMLFile, OpenDialog1.FileName);
 // разрешаем пользователю открывать (т.е. просматривать) его в браузере
 Button2.Enabled := True;
 end;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
 // запускаем функцию ShellExecute с параметром 'open'
 ShellExecute(Handle, 'open', HTMLFile, nil, nil, SW_SHOWNORMAL);
end;
end.
Source: http://forum.sources.ru
ID: 03509
Category:Связь
Category:WebBrowser
Как открыть диалог Add printer?

=== Как открыть диалог Add printer? ===
добавьте ShellAPI в USES
ShellExecute(handle, nil, 'rundll32.exe', 'shell32.dll,SHHelpShortcuts_RunDLL AddPrinter', , SW_SHOWNORMAL); 
Source: Взято из http://forum.sources.ru
ID: 01200
Как открыть диалог добавления принтера

// добавьте ShellAPI в USES
begin
 ShellExecute(handle, nil, 'rundll32.exe',
 'shell32.dll,SHHelpShortcuts_RunDLL AddPrinter',
 , SW_SHOWNORMAL);
end;
Source: Взято с http://delphiworld.narod.ru
ID: 03217
Category:Принтер
Как открыть диалог свойств аудио?

=== Как открыть диалог свойств аудио? ===
WinExec('rundll32.exe shell32.dll,Control_RunDLL mmsys.cpl,,2', SW_SHOWNORMAL); 
Author: P. Below
Source: Взято с сайта http://www.swissdelphicenter.ch/en/tipsindex.php
ID: 01201
Как открыть диалог смены системного времени?

=== Как открыть диалог смены системного времени? ===
uses 
 Shellapi; 
procedure TForm1.Button1Click(Sender: TObject); 
begin 
 ShellExecute(Handle, 'open', 'control', 'date/time', nil, SW_SHOW); 
end; 
Source: Взято с сайта http://www.swissdelphicenter.ch/en/tipsindex.php
ID: 01202
Как открыть диалог создания ярлыка?

=== Как открыть диалог создания ярлыка? ===
uses 
 registry, shellapi; 
function Launch_CreateShortCut_Dialog(Directory: string): Boolean; 
var 
 reg: TRegistry; 
 cmd: string; 
begin 
 Result := False; 
 reg := TRegistry.Create; 
 try 
 reg.Rootkey := HKEY_CLASSES_ROOT; 
 if reg.OpenKeyReadOnly('.LNK\ShellNew') then 
 begin 
 cmd := reg.ReadString('Command'); 
 cmd := StringReplace(cmd, '%1', Directory, []); 
 Result := True; 
 WinExec(PChar(cmd), SW_SHOWNORMAL); 
 end 
 finally 
 reg.Free; 
 end; 
end; 
{ Example } 
procedure TForm1.Button1Click(Sender: TObject); 
begin 
 Launch_CreateShortCut_Dialog('c:\temp'); 
end; 
Source: Взято с сайта http://www.swissdelphicenter.ch/en/tipsindex.php
ID: 01199
Как открыть индексированную таблицу dBase, если отсутствует файл индекса

=== Как открыть индексированную таблицу dBase, если отсутствует файл индекса ===
процедуру для физического удаления признака индексации в самом dbf-файле и после её применения добавлять индексы заново.
Для этого в заголовок файла dbf по смещению 28(dec) записываешь 0.
По другому никак не выходит(я долго бился)- вот для Paradox таблиц все Ok.
С помощью BDE Callbacks. Примеp для Delphi 2.0, на первом не проверял:
unit Callback;
interface
uses BDE, Classes, Forms, DB, DBTables;
type
 TForm1 = class(TForm)
 Table1: TTable;
 procedure FormCreate(Sender: TObject);
 procedure FormDestroy(Sender: TObject);
 private
 CBack: TBDECallback; // определение BDE CallBack
 CBBuf: CBInputDesc; // просто буфер
 function CBFunc(CBInfo: Pointer): CBRType; // Callback-функция
 public
 end;
var
 Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.FormCreate(Sender: TObject);
begin
 Session.Open; // В это время сессия ещё не открыта
 CBack := TBDECallback.Create(Session {Hапример}, nil, cbINPUTREQ, @CBRegBuf,
 SizeOf(CBBuf), CBFunc, False); // Определили Callback
 Table1.Open;
 //^^^^^^^^^^^ - здесь возможна ошибка с индексом, etc.
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
 CBack.Free; // Освобождаем CallBack
end;
function TForm1.CBFunc(CBInfo: Pointer): CBRType;
begin
 with PCBInputDesc(CBInfo)^ do
 case eCbInputId of
 cbiMDXMissing {, cbiDBTMissing - можно ещё и очищать BLOB-поля}:
 begin
 iSelection := 3; // Hомеp варианта ответа (1-й - открыть только
 // для чтения, 2-й - не открывать, 3-й - отсоединить индекс).
 // Возможный источник неприятностей: а вдруг в последующих версиях
 // BDE номеpа будут другими?
 Result := cbrCHKINPUT; // Обрабатывать введённый ответ
 end;
 end;
end;
end.
PS: конечно, это лишь примеp, делающий минимум необходимого. В рамках данного письма невозможно дать какое-то описание BDE Callbacks. Информацию я взял из BDE32.HLP, BDE.INT и DB.PAS. В VCL.HLP совсем ничего нет по этому поводу.
Вообще, руки бы отоpвал тем, кто писал справку по Дельфям: я неделю мучался с сабжем, пока случайно не набрёл на Callbacks.
Author: Nomadic
Source: http://delphiworld.narod.ru/
ID: 02716
Как открыть меню кнопки Пуск?

=== Как открыть меню кнопки Пуск? ===
procedure TForm1.Button1Click(Sender: TObject); 
begin 
 SendMessage(Self.Handle, WM_SYSCOMMAND, SC_TASKLIST, 0); 
end;
Source: Взято из http://forum.sources.ru
ID: 01794
Как открыть окно настройки даты и времени Windows?

=== Как открыть окно настройки даты и времени Windows? ===
ShellExecute(Handle, 'Open', 'Rundll32.exe', 'shell32.dll,Control_RunDLL TIMEDATE.CPL', PChar(Getsystemdir), 0); 
Author: Vit (www.delphist.com, www.drkb.ru, www.unihighlighter.com, www.nevzorov.org)
Source: Взято с Vingrad.ru http://forum.vingrad.ru
ID: 01646
Как открыть первую ветвь TreeView?

=== Как открыть первую ветвь TreeView? ===
Как программным путем открыть первую ветвь и в ней выделить первый элемент?
procedure TForm1.Button1Click(Sender: TObject);
begin
 TreeView1.Items[0].Expand(False);
 TreeView1.Items[0].Selected := True;
 TreeView1.SetFocus;
end;
Author: Vit (www.delphist.com, www.drkb.ru, www.unihighlighter.com, www.nevzorov.org)
Source: Взято с Vingrad.ru http://forum.vingrad.ru
ID: 00621
Как отлаживать консольные приложения?

При помощи Delphi вы можете писать консольные приложения, несмотря на то, что многие считают это несущественным.
Когда вы запускаете консольную программу в отладчике Delphi, он автоматически открывает консольное окно ("DOS command prompt"), где вы можете увидеть вывод, например, команды WriteLn().
Kylix так не делает автоматически, поэтому может показаться, что отладка консольных приложений невозможна.
Но если вы откроете диалог Run - Parameters, там есть поле "Use Launcher Application", в котором указано xconsole. Просто включите эту опцию и вперед!
Source: http://www.swissdelphicenter.ch/en/tipsindex.php
ID: 04618
Category:Kylix
Category:Linux
Как отличить нажат правый или левый CTRL?

=== Как отличить нажат правый или левый CTRL? ===
Для того, чтобы отличить нажат левый или правый Ctrl, нужно перехватить событие WM_KEYDOWN. В зависимости от состояния 24-ого бита параметра LParam нажата правая или левая клавиша. 
public
 procedure WMKEYDOWN(var msg: TMessage); message WM_KEYDOWN;
end;
var
 Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.WMKEYDOWN(var msg: TMessage);
begin
 if (msg.LParam and (255 shl 16)) shr 16 <> 29 then
 Exit;
 if msg.LParam and (1 shl 24) > 0 then
 Form1.Caption := 'Right'
 else
 Form1.Caption := 'Left';
end;
Source: http://delphiworld.narod.ru/
ID: 01476
Как отличить нажат правый или левый SHIFT?

=== Как отличить нажат правый или левый SHIFT? ===
if ((Word(GetKeyState(VK_LSHIFT)) and $8000) <> 0) then
begin
end;
if ((Word(GetKeyState(VK_RSHIFT)) and $8000) <> 0) then
begin
end;
работает под Win NT/2000, но не работает под Win95.
Author: CHERRY
Source: Взято с Vingrad.ru http://forum.vingrad.ru
ID: 01473
----
В 95 катит следующее:
RSHIFT = 36h;
LSHIFT = 2Ah;
asm
 in al, 60h
 cmp al, 36h
 jne @@exit
 mov tt,1
 @@exit:
end;
if tt = 1 then ShowMessage('Right Shift'); 
Author: Baa
Source: Взято с Vingrad.ru http://forum.vingrad.ru
ID: 01474
----
procedure TDecEditForm.Memo1KeyPress(Sender: TObject; var Key: Char);
var
 s: string;
 RL: Byte;
begin
 if Key = Chr(VK_RETURN) then
 begin
 if (GetVersion() and $80000000) = 0 then
 begin
 // WIN NT/2000
 if ((Word(GetKeyState(VK_LSHIFT)) and $8000) <> 0) then
 begin
 end;
 if ((Word(GetKeyState(VK_RSHIFT)) and $8000) <> 0) then
 begin
 end;
 end
 else
 begin
 // WIN 9.x
 asm
 mov ah,2
 int $16
 mov RL,al
 end;
 if 1 = (RL and 1) then // ПРАВЫЙ SHIFT НАЖАТ+ENTER
 begin
 end;
 if 2 = (RL and 2) then // ЛЕВЫЙ SHIFT НАЖАТ+ENTER
 begin
 end;
 end;
 end;
end;
end;
Author: CHERRY
Source: Взято с Vingrad.ru http://forum.vingrad.ru
ID: 01475
Как отловить CLX форму?

{
 Capturing a CLX form is easy, once you know.
 It took me a little time to find out, so I'm giving the knowledge to help others :
}
type
 TFormCapturable = class(TForm)
 public
 procedure PrintOne;
 end;
var
 FormCapturable: TFormCapturable;
implementation
uses
 Qt;
procedure TFormCapturable.PrintOne;
var
 aBitmap : TBitmap;
 aWinHandle : QWidgetH;
 aWinId : Cardinal;
 x, y, w, h : integer;
begin
 // create a new bitmap to hold the captured screen
 aBitMap := TBitmap.Create;
 try
 // get a handle on the desktop
 aWinHandle := QApplication_desktop;
 // get the Id from the desktop handle
 aWinId := QWidget_winId( aWinHandle);
 // get the position and size of the windows
 x := Self.Left;
 y := Self.Top;
 w := Self.Width;
 h := Self.Height;
 // capture the window into the bitmap's pixmap
 QPixmap_grabWindow( aBitmap.Handle, aWinId, x, y, w, h);
 // save the bitmap
 aBitMap.SaveToFile( 'c:\temp\test.bmp');
 finally
 // don't forget to kill the bitmap after use.
 FreeAndNil( aBitMap);
 end;
end;
Source: http://www.swissdelphicenter.ch/en/tipsindex.php
ID: 04614
Category:Kylix