Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Go Back   Foros Club Delphi > Principal > Varios
Register FAQ Members List Calendar Guía de estilo Today's Posts

Coloboración Paypal con ClubDelphi

Reply
 
Thread Tools Search this Thread Display Modes
  #1  
Old 24/04/2006
[Nbull] Nbull is offline
Miembro Premium
 
Join Date: Nov 2004
Location: Valencia-España
Posts: 168
Poder: 22
Nbull Va por buen camino
Question Seleccionar parte del escritorio

Hola a tod@s, estoy haciendo una aplicación que hace un zoom de la parte seleccionada del escritorio.

Gracias al amigo seoane que me explicó como hacer el zoom en otro hilo, ha sido pan comido, pero, lo que necesito ahora es que cuando se haga click con el ratón y sin soltar este, aparezca un rectángulo como pasa al arrastrar el ratón en el escritorio de windows.

Dandome el Top, Bottom, Right y Left del rectángulo.

Supongo que no sera muy dificil pero estoy muy pez.

Gracias por vuestra ayuda.Un saludo.
__________________
Y ahora puedes aprender truquillos de windows en http://nbull.clubdelphi.com.
Reply With Quote
  #2  
Old 24/04/2006
seoane's Avatar
[seoane] seoane is offline
Miembro Premium
 
Join Date: Feb 2004
Location: A Coruña, España
Posts: 3,717
Poder: 26
seoane Va por buen camino
Pues tampoco es tan sencillo. No tanto porque no se pueda dibujar directamente sobre la pantalla, que se puede, el problema es que borrar lo dibujado ya no es tan facil. Tampoco es secillo controlar los movimientos del raton fuera de nuestro formulario.

Por eso muchos programas, cuando tiene que hacer lo que tu quieres usan un pequeño truco, copian toda la pantalla, quitan los bordes de su formulario, lo maximizan y dibujan la copia sobre el. De esta forma aunque parece que se esta haciendo la seleccion directamente sobre la pantalla, se esta realizando sobre su formulario.

Esto reduce muchisimo el problema, aqui te dejo un ejemplo de como lo haria yo, haber que te parece.
Attached Files
File Type: zip Ejemplo 12.zip (4.0 KB, 260 views)
Reply With Quote
  #3  
Old 27/04/2006
[Nbull] Nbull is offline
Miembro Premium
 
Join Date: Nov 2004
Location: Valencia-España
Posts: 168
Poder: 22
Nbull Va por buen camino
Joer seoane eres un crack tio, muchismas gracias, era eso justo lo que necesitaba.Me ha funcionado perfectamente.

Un saludo y gracias de nuevo.
__________________
Y ahora puedes aprender truquillos de windows en http://nbull.clubdelphi.com.
Reply With Quote
  #4  
Old 02/05/2007
kapullok_2006 kapullok_2006 is offline
Miembro
 
Join Date: Mar 2007
Posts: 90
Poder: 20
kapullok_2006 Va por buen camino
Unhappy poder ver código ejemplo 12.zip

Hola seone,no puedo descargarme tu archivo.
Puedes ponerlo escrito en este foro? o enviarme el zip a [email protected] sin no es mucho pedir?


saludos.
Reply With Quote
  #5  
Old 02/05/2007
seoane's Avatar
[seoane] seoane is offline
Miembro Premium
 
Join Date: Feb 2004
Location: A Coruña, España
Posts: 3,717
Poder: 26
seoane Va por buen camino
Quote:
Originally Posted by kapullok_2006
Hola seone,no puedo descargarme tu archivo.
Puedes ponerlo escrito en este foro? o enviarme el zip a [email protected] sin no es mucho pedir?
El único archivo que he subido a este hilo es Ejemplo 12.zip, y ya se encuentra alojado en el foro como archivo adjunto. He pulsado sobre el enlace y no tengo problemas para bajarlo ...
Reply With Quote
  #6  
Old 02/05/2007
seoane's Avatar
[seoane] seoane is offline
Miembro Premium
 
Join Date: Feb 2004
Location: A Coruña, España
Posts: 3,717
Poder: 26
seoane Va por buen camino
Aunque he pensado que puede que te encuentres detrás de algún proxy que te impide bajar archivos zip.

