nyuuzyou/wikis huggingface dataset:
Database index out of date error

=== Database index out of date error ===
This is a BDE/Paradox error message. For newbies, BDE error messages are daunting, cryptic messages. Actually, even for seasoned veterans, they can sometimes be real "stumpers." Unfortunately, there's no real good reference available that I know of, so all I can offer with respect to this error message is my experience.
The "Index out of date" message can mean a couple of things:
# One of the more common causes of this error is one in which you have a couple of copies of a table existing on your network or machine. For instance, when I develop applications, I have my application tables residing in my development system, then have copies of them on my network. When I need to update my tables, I usually do the updates in my development system, then copy them over to my deployment system on the network. I've run into this exact error when I've copied only the table (.DB) file and not its accompanying index file(s) (.PX, .X01, .Y01, etc) as well. You see, when you update a table by changing it in any way, its index files are also resynched to reflect the changes. So if you copy just the table to a new place on your system and don't include its family members, you'll index files that aren't in synch with your table. Okay that's one cause.
# The next cause could be just this: One of your indexes is corrupt. This could be due to sector errors on your hard disk, or the rare, but possible, direct corruption of an index. This usually happens if your program abended while performing an update to a table with an index of some sort. In that case, the index doesn't get updated.
But in any case, the only way I know of to correct the problem is to do the following:
# Open up your table in Database Desktop.
# Restructure it.
# Define/Rebuild all your indexes.
# Save the file.
Source: Взято с Delphi Knowledge Base: http://www.baltsoft.com/
ID: 02573
----
Некоторое время назад у меня также была масса ошибок типа 'index out of date' и даже искажение данных. После продолжительного исследования я выяснил причину, она оказалось в различных установках Paradox Language в BDE (v1 и V3) на странице Driver и System в утилите конфигурирования BDE. Я не обратил внимание на установки на странице System одной из рабочих станций, и получил искажение данных.
Source: Взято с http://delphiworld.narod.ru
ID: 02574
DbGrid со свойствами Col и Row

=== DbGrid со свойствами Col и Row ===
{
Код улучшенного TDBGrid, имеющего свойства Col, Row и Canvas и метод CellRect. Это чрезвычайно
полезно в случае, если вы, к примеру, хотите получить выпадающий список на месте редактируемой
пользователем ячейки.
}
unit VUBComps;
interface
uses
 SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
 Forms, Dialogs, Grids, DBGrids, DB, Menus;
type
 TDBGridVUB = class(TDBGrid)
 private
 { Private declarations }
 protected
 { Protected declarations }
 public
 property Canvas;
 function CellRect(ACol, ARow: Longint): TRect;
 property Col;
 property Row;
 procedure Register;
 end;
implementation
procedure Register;
begin
 RegisterComponents('VUBudget', [TDBGridVUB]);
end;
function TDBGridVUB.CellRect(ACol, ARow: Longint): TRect;
begin
 Result := inherited CellRect(ACol, ARow);
end;
end.
Source: Взято с http://delphiworld.narod.ru
ID: 03050
Category:Базы данных
Category:DBGrid
Dec → Hex

=== Dec ---> Hex ===
function dec2hex(value: dword): string[8];
const
 hexdigit = '0123456789ABCDEF';
begin
 while value <> 0 do
 begin
 dec2hex := hexdigit[succ(value and $F)];
 value := value shr 4;
 end;
 if dec2hex = then dec2hex := '0';
end;
Source: Взято с http://delphiworld.narod.ru
ID: 00220
Delphi 4 виснут при запуске. Видеокарта S3 Virge?

===== Delphi 4 виснут при запуске. Видеокарта S3 Virge? =====
 REGEDIT4
 [HKEY_CURRENT_CONFIG\Display\Settings]
 "BusThrottle"="on"
Если не помогает, то попробуйте добавить в system.ini:
 [Display]
 "BusThrottle"="On"
Эта проблема устранена в Delphi 4sp3.
Надо уменьшить степень аппаратного ускорения графики в свойствах компьютера
Author: Vit (www.delphist.com, www.drkb.ru, www.unihighlighter.com, www.nevzorov.org)
Source: http://blackman.wp-club.net/
ID: 00002
Delphi 7. Отличия и особенности.

=== Delphi 7. Отличия и особенности. ===
Отличий немного, а стоит ли переходить это скорее всего надо по обстоятельствам решать. 
1) Исчезли компоненты NetMaster и изменился репортинг - если в поддерживаемых/разрабатываемых программах они используются то переход будет не столь простым
2) Очень многие третьесторонние библиотеки пока не имеют версий для 7х Дельфи - следовательно если они используются то надо ждать
3) Очень много добавилось для поддержки Web/Internet/Soap/XML и т.п. если используются новые интернет технологии то быстрый переход на Дельфи 7 может быть весьма оправдан.
4) Если используется Дельфи для построения стандартных виндовых приложений то отличий можно сказать что почти нет, переход либо можно не делать, либо сделать - так как он будет очень простой.
5) Если Вы разрабатываете компоненты, то естественно нужна поддержка и этой версии
и кстати ещё исчезли компоненты TClientSocket и TServerSocket 
См. также другие статьи:
* Delphi 7 and FastNet Components
* Проблема использования компонентов в D6/7 от предыдущих версий
* Прозрачность в Delphi 6
* Где TServerSocket и TClientSocket в Delphi 7? 
Author: Radmin
Source: http://forum.vingrad.ru
ID: 00062
Delphi 7 and FastNet Components

=== Delphi 7 and FastNet Components ===
Where are the FastNet Components in Delphi 7?
The Fastnet components are no longer bundled with Delphi. It appears Netmasters does have a version compatible with Delphi 7 which can be purchased at: http://www.netmastersllc.com/ 
ID: 00349
Delphi Run-Time Error Codes

=== Delphi Run-Time Error Codes ===
Delphi's online help documentation seems to miss the run-time error codes. I usually looked them up in my old Borland Pascal for Windows help file - now they are here for fast access: 
 1 Invalid function number 
 2 File not found 
 3 Path not found 
 4 Too many open files 
 5 File access denied 
 6 Invalid file handle 
 12 Invalid file access code 
 15 Invalid drive number 
 16 Cannot remove current directory 
 17 Cannot rename across drives 
 100 Disk read error 
 101 Disk write error 
 102 File not assigned 
 103 File not open 
 104 File not open for input 
 105 File not open for output 
 106 Invalid numeric format 
 200 Division by zero 
 201 Range check error 
 202 Stack overflow error 
 203 Heap overflow error 
 204 Invalid pointer operation 
 205 Floating point overflow 
 206 Floating point underflow 
 207 Invalid floating point operation 
 210 Object not initialized 
 211 Call to abstract method 
 212 Stream registration error 
 213 Collection index out of range 
 214 Collection overflow error 
 215 Arithmetic overflow error 
 216 General protection fault 
Source: http://www.delphifaq.com
ID: 00013
Category:Справочники
Detect if a USB device is connected or disconnected?

=== Detect if a USB device is connected or disconnected? ===
unit U_Usb;
interface
uses
 Windows, Messages, SysUtils, Classes, Forms;
type
 PDevBroadcastHdr = ^DEV_BROADCAST_HDR;
 DEV_BROADCAST_HDR = packed record
 dbch_size: DWORD;
 dbch_devicetype: DWORD;
 dbch_reserved: DWORD;
 end;
 PDevBroadcastDeviceInterface = ^DEV_BROADCAST_DEVICEINTERFACE;
 DEV_BROADCAST_DEVICEINTERFACE = record
 dbcc_size: DWORD;
 dbcc_devicetype: DWORD;
 dbcc_reserved: DWORD;
 dbcc_classguid: TGUID;
 dbcc_name: short;
 end;
const
 GUID_DEVINTERFACE_USB_DEVICE: TGUID = '{A5DCBF10-6530-11D2-901F-00C04FB951ED}';
 DBT_DEVICEARRIVAL = $8000; // system detected a new device
 DBT_DEVICEREMOVECOMPLETE = $8004; // device is gone
 DBT_DEVTYP_DEVICEINTERFACE = $00000005; // device interface class
type
 TComponentUSB = class(TComponent)
 private
 FWindowHandle: HWND;
 FOnUSBArrival: TNotifyEvent;
 FOnUSBRemove: TNotifyEvent;
 procedure WndProc(var Msg: TMessage);
 function USBRegister: Boolean;
 protected
 procedure WMDeviceChange(var Msg: TMessage); dynamic;
 public
 constructor Create(AOwner: TComponent); override;
 destructor Destroy; override;
 published
 property OnUSBArrival: TNotifyEvent read FOnUSBArrival write FOnUSBArrival;
 property OnUSBRemove: TNotifyEvent read FOnUSBRemove write FOnUSBRemove;
 end;
implementation
constructor TComponentUSB.Create(AOwner: TComponent);
begin
 inherited Create(AOwner);
 FWindowHandle := AllocateHWnd(WndProc);
 USBRegister;
end;
destructor TComponentUSB.Destroy;
begin
 DeallocateHWnd(FWindowHandle);
 inherited Destroy;
end;
procedure TComponentUSB.WndProc(var Msg: TMessage);
begin
 if (Msg.Msg = WM_DEVICECHANGE) then 
 begin
 try
 WMDeviceChange(Msg);
 except
 Application.HandleException(Self);
 end;
 end
 else
 Msg.Result := DefWindowProc(FWindowHandle, Msg.Msg, Msg.wParam, Msg.lParam);
end;
procedure TComponentUSB.WMDeviceChange(var Msg: TMessage);
var
 devType: Integer;
 Datos: PDevBroadcastHdr;
begin
 if (Msg.wParam = DBT_DEVICEARRIVAL) or (Msg.wParam = DBT_DEVICEREMOVECOMPLETE) then 
 begin
 Datos := PDevBroadcastHdr(Msg.lParam);
 devType := Datos^.dbch_devicetype;
 if devType = DBT_DEVTYP_DEVICEINTERFACE then 
 begin // USB Device
 if Msg.wParam = DBT_DEVICEARRIVAL then 
 begin
 if Assigned(FOnUSBArrival) then
 FOnUSBArrival(Self);
 end 
 else 
 begin
 if Assigned(FOnUSBRemove) then
 FOnUSBRemove(Self);
 end;
 end;
 end;
end;
function TComponentUSB.USBRegister: Boolean;
var
 dbi: DEV_BROADCAST_DEVICEINTERFACE;
 Size: Integer;
 r: Pointer;
begin
 Result := False;
 Size := SizeOf(DEV_BROADCAST_DEVICEINTERFACE);
 ZeroMemory(@dbi, Size);
 dbi.dbcc_size := Size;
 dbi.dbcc_devicetype := DBT_DEVTYP_DEVICEINTERFACE;
 dbi.dbcc_reserved := 0;
 dbi.dbcc_classguid := GUID_DEVINTERFACE_USB_DEVICE;
 dbi.dbcc_name := 0;
 r := RegisterDeviceNotification(FWindowHandle, @dbi,
 DEVICE_NOTIFY_WINDOW_HANDLE
 );
 if Assigned(r) then Result := True;
end;
end.
Source: Взято с сайта http://www.swissdelphicenter.ch/en/tipsindex.php
ID: 01354
Disable CTRL+ALT+DELETE under XP

=== Disable CTRL+ALT+DELETE under XP ===
procedure DisableTaskMgr(bTF: Boolean);
var
 reg: TRegistry;
begin
 reg := TRegistry.Create;
 reg.RootKey := HKEY_CURRENT_USER;
 reg.OpenKey('Software', True);
 reg.OpenKey('Microsoft', True);
 reg.OpenKey('Windows', True);
 reg.OpenKey('CurrentVersion', True);
 reg.OpenKey('Policies', True);
 reg.OpenKey('System', True);
 if bTF = True then
 begin
 reg.WriteString('DisableTaskMgr', '1');
 end
 else if bTF = False then
 begin
 reg.DeleteValue('DisableTaskMgr');
 end;
 reg.CloseKey;
