Недавно добавленные исходники

•  TDictionary Custom Sort  536

•  Fast Watermark Sources  902

•  3D Designer  1 830

•  Sik Screen Capture  1 476

•  Patch Maker  1 483

•  Айболит (remote control)  1 407

•  ListBox Drag & Drop  1 175

•  Доска для игры Реверси  21 849

•  Графические эффекты  1 356

•  Рисование по маске  1 296

•  Перетаскивание изображений  1 096

•  Canvas Drawing  969

•  Рисование Луны  814

•  Поворот изображения  770

•  Рисование стержней  815

•  Paint on Shape  493

•  Генератор кроссвордов  762

•  Головоломка Paletto  667

•  Теорема Монжа об окружностях  855

•  Пазл Numbrix  618

•  Заборы и коммивояжеры  848

•  Игра HIP  557

•  Игра Go (Го)  527

•  Симулятор лифта  548

•  Программа укладки плитки  509

•  Генератор лабиринта  565

•  Проверка числового ввода  524

•  HEX View  600

•  Физический маятник  528

•  Задача коммивояжера  560

 
скрыть


Delphi FAQ - Часто задаваемые вопросы

| Базы данных | Графика и Игры | Интернет и Сети | Компоненты и Классы | Мультимедиа |
| ОС и Железо | Программа и Интерфейс | Рабочий стол | Синтаксис | Технологии | Файловая система |



Переслать данные в другую программу методом Drag-and-Drop



Оформил: DeeCo

// Autor: Hagen Reddmann

         uses
   ShellAPI;

 function MakeDrop(const FileNames: array of string): THandle;
 // Creates a hDrop Object 
// erzeugt ein hDrop Object 
var
   I, Size: Integer;
   Data: PDragInfoA;
   P: PChar;
 begin
   // Calculate memory size needed 
  // berechne notwendig Speichergro?e 
  Size := SizeOf(TDragInfoA) + 1;
   for I := 0 to High(FileNames) do
     Inc(Size, Length(FileNames[I]) + 1);
   // allocate the memory 
  // alloziere den speicher 
  Result := GlobalAlloc(GHND or GMEM_SHARE, Size);
   if Result <> 0 then
   begin
     Data := GlobalLock(Result);
     if Data <> nil then
       try
         // fill up with data 
        // fulle daten 
        Data.uSize := SizeOf(TDragInfoA);
         P  := PChar(@Data.grfKeyState) + 4;
         Data.lpFileList := P;
         // filenames at the at of the header (separated with #0) 
        // am ende des headers nun die filenamen getrennt mit #0 
        for I := 0 to High(FileNames) do
         begin
           Size := Length(FileNames[I]);
           Move(Pointer(FileNames[I])^, P^, Size);
           Inc(P, Size + 1);
         end;
       finally
         GlobalUnlock(Result);
       end
     else
     begin
       GlobalFree(Result);
       Result := 0;
     end;
   end;
 end;

 function MyEnum(Wnd: hWnd; Res: PInteger): Bool; stdcall;
 // search for a edit control with classname 'TEditControl' 
// suche ein child fenster mit klassennamen 'TEditControl' 
var
   N: string;
 begin
   SetLength(N, MAX_PATH);
   SetLength(N, GetClassName(Wnd, Pointer(N), Length(N)));
   Result := AnsiCompareText('TEditControl', N) <> 0;
   if not Result then Res^ := Wnd;
 end;

 // Example: Open msdos.sys in Delphi's Editor window 
// Beispiel: msdos.sys im Delphi Editor offnen 
procedure TForm1.Button1Click(Sender: TObject);
 var
   Wnd: HWnd;
   Drop: hDrop;
 begin
   // search for Delphi's Editor 
  // suche Delphis Editor Fenster 
  EnumChildWindows(FindWindow('TEditWindow', nil), @MyEnum, Integer(@Wnd));
   if IsWindow(Wnd) then
   begin
     // Delphi's Editor found. Open msdos.sys 
    // Delphis editor gefunden, also offne msdos.sys 
    Drop := MakeDrop(['c:\msdos.sys']);
     if Drop <> 0 then PostMessage(Wnd, wm_DropFiles, Drop, 0);
     // Free the memory? 
    // Speicher wieder freigeben? 
    GlobalFree(Drop);
   end;
 end;




Похожие по теме исходники

Сортировка методом Хоара

Текст Drag & Drop

Drag and Drop Text

Quick Drag & Drop

 

Dragster Tree Relay

ListBox Drag & Drop

Backup and Restore

Market Monitoring and Billing

 

Black and White Effects

Sand Dog

Wave and MIDI In-Out

Vista and 7 Sound

 

Improved Buttons and ProgressBar

Desktop Sands

Rotation and Symmetry

Dropper (пипетка Фотошоп)

 



Copyright © 2004-2022 "Delphi Sources" by BrokenByte Software. Delphi World FAQ

Группа ВКонтакте   Facebook   Ссылка на Twitter   Ссылка на Telegram