РАБОТА С КАРТИНКАМИ

Тема в разделе "Delphi - Multimedia, Графика, Игры", создана пользователем lewka, 18 фев 2011.

  1. lewka

    lewka Гость

    Привет!!! Помогите разобраться вот с такой задачкой:
    Есть 2 формы TForm. На одной из них находятся несколько TImage с картинками. При выборе картинки на этой форме нужно чтобы выбранная картинка вставлялась на другую TForm туда куда нажать мышкой.
     
  2. sinkopa

    sinkopa Well-Known Member

    Регистрация:
    17 июн 2009
    Сообщения:
    344
    Симпатии:
    9
    Будете смеяться... но самое сложное в вашем вопросе "выбранная картинка"... ;)
    Вариантов "кидания" картинок куча...
    Но если по быстрому... то например так вот (у меня придумалось):
    Работает так:
    1. По клику на картинке - она выделяется рамкой
    2. По клику на второй форме - выделенная картинка перескакивает (в позицию где кликнули)
    3. По двойному клику на первой форме "возвращаем блудную овцу" в позицию где кликнули...

    Первая форма (главная):
    Код (Delphi):
    unit Unit1;

    interface

    uses
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
    Dialogs, jpeg, ExtCtrls;

    type
    TImage = class (ExtCtrls.TImage) // Небольшой хак (чтобы рисовать рамку выделения вокруг картинки)
    protected
    procedure Paint; override;
    end;

    type
    TForm1 = class(TForm)
    Image1: TImage;
    procedure Image1Click(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure FormDblClick(Sender: TObject);
    private
    { Private declarations }
    public
    { Public declarations }
    end;

    var
    Form1: TForm1;
    JumpImg: TImage = nil;
    implementation

    {$R *.dfm}

    uses
    Unit2;

    { TImage }

    procedure TImage.Paint;
    var
    Canv: TCanvas;
    aRect: TRect;
    begin
    if (Self.Tag = 1) then
    begin
    aRect := Rect(Self.Left-3,Self.Top-3,Self.Left+Self.Width+3,Self.Top+Self.Height+3);
    Canv := TForm(Self.Owner).Canvas;
    Canv.Pen.Color := clRed;
    Canv.Pen.Width := 3;
    Canv.Rectangle(aRect);
    end;
    inherited;
    end;

    procedure TForm1.Image1Click(Sender: TObject);
    begin
    if (Sender is TImage) then
    begin
    if (TImage(Sender).Tag = 0) then
    begin
    TImage(Sender).Tag := 1;
    JumpImg := TImage(Sender);
    end
    else
    begin
    JumpImg := nil;
    TImage(Sender).Tag := 0;
    end;
    Repaint;
    end;
    end;

    procedure TForm1.FormShow(Sender: TObject);
    begin
    Form2.Top := Top;
    Form2.Left := Left + Width+1;
    Form2.Show;
    end;

    procedure TForm1.FormDblClick(Sender: TObject);
    var
    aPoint: TPoint;
    begin

    if (JumpImg <> nil) then
    begin
    GetCursorPos(aPoint);
    aPoint := ScreenToClient(aPoint);
    JumpImg.Parent := Self;
    Form2.Repaint;
    JumpImg.Top := aPoint.Y;
    JumpImg.Left := aPoint.X;
    JumpImg.Tag := 0;
    Repaint;
    JumpImg := nil;
    end;

    end;

    end.
    Вторая форма:
    Код (Delphi):
    unit Unit2;

    interface

    uses
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
    Dialogs;

    type
    TForm2 = class(TForm)
    procedure FormClick(Sender: TObject);
    private
    { Private declarations }
    public
    { Public declarations }
    end;

    var
    Form2: TForm2;

    implementation

    {$R *.dfm}

    uses
    Unit1;


    procedure TForm2.FormClick(Sender: TObject);
    var
    aPoint: TPoint;
    begin
    GetCursorPos(aPoint);
    aPoint := ScreenToClient(aPoint);
    if (JumpImg <> nil) then
    begin
    JumpImg.Parent := Self;
    Form1.Repaint;
    JumpImg.Top := aPoint.Y;
    JumpImg.Left := aPoint.X;
    JumpImg.Tag := 0;
    Repaint;
    end;

    end;

    end.
    Типа так... а дальше как фантазия подскажет... ;)
     
Загрузка...
Похожие Темы - РАБОТА КАРТИНКАМИ
  1. Andrey Kha
    Ответов:
    0
    Просмотров:
    32
  2. Hoasker
    Ответов:
    0
    Просмотров:
    65
  3. garri671
    Ответов:
    0
    Просмотров:
    57
  4. lelik200969
    Ответов:
    0
    Просмотров:
    55
  5. Kozolick
    Ответов:
    0
    Просмотров:
    144

Поделиться этой страницей