end;
// Example Call:
procedure TForm1.Button1Click(Sender: TObject);
begin
 DisableTaskMgr(True);
end;
Source: Взято с сайта http://www.swissdelphicenter.ch/en/tipsindex.php
ID: 02057
Drag and Drop - как использовать ItemAtPos для получения элемента DirListBox

=== Drag and Drop - как использовать ItemAtPos для получения элемента DirListBox ===
Просто сохраните результат функции ItematPos в переменной формы, и затем используйте эту переменную в обработчике ListBoxDragDrop. Пример:
FDragItem := ItematPos(X, Y, True);
if FDragItem >= 0 then
 BeginDrag(false);
...
procedure TForm1.ListBoxDragDrop(Sender, Source: TObject; X, Y: Integer);
begin
 if Source is TDirectoryListBox then
 ListBox.Items.Add(TDirectoryListBox(Source).GetItemPath(FDragItem));
end;
Source: http://delphiworld.narod.ru/
ID: 00701
Category:VCL
Category:DragAndDrop
Drag and Drop TImage

=== Drag and Drop TImage ===
Вот рабочий пример. Расположите на форме панель побольше, скопируйте и измените приведенный код так, чтобы изображение загружалось из ВАШЕГО каталога Delphi.
procedure TForm1.Panel1DragDrop(Sender, Source: TObject; X, Y: Integer);
begin
 with Source as TImage do
 begin
 Left := X;
 Top := Y;
 end;
end;
procedure TForm1.Panel1DragOver(Sender, Source: TObject; X, Y: Integer;
 State: TDragState; var Accept: Boolean);
begin
 Accept := Source is TImage;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
 with TImage.Create(Self) do
 begin
 Parent := Panel1;
 AutoSize := True;
 Picture.LoadFromFile('D:\DELPHI\IMAGES\CHIP.BMP');
 DragMode := dmAutomatic;
 OnDragOver := Panel1DragOver;
 OnDragDrop := Panel1DragDrop;
 end;
end;
Source: http://delphiworld.narod.ru/
ID: 00690
Category:VCL
Category:DragAndDrop
Drag and Drop c Explorer

=== Drag and Drop c Explorer ===
interface
uses
 Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
 Dialogs, ComCtrls;
type
 TForm1 = class(TForm)
 procedure FormCreate(Sender: TObject);
 private
 { Private declarations }
 procedure FileIsDropped(var Msg: TMessage); message WM_DropFiles;
 public
 { Public declarations }
 end;
var
 Form1: TForm1;
implementation
uses
 shellapi;
{$R *.DFM}
procedure TForm1.FormCreate(Sender: TObject);
begin
 DragAcceptFiles(Handle, True);
end;
procedure TForm1.FileIsDropped(var Msg: TMessage);
var
 hDrop: THandle;
 fName: array[0..254] of CHAR;
 NumberOfFiles: INTEGER;
 fCounter: INTEGER;
 Names: string;
begin
 hDrop := Msg.WParam;
 NumberOfFiles := DragQueryFile(hDrop, -1, fName, 254);
 Names := ;
 for fCounter := 1 to NumberOfFiles do
 begin
 DragQueryFile(hDrop, fCounter, fName, 254);
 // Здесь вы получаете один к одному имя вашего файла
 Names := Names + #13#10 + fName;
 end;
 ShowMessage('Бросаем ' + IntToStr(NumberOfFiles) + ' файла(ов) : ' + Names);
 DragFinish(hDrop);
end;
end.
Source: http://delphiworld.narod.ru/
ID: 00691
----
{ Так можно заставить окно принимать файлы, перетаскиваемые из проводника }
{ ОБЯЗАТЕЛЬНО ПОМЕСТИТЕ В СЕКЦИЮ PRIVATE СТРОКИ
procedure CreateParams(var Params: TCreateParams); override;
procedure WMDropFiles(var Message: TWMDropFiles); message WM_DROPFILES;
и не забудьте - ShellAPI поместить в uses }
procedure TForm1.CreateParams(var Params: TCreateParams);
begin
 inherited CreateParams(Params);
 { сделаем окно способным принимать файлы }
 Params.ExStyle := Params.ExStyle or WS_EX_ACCEPTFILES;
