DropFilesTarget, Version 1.2a

Zurück zur Übersicht

Datei: Sample/main.pas

{
  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.
Flocke's Garage
Valid HTML 4.01 Transitional Valid CSS!
(C) 2005-2018 Volker Siebert.
Creative Commons-LizenzvertragDer gesamte Inhalt dieser Webseite steht unter einer Creative Commons-Lizenz (sofern nicht anders angegeben).