Q&A
HOME
Tips & Tech
Q&A
Discuss
Download
자유게시판
홍보 / 광고
구인 / 구직
LOGIN
회원가입
listbox item drag시 drag item 보여주기...
고수님들께 부탁...
윈도우 탐색기에서 화일을 드래그 할 때 화일명이 흐릿하게 보여집니다.
이와같은 효과를 리스트 박스 아이템을 드래그 하면서 나타내고 싶은데...
아는게 짧아서...
고수님들의 한 수 부탁드립니다.
1
COMMENTS
홍성락
•
2001.08.14 08:29
player wrote:
>
> 고수님들께 부탁...
>
> 윈도우 탐색기에서 화일을 드래그 할 때 화일명이 흐릿하게 보여집니다.
>
> 이와같은 효과를 리스트 박스 아이템을 드래그 하면서 나타내고 싶은데...
>
> 아는게 짧아서...
>
> 고수님들의 한 수 부탁드립니다.
////////////////////////////////////////////////////////////////////////
예전에 게시판을 찾으면 투명Panel를 만드는것이 있거든요 그것을 조금고쳐사용하시면됩니다. 아래와같이 코딩해보세요
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ExtCtrls, Buttons;
type
//hsr///////////////////////////////////////////
TTransparentPanel = Class(TPanel)
Private
Procedure SetParent(AParent:TWinControl); Override;
Procedure WMEraseBkGnd(Var Message:TWMEraseBkGnd); Message WM_EraseBkGnd;
Protected
Procedure CreateParams(Var Params:TCreateParams); Override;
Procedure Paint; Override;
Public
Constructor Create(AOwner:TComponent); Override;
Procedure Invalidate; Override;
End;
//hsr///////////////////////////////////////////
TForm1 = class(TForm)
ListBox1: TListBox;
procedure ListBox1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure ListBox1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure ListBox1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
public
{ Public declarations }
BrushStyle : TbrushStyle;
penStyle: TPenStyle;
penWide:Integer;
Drawing:Boolean;
modified:Boolean;
Origin, Origin1,MovePt,MovePt1 : TPoint;
LastDot:TPoint;
CurrentFile, str:string;
end;
var
Form1: TForm1;
tpnl: TTransparentPanel; //hsr//
implementation
//hsr/////////////////////////////////////////////////
{$R *.DFM}
Constructor TTransparentPanel.Create(AOwner:TComponent);
Begin
Inherited Create(AOwner);
ControlStyle:= ControlStyle - [csOpaque];
End;
Procedure TTransparentPanel.CreateParams(Var Params:TCreateParams);
Begin
Inherited CreateParams(Params);
Params.ExStyle:= Params.ExStyle or WS_EX_TRANSPARENT;
End;
Procedure TTransparentPanel.Paint;
Begin
Canvas.Brush.Style:= bsClear;
//Canvas.Rectangle(0, 0, Width, Height);
//Canvas.TextOut(Width div 2, Height div 2, 'Transparent');
Canvas.Font.Color := clGray;
Canvas.TextOut(0, 0, Caption);
End;
Procedure TTransparentPanel.WMEraseBkGnd(Var Message:TWMEraseBkGnd);
Begin
{Do Nothing}
Message.Result:= 1;
End;
Procedure TTransparentPanel.SetParent(AParent:TWinControl);
Begin
Inherited SetParent(AParent);
If Parent <> Nil then
SetWindowLong(Parent.Handle, GWL_STYLE,
GetWindowLong(Parent.Handle, GWL_STYLE) And Not WS_ClipChildren);
End;
Procedure TTransparentPanel.Invalidate;
Var
Rect :TRect;
Begin
Rect:= BoundsRect;
If (Parent <> Nil) and Parent.HandleAllocated then
InvalidateRect(Parent.Handle, @Rect, True)
Else
Inherited Invalidate;
End;
procedure SaveWindowImageToFile(wnd: Hwnd; const AFileName: string);
var
ACanvas: TCanvas;
bmp: TBitmap;
R: TRect;
begin
ACanvas := TCanvas.Create;
try
// 캔버스에 핸들설정
ACanvas.handle := GetDC(wnd);
// 윈도우 영역얻기
GetWindowRect(wnd, R);
// 위치에 관계없이 크기값만 상관
R := Rect(0, 0, R.Right - R.Left, R.Bottom - R.Top);
// 비트맵 생성
bmp := TBitmap.Create;
try
// 크기설정
bmp.width := R.Right - R.Left;
bmp.height := R.Bottom - R.Top;
// 이미지 복사
bmp.canvas.copyrect(R, ACanvas, R);
bmp.SaveToFile(AFilename);
finally
bmp.free;
end;
finally
DeleteDC(ACanvas.Handle);
ACanvas.Free;
end;
end;
//hsr///////////////////////////////////////////
procedure TForm1.FormCreate(Sender: TObject);
begin
tpnl := TTransparentPanel.Create(self);
with tpnl do begin
Parent := self;
Top := 1;
Left := 1;
Height := 1;
Width := 1;
Visible := False;
BringToFront;
Font.Color := clGray;
end;
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
tpnl.Free;
end;
procedure TForm1.ListBox1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
Origin := Point(X,Y);
Drawing := True;
str := ListBox1.Items.Strings[ListBox1.ItemIndex];
tpnl.Caption := ListBox1.Items.Strings[ListBox1.ItemIndex];
tpnl.Width := Canvas.TextWidth(str);
tpnl.Height := Canvas.TextHeight(str);
end;
procedure TForm1.ListBox1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
var
SRect, DRect: TRect;
begin
if Drawing then begin
tpnl.Left := ListBox1.Left + x;
tpnl.Top := ListBox1.Top + y;
tpnl.Visible := True;
end;
end;
procedure TForm1.ListBox1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
drawing := False;
tpnl.Visible := False;
end;
end.
0
0
삭제
수정
댓글
(NOTICE) You must be
logged in
to comment on this post.
avkjb
•
2001.08.11 22:23
1
COMMENTS
/
0
LIKES
Delphi 4.0으로 컴파일한 exe파일에 대한 몇가지 질문들.
htjulia
•
2001.08.13 04:07
1,2번의 답변은 보시는 분들의 관점에 따라 답변이 틀려질 것 같네여... 개관적으로 드릴수 있는 1번의 ...
캐빈
2001.08.11 21:59
0
COMMENTS
/
0
LIKES
[급]테이블 생성중에~~ Numeric 필드 설정에 관해
군바리델피언
•
2001.08.11 20:30
3
COMMENTS
/
0
LIKES
에디터에서 탭키를 누르면 다음 에디터로 이동
MAJOR
•
2001.08.11 21:03
군바리델피언 wrote: > 에디터와 에디터 사이를 탭키를 누르면 이동가능하게 할려면 어케 해야 하져? > ...
묵혼
•
2001.08.11 21:28
MAJOR wrote: > 군바리델피언 wrote: > > 에디터와 에디터 사이를 탭키를 누르면 이동가능하게 할려면 어...
군바리델피언
•
2001.08.12 00:26
친절한 답변 너무 감사 드리고여....ㅎㅎㅎ 저 진짜 군바리 맡습니다...단지 운이 좋아서.. 인터넷 조교...
훈
2001.08.11 19:54
0
COMMENTS
/
0
LIKES
Client에서 DB의 설정값들을 어떻게 바꾸죠?
묵혼
2001.08.11 19:14
0
COMMENTS
/
0
LIKES
무지 궁금한데요..
김장호
•
2001.08.11 16:03
1
COMMENTS
/
0
LIKES
요청강의 있습니다!
이추형
•
2001.08.11 19:05
서점에 가시는 것이 먼저일것 같네여.. 책에 보면 대강 다있지 않나요? 노력하는 자만이 살아남는다죠? ...
이정노
2001.08.11 13:18
0
COMMENTS
/
0
LIKES
win3.1텝에있는 컴포넌트로 만든 풀그림은 win2000에서 무용지물?
훈
2001.08.11 11:16
0
COMMENTS
/
0
LIKES
DB에서 Heap 에러 문제인데요...
이민오
2001.08.11 08:59
0
COMMENTS
/
0
LIKES
Tnotebook의 여러페이지중에서 어떤한페이지 숨길려면
초보맨
2001.08.11 07:59
0
COMMENTS
/
0
LIKES
install shield express에서 시리얼 번호 추가하기
조영진
2001.08.11 05:48
0
COMMENTS
/
0
LIKES
일정관리
어린왕자
2001.08.11 03:39
0
COMMENTS
/
0
LIKES
델집에서요..압축된 파일안의 파일목록을 알고 싶어요..
델초보
2001.08.11 03:11
0
COMMENTS
/
0
LIKES
델파이로 만든 ActiveX를 C++로
player
•
2001.08.11 02:53
1
COMMENTS
/
0
LIKES
listbox item drag시 drag item 보여주기...
고수님들께 부탁... 윈도우 탐색기에서 화일을 드래그 할 때 화일명이 흐릿하게 보여집니다. 이와같은 효과를 리스트 박스 아이템을 드래그 하면서 나타내고 싶은데... 아는게 짧아서... 고수님들의 한 수 부탁드립니다.
홍성락
•
2001.08.14 08:29
player wrote: > > 고수님들께 부탁... > > 윈도우 탐색기에서 화일을 드래그 할 때 화일명이 흐릿하...
노력중인 초보
•
2001.08.11 02:18
4
COMMENTS
/
0
LIKES
parambyname을 안쓰구 할수있는방법있어여???
지승용
•
2001.08.11 03:46
노력중인 초보 wrote: > 안녕하세요. 노력중인 초보입니다... > > 필드형이 스트링형일경우엔 말이져 ...
노력중인초보
•
2001.08.11 09:33
> > FormatDateTime('yyyy"/"mm"/"dd', Temp_Date1) > 이것을 넣어보세요... > 기본적 BDE를 인스톨...
노력중인초보
•
2001.08.11 10:54
노력중인초보 wrote: > > > > > FormatDateTime('yyyy"/"mm"/"dd', Temp_Date1) > > 이것을 넣어보...
김지엽
•
2001.08.11 19:09
to_date : SQL 함수 strtodate : 델파이 함수 전자는 DBMS에서 처리하는 함수이고, 후자는 델파이 어...
어린왕자
2001.08.11 01:46
0
COMMENTS
/
0
LIKES
델집..풀고자하는 폴더에 풀라구 할려면 어떻게 해야하나요? (__);
라일락
2001.08.11 01:37
0
COMMENTS
/
0
LIKES
DB에서 Jpeg 불러오기..........
우리들
2001.08.11 01:17
0
COMMENTS
/
0
LIKES
일정표에 내용이 나오도록 할려면....
완전초보
2001.08.11 01:09
0
COMMENTS
/
0
LIKES
currency edit 컴포넌트 초기화문제....(소스포함)
훈
•
2001.08.11 01:03
2
COMMENTS
/
0
LIKES
디비그리드의 Row 의 높이를 조절할 수는 없나요?
묵혼
•
2001.08.11 03:30
훈 wrote: > Row의 높이를 조절하고 싶은데, 조절할 수가 없네요.. > > Row에 Capiton을 달아서 보여주...
훈
•
2001.08.11 11:11
묵혼 wrote: > 훈 wrote: > > Row의 높이를 조절하고 싶은데, 조절할 수가 없네요.. > > > > Row에 Ca...
player
2001/08/11 02:53
Views
441
Likes
0
Comments
1
Reports
0
Tag List
수정
삭제
목록으로
한델 로그인 하기
로그인 상태 유지
아직 회원이 아니세요? 가입하세요!
암호를 잊어버리셨나요?
>
> 고수님들께 부탁...
>
> 윈도우 탐색기에서 화일을 드래그 할 때 화일명이 흐릿하게 보여집니다.
>
> 이와같은 효과를 리스트 박스 아이템을 드래그 하면서 나타내고 싶은데...
>
> 아는게 짧아서...
>
> 고수님들의 한 수 부탁드립니다.
////////////////////////////////////////////////////////////////////////
예전에 게시판을 찾으면 투명Panel를 만드는것이 있거든요 그것을 조금고쳐사용하시면됩니다. 아래와같이 코딩해보세요
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, ExtCtrls, Buttons;
type
//hsr///////////////////////////////////////////
TTransparentPanel = Class(TPanel)
Private
Procedure SetParent(AParent:TWinControl); Override;
Procedure WMEraseBkGnd(Var Message:TWMEraseBkGnd); Message WM_EraseBkGnd;
Protected
Procedure CreateParams(Var Params:TCreateParams); Override;
Procedure Paint; Override;
Public
Constructor Create(AOwner:TComponent); Override;
Procedure Invalidate; Override;
End;
//hsr///////////////////////////////////////////
TForm1 = class(TForm)
ListBox1: TListBox;
procedure ListBox1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure ListBox1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure ListBox1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
public
{ Public declarations }
BrushStyle : TbrushStyle;
penStyle: TPenStyle;
penWide:Integer;
Drawing:Boolean;
modified:Boolean;
Origin, Origin1,MovePt,MovePt1 : TPoint;
LastDot:TPoint;
CurrentFile, str:string;
end;
var
Form1: TForm1;
tpnl: TTransparentPanel; //hsr//
implementation
//hsr/////////////////////////////////////////////////
{$R *.DFM}
Constructor TTransparentPanel.Create(AOwner:TComponent);
Begin
Inherited Create(AOwner);
ControlStyle:= ControlStyle - [csOpaque];
End;
Procedure TTransparentPanel.CreateParams(Var Params:TCreateParams);
Begin
Inherited CreateParams(Params);
Params.ExStyle:= Params.ExStyle or WS_EX_TRANSPARENT;
End;
Procedure TTransparentPanel.Paint;
Begin
Canvas.Brush.Style:= bsClear;
//Canvas.Rectangle(0, 0, Width, Height);
//Canvas.TextOut(Width div 2, Height div 2, 'Transparent');
Canvas.Font.Color := clGray;
Canvas.TextOut(0, 0, Caption);
End;
Procedure TTransparentPanel.WMEraseBkGnd(Var Message:TWMEraseBkGnd);
Begin
{Do Nothing}
Message.Result:= 1;
End;
Procedure TTransparentPanel.SetParent(AParent:TWinControl);
Begin
Inherited SetParent(AParent);
If Parent <> Nil then
SetWindowLong(Parent.Handle, GWL_STYLE,
GetWindowLong(Parent.Handle, GWL_STYLE) And Not WS_ClipChildren);
End;
Procedure TTransparentPanel.Invalidate;
Var
Rect :TRect;
Begin
Rect:= BoundsRect;
If (Parent <> Nil) and Parent.HandleAllocated then
InvalidateRect(Parent.Handle, @Rect, True)
Else
Inherited Invalidate;
End;
procedure SaveWindowImageToFile(wnd: Hwnd; const AFileName: string);
var
ACanvas: TCanvas;
bmp: TBitmap;
R: TRect;
begin
ACanvas := TCanvas.Create;
try
// 캔버스에 핸들설정
ACanvas.handle := GetDC(wnd);
// 윈도우 영역얻기
GetWindowRect(wnd, R);
// 위치에 관계없이 크기값만 상관
R := Rect(0, 0, R.Right - R.Left, R.Bottom - R.Top);
// 비트맵 생성
bmp := TBitmap.Create;
try
// 크기설정
bmp.width := R.Right - R.Left;
bmp.height := R.Bottom - R.Top;
// 이미지 복사
bmp.canvas.copyrect(R, ACanvas, R);
bmp.SaveToFile(AFilename);
finally
bmp.free;
end;
finally
DeleteDC(ACanvas.Handle);
ACanvas.Free;
end;
end;
//hsr///////////////////////////////////////////
procedure TForm1.FormCreate(Sender: TObject);
begin
tpnl := TTransparentPanel.Create(self);
with tpnl do begin
Parent := self;
Top := 1;
Left := 1;
Height := 1;
Width := 1;
Visible := False;
BringToFront;
Font.Color := clGray;
end;
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
tpnl.Free;
end;
procedure TForm1.ListBox1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
Origin := Point(X,Y);
Drawing := True;
str := ListBox1.Items.Strings[ListBox1.ItemIndex];
tpnl.Caption := ListBox1.Items.Strings[ListBox1.ItemIndex];
tpnl.Width := Canvas.TextWidth(str);
tpnl.Height := Canvas.TextHeight(str);
end;
procedure TForm1.ListBox1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
var
SRect, DRect: TRect;
begin
if Drawing then begin
tpnl.Left := ListBox1.Left + x;
tpnl.Top := ListBox1.Top + y;
tpnl.Visible := True;
end;
end;
procedure TForm1.ListBox1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
drawing := False;
tpnl.Visible := False;
end;
end.