end;
procedure TForm1.WMDropFiles(var Message: TWMDropFiles);
var
 aFile: array[0..255] of Char;
 //FilesCount : Integer;
begin
 inherited;
 { так можно узнать сколько файлов перетягивается }
 // FilesCount := DragQueryFile(Message.drop, $FFFFFFFF, nil, 0);
 begin
 { здесь можно поставить цикл открытия всех перетаскиваемых файлов
 for N := 0 to FilesCount - 1 do DragQueryFile(Message.drop, N, aFile, 256);
 а в данном случае открывается только первый файл в списке }
 DragQueryFile(Message.drop, 0, aFile, 256);
 Memo1.Lines.LoadFromFile(aFile);
 end;
 DragFinish(Message.Drop);
end;
procedure TForm1.FormCreate(Sender: TObject); {Form1.OnCreate}
begin
 { сделаем окно неравнодушным к пролетающим над ним файлам }
 DragAcceptFiles(Handle, True);
end;
Source: http://delphiworld.narod.ru/
ID: 00692
Category:VCL
Category:DragAndDrop
Category:Файлы
Drag and Drop в TTreeView

=== Drag and Drop в TTreeView ===
unit Unit1;
interface
uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 ComCtrls;
type
 TForm1 = class(TForm)
 TreeView1: TTreeView;
 procedure TreeView1DragDrop(Sender, Source: TObject; X, Y: Integer);
 procedure TreeView1DragOver(Sender, Source: TObject; X, Y: Integer;
 State: TDragState; var Accept: Boolean);
 private
 procedure MoveNode(TargetNode, SourceNode: TTreeNode);
 end;
var
 Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.MoveNode(TargetNode, SourceNode: TTreeNode);
var
 NodeTmp: TTreeNode;
 I: Integer;
begin
 with TreeView1 do
 begin
 // проверяем, является ли целевой элемент предком перетаскиваемого
 NodeTmp := TargetNode.Parent;
 while Assigned(NodeTmp) do
 if NodeTmp = SourceNode then
 Abort
 else
 NodeTmp := NodeTmp.Parent;
 // копируем перетаскиваемый элемент в новосозданный
 NodeTmp := Items.AddChild(TargetNode, SourceNode.Text);
 NodeTmp.Data := SourceNode.Data;
 for I := 0 to SourceNode.Count - 1 do
 MoveNode(NodeTmp, SourceNode.Item[I]);
 Selected := NodeTmp;
 TopItem := NodeTmp.getPrev;
 TargetNode.Expand(True);
 end;
end;
procedure TForm1.TreeView1DragDrop(Sender, Source: TObject; X, Y: Integer);
var
 TargetNode, SourceNode: TTreeNode;
begin
 with TreeView1 do
 begin
 TargetNode := GetNodeAt(X, Y);
 SourceNode := Selected;
 if (TargetNode = SourceNode) or (TargetNode = nil) then
 begin
 EndDrag(False);
 Exit;
 end;
 MoveNode(TargetNode, SourceNode);
 SourceNode.Free;
 end;
end;
procedure TForm1.TreeView1DragOver(Sender, Source: TObject; X, Y: Integer;
 State: TDragState; var Accept: Boolean);
var
 SourceNode, TargetNode, NodeTmp: TTreeNode;
begin
 if Sender = TreeView1 then
 try
 // скроллинг дерева при перетаскивании
 if Y > TreeView1.Height - 10 then
 begin
 TreeView1.TopItem := TreeView1.TopItem.getNext;
 Sleep(100); // пауза
 end else
 if Y < 10 then
 begin
 TreeView1.TopItem := TreeView1.TopItem.getPrev;
 Sleep(100); // пауза
 end;
 TargetNode := TreeView1.GetNodeAt(X, Y);
 SourceNode := TreeView1.Selected;
 if (TargetNode = nil) or (TargetNode = SourceNode) then Abort;
 Accept := True;
 // проверяем, является ли целевой элемент предком перетаскиваемого
 NodeTmp := TargetNode.Parent;
 while Assigned(NodeTmp) do
 if NodeTmp = SourceNode then
 Abort
 else
 NodeTmp := NodeTmp.Parent;
 except
 Accept := False;
 end;