En cualquier caso, aquí te dejo el archivo pas que esta dentro del zip:
Código Delphi [-]
unit ufrmMain;

interface

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

type
  TfrmMain = class(TForm)
    ScrollBox1: TScrollBox;
    imgPantalla: TImage;
    Panel1: TPanel;
    lbTop: TLabel;
    lbLeft: TLabel;
    lbBottom: TLabel;
    lbRight: TLabel;
    procedure FormCreate(Sender: TObject);
    procedure imgPantallaMouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure imgPantallaMouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
  private
    { Private declarations }
    Seleccion: TRect;
    procedure Seleccionar(R: TRect);
  public
    { Public declarations }
  end;

var
  frmMain: TfrmMain;

implementation

{$R *.dfm}

procedure TfrmMain.Seleccionar(R: TRect);
begin
  imgPantalla.Canvas.Brush.Style:= bsClear;;
  imgPantalla.Canvas.Pen.Style:= psDash;
  imgPantalla.Canvas.Pen.Mode:= pmNot;
  imgPantalla.Canvas.Rectangle(Seleccion);
  imgPantalla.Canvas.Rectangle(R);
  Seleccion:= R;
  if Seleccion.Left > Seleccion.Right then
  begin
    R.Left:= Seleccion.Right;
    R.Right:= Seleccion.Left;
  end;
  if Seleccion.Top > Seleccion.Bottom then
  begin
    R.Top:= Seleccion.Bottom;
    R.Bottom:= Seleccion.Top;
  end;
  if not isRectEmpty(R) then
  begin
    lbTop.Caption:= 'Top = ' + IntToStr(R.Top);
    lbLeft.Caption:= 'Left = ' + IntToStr(R.Left);
    lbBottom.Caption:= 'Bottom = ' + IntToStr(R.Bottom);
    lbRight.Caption:= 'Right = ' + IntToStr(R.Right);
  end else
  begin
    lbTop.Caption:= 'Top = ';
    lbLeft.Caption:= 'Left = ';
    lbBottom.Caption:= 'Bottom = ';
    lbRight.Caption:= 'Right = ';
  end;
end;

procedure TfrmMain.FormCreate(Sender: TObject);
var
  bmp: Tbitmap;
begin
  FillChar(Seleccion,SizeOf(Seleccion),0);
  bmp:= Tbitmap.Create;
  try
    try
      bmp.Width:= GetSystemMetrics(SM_CXSCREEN);
      bmp.Height:= GetSystemMetrics(SM_CYSCREEN);
      BitBlt(bmp.Canvas.Handle,0,0,bmp.Width,bmp.Height,GetDc(0),0,0,SRCCOPY);
      imgPantalla.Picture.Bitmap.Assign(bmp);
    finally
      bmp.free;
    end;
  except end;
end;

procedure TfrmMain.imgPantallaMouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  if Button = mbLeft then
    Seleccionar(Rect(X,Y,X,Y));
end;

procedure TfrmMain.imgPantallaMouseMove(Sender: TObject;
  Shift: TShiftState; X, Y: Integer);
begin
  if ssLeft in Shift then
  begin
    if x < 0 then x:= 0;
    if y < 0 then y:= 0;
    if x > imgPantalla.Width then x:= imgPantalla.Width;
    if y > imgPantalla.Height then y:= imgPantalla.Height;
    Seleccionar(Rect(Seleccion.Left,Seleccion.Top,X,Y));
  end;
end;

end.
Reply With Quote
  #7  
Old 03/05/2007
kapullok_2006 kapullok_2006 is offline
Miembro
 
Join Date: Mar 2007
Posts: 90
Poder: 20
kapullok_2006 Va por buen camino
gracias

gracias Seone,probaré como me va.

Saludos.
Reply With Quote
Reply



Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump

Similar Threads
Thread Thread Starter Forum Replies Last Post
Como seleccionar campos de una tabla sin saber cuantos van a seleccionar david duarte SQL 7 05/04/2010 21:15
Iconos de escritorio Nil API de Windows 9 22/10/2007 20:12
Seleccionar parte de una cadena jefraub OOP 5 02/05/2005 22:36
Escritorio Delphi silviodp Varios 1 22/10/2004 17:29
Fondo de escritorio Tonio Varios 4 13/11/2003 22:58


All times are GMT +2. The time now is 05:29.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi