{
main.pas
This file is part of the DropFilesTarget.pas demo application.
Info at http://flocke.vssd.de/prog/code/pascal/dft/
Copyright (C) 2005, 2006 Volker Siebert <flocke@vssd.de>
All rights reserved.
}
unit main;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ComCtrls, DropFilesTarget;
type
TForm1 = class(TForm)
RichEdit1: TRichEdit;
CheckBox1: TCheckBox;
CheckBox2: TCheckBox;
CheckBox3: TCheckBox;
procedure CheckBox2Click(Sender: TObject);
procedure CheckBox1Click(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private-Deklarationen }
DropFilesTarget1: TDropFilesTarget;
LastWindowHandle: HWND;
procedure DropFilesTarget1Drop(Sender: TObject; Info: TDropFilesInfo);
procedure CheckHandle;
public
{ Public-Deklarationen }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
// This is done by hand, so you don't need to install to test it ;-)
DropFilesTarget1 := TDropFilesTarget.Create(Self);
DropFilesTarget1.TargetControl := RichEdit1;
DropFilesTarget1.OnDropFiles := DropFilesTarget1Drop;
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
// Is freed automatically, since it's owned by the form
//FreeAndNil(DropFilesTarget1);
end;
procedure TForm1.DropFilesTarget1Drop(Sender: TObject; Info: TDropFilesInfo);
var
k: Integer;
begin
RichEdit1.Lines.BeginUpdate;
try
RichEdit1.Lines.Add('');
RichEdit1.SelAttributes.Style := RichEdit1.SelAttributes.Style + [fsBold];
RichEdit1.Lines.Add('You dropped something on me!');
RichEdit1.SelAttributes.Style := RichEdit1.SelAttributes.Style - [fsBold];
RichEdit1.Lines.Add('Date/Time: ' + FormatDateTime('', Info.Stamp));
RichEdit1.Lines.Add('Point: ' + IntToStr(Info.Point.X) + ' / ' + IntToStr(Info.Point.Y));
RichEdit1.Lines.Add('Count: ' + IntToStr(Info.Files.Count));
RichEdit1.Lines.Add('Files:');
for k := 0 to Info.Files.Count - 1 do
RichEdit1.Lines.Add(' ' + Info.Files.Strings[k]);
finally
RichEdit1.Lines.EndUpdate;
SendMessage(RichEdit1.Handle, EM_SCROLLCARET, 0, 0);
end;
MessageBeep(MB_ICONINFORMATION);
end;
procedure TForm1.FormShow(Sender: TObject);
begin
ClientWidth := 400;
Top := 32;
Height := Screen.Height - 96;
Left := Screen.Width - Width - 8;
RichEdit1.HandleNeeded;
LastWindowHandle := RichEdit1.Handle;
end;
procedure TForm1.CheckHandle;
begin
RichEdit1.HandleNeeded;
if RichEdit1.Handle <> LastWindowHandle then
begin
LastWindowHandle := RichEdit1.Handle;
RichEdit1.Lines.BeginUpdate;
try
RichEdit1.Lines.Add('');
RichEdit1.SelAttributes.Style := RichEdit1.SelAttributes.Style + [fsBold];
RichEdit1.SelAttributes.Color := clRed;
RichEdit1.Lines.Add(Format('Target window handle changed to $%x!', [LastWindowHandle]));
RichEdit1.SelAttributes.Style := RichEdit1.SelAttributes.Style - [fsBold];
RichEdit1.SelAttributes.Color := clWindow;
finally
RichEdit1.Lines.EndUpdate;
SendMessage(RichEdit1.Handle, EM_SCROLLCARET, 0, 0);
end;
MessageBeep(MB_ICONINFORMATION);
end;
end;
procedure TForm1.CheckBox1Click(Sender: TObject);
begin
RichEdit1.HideScrollBars := CheckBox1.Checked;
CheckHandle;
end;
procedure TForm1.CheckBox2Click(Sender: TObject);
const
ScrollBars: array [Boolean, Boolean] of TScrollStyle = (
( ssNone, ssHorizontal ),
( ssVertical, ssBoth )
);
begin
RichEdit1.ScrollBars := ScrollBars[CheckBox2.Checked, CheckBox3.Checked];
CheckHandle;
end;
end. |