end;
end.
Author: Smike
Source: Взято из http://forum.sources.ru
ID: 00374
----
== См. также ==
* Как реализовать Drag and Drop в TTreeView
Category:VCL
Category:DragAndDrop
Category:TreeView
Drag and Drop из RichEdit

=== Drag and Drop из RichEdit ===
var
 Form1: TForm1;
 RichCopy: string;
 Transfering: Boolean;
implementation
{$R *.DFM}
procedure TForm1.RichEdit1MouseDown(Sender: TObject; Button: TMouseButton;
 Shift: TShiftState; X, Y: Integer);
begin
 if Length(RichEdit1.SelText) > 0 then 
 begin
 RichCopy: = RichEdit1.SelText;
 Transfering := True;
 end;
end;
procedure TForm1.ListBox1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
begin
 if Transfering then
 begin
 Transfering := False;
 ListBox1.Items.Add(RichCopy);
 end;
end;
Source: http://delphiworld.narod.ru/
ID: 00702
Category:VCL
Category:DragAndDrop
Category:RichEdit
Drag and Drop из TScrollBox

=== Drag and Drop из TScrollBox ===
Вы можете написать общую функцию для отдельного TImage, и назначать этот метод для каждого динамически создаваемого TImage, примерно так:
procedure TForm1.GenericMouseDown(Sender: TObject; Button: TMouseButton;
 Shift: TShiftState; X, Y: Integer);
begin
 TImage(Sender).BeginDrag(False);
 { что-то другое, что вы хотели бы сделать }
end;
{....}
UmpteenthDynImage := TImage.Create(dummyImage);
UmpteenthDynImage.MouseDown := TForm1.GenericMouseDown;
Это должно быть синтаксически закрытым. Вы можете просто назначать каждый динамический объект методу GenericMouseDown, и они все им будут пользоваться. Предок dummyImage позволяет легко разрушать все динамические объекты обычным деструктором dummyImage. 
Source: http://delphiworld.narod.ru/
ID: 00703
Category:VCL
Category:DragAndDrop
Category:ScrollBox
Drag and Drop несколько элементов в TListView

=== Drag and Drop несколько элементов в TListView ===
{ ListView1.DragMode := dmAutomatic } 
procedure TForm1.ListView1DragDrop(Sender, Source: TObject; X, Y: Integer); 
var 
 DragItem, DropItem, CurrentItem, NextItem: TListItem; 
begin 
 if Sender = Source then 
 with TListView(Sender) do 
 begin 
 DropItem := GetItemAt(X, Y); 
 CurrentItem := Selected; 
 while CurrentItem <> nil do 
 begin 
 NextItem := GetNextItem(CurrentItem, SdAll, [IsSelected]); 
 if DropItem = nil then
 DragItem := Items.Add 
 else 
 DragItem := Items.Insert(DropItem.Index); 
 DragItem.Assign(CurrentItem); 
 CurrentItem.Free; 
 CurrentItem := NextItem; 
 end; 
 end; 
end; 
procedure TForm1.ListView1DragOver(Sender, Source: TObject; X, Y: Integer; 
 State: TDragState; var Accept: Boolean); 
begin 
 Accept := (Sender = ListView1); 
end;
Source: http://delphiworld.narod.ru/
ID: 00704
Category:VCL
Category:DragAndDrop
Category:ListView
Drag and Drop с минимизированным приложением

=== Drag and Drop с минимизированным приложением ===
В ситуации, когда ваше приложение минимизировано, необходимо понимать, что окно главной формы НЕ работает. Фактически, если вы проверяете окно главной формы, и обнаруживаете, что оно имеет прежний размер, не удивляйтесь, оно просто невидимо. Иконка минимизированного Delphi-приложения принадлежит объекту Application, чей дескриптор окна - Application.Handle. 
Вот некоторый код из моей программы, который с помощью компонента CheckBox проверяет возможность принятия перетаскиваемых файлов минимизированным приложением:
procedure TForm1.WMDropFiles(var Msg: TWMDropFiles);
{ Вызывается только если TApplication НЕ получает drag/drop }
begin
 RecordDragDrop(Msg.Drop, False); { внутренняя функция }
 Msg.Result := 0;
end;
procedure TForm1.AppOnMessage(var Msg: TMsg; var Handled: Boolean);
{ когда активно, получаем сообщения WM_DROPFILES, посылаемые
форме ИЛИ минимизированному приложению }
begin
 if Msg.message = WM_DROPFILES then
 begin
 RecordDragDrop(Msg.wParam, Msg.hWnd = Application.Handle);
 Handled := True;
 end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
 DragAcceptFiles(Handle, True);
 DragAcceptFiles(Application.Handle, False);
 Application.OnMessage := nil;
end;
OK? Первоначально вызов DragAcceptFiles работает с дескриптором главной формы...
Source: http://delphiworld.narod.ru/
ID: 00705
Category:VCL
Category:DragAndDrop
Category:Файлы
Drag and Drop со списками

=== Drag and Drop со списками ===
{ 
 This example shows how to drag&drop within a TListBox. 
 The Demo Program also shows how to implement an autoscroll-feature. 
}
 procedure TForm1.ListBox1DragOver(Sender, Source: TObject; X, Y: Integer;
 State: TDragState; var Accept: Boolean);
 begin
 Accept := Sender is TListBox;
 end;
 procedure TForm1.ListBox1DragDrop(Sender, Source: TObject; X, Y: Integer);
 var
 iTemp: Integer;
 ptTemp: TPoint;
 szTemp: string;
 begin
 { change the x,y coordinates into a TPoint record }
 ptTemp.x := x;
 ptTemp.y := y;
 { Use a while loop instead of a for loop due to items possible being removed 
 from listboxes this prevents an out of bounds exception }
 iTemp := 0;
 while iTemp <= TListBox(Source).Items.Count-1 do
 begin
 { look for the selected items as these are the ones we wish to move }
 if TListBox(Source).selected[iTemp] then
 begin
 { use a with as to make code easier to read }
 with Sender as TListBox do
 begin
 { need to use a temporary variable as when the item is deleted the 
 indexing will change }
 szTemp := TListBox(Source).Items[iTemp];
 { delete the item that is being dragged }
 TListBox(Source).Items.Delete(iTemp);
 { insert the item into the correct position in the listbox that it 
 was dropped on }
 Items.Insert(itemAtPos(ptTemp, True), szTemp);
 end;
 end;
 Inc(iTemp);
 end;
 end;
Source: Взято с сайта: http://www.swissdelphicenter.ch
ID: 00706
Category:VCL
Category:DragAndDrop
Category:ListBox
Duplicate Resources Error

=== Duplicate Resources Error ===
У вас есть исходный код VCL? Если да, то в этом случае ее можно всю перекомпилировать, добавив каталог к вашему библиотечному пути (Library path) в опциях среды (Environment Options | Library). Я думаю это нужно сделать, чтобы отделаться от этой ошибки. При другом способе необходимо вычислить вызывающую проблему директиву $R, временно удалить ее, и осуществить перекомпиляцию. Временно выключить директиву $R можно добавлением '.' перед $ (но это не единственный путь выключить ее).
Вероятно, вы сабкласситесь от VCL. Убедитесь в том, что идентификатор ресурса для вашей иконки уникальный. Просто загрузите ее в любой редактор ресурсов, и измените ее номер. После этого вы должны пересобрать вашу библиотеку.
Примечание от Vit
В 99% случаев эта ошибка возникает при установке компонента, так как при добавлении компонента к пакету Дельфи автоматически к проекту добавляет и ресурс, если же этот ресурс уже определён в исходном коде компонента то и возникает эта ошибка. Откройте или менеджер проекта или исходный код DPK файла и удалите оттуда ссылку на ресурс, оставив её только в исходном коде компонента.
Source: Взято с http://delphiworld.narod.ru
ID: 02171