::: 델파이 Tip&Trick :::

델파이 Tip&Trick 성격에 맞지 않는 광고,비방,질문의 글은 즉시 삭제하며
내용을 복사하여 사용할 경우 반드시 이곳(http://www.howto.pe.kr)을 출처로 명시하여 주세요


Category

  김영대(2004-07-27 18:08:44, Hit : 3747, Vote : 1007
 http://www.howto.pe.kr
 TListBox 의 마우스 커서 아래의 아이템 구하기

unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    ListBox1: TListBox;
    procedure Edit1DragOver(Sender, Source: TObject; X, Y: Integer;
      State: TDragState; var Accept: Boolean);
    procedure Edit1DragDrop(Sender, Source: TObject; X, Y: Integer);
    procedure ListBox1MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure GetAllWindowsProc(WinHandle: HWND; Slist: TStrings);
var
  P: array[0..256] of Char; {title bar를 저장 할 buffer}
begin
  P[0] := #0;
  GetWindowText(WinHandle, P, 255); {window's title bar를 알아낸다}
  if (P[0] <> #0) then
    if IsWindowVisible(WinHandle) then {invisible한 window는 제외}
      Slist.AddObject(P, TObject(WinHandle)); {window의 handle 저장}
end;

procedure GetAllWindows(Slist: TStrings);
var
  WinHandle: HWND;
Begin
  WinHandle := FindWindow(nil, nil);
  GetAllWindowsProc(WinHandle, Slist);
  while (WinHandle <> 0) do  {Top level의 window부터 순차적으로 handle을 구한다}
  begin
    WinHandle := GetWindow(WinHandle, GW_HWNDNEXT);
    GetAllWindowsProc(WinHandle, Slist);
  end;
end;

procedure TForm1.Edit1DragOver(Sender, Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean);
begin
  Accept := True;
end;

procedure TForm1.Edit1DragDrop(Sender, Source: TObject; X, Y: Integer);
begin
  (Sender as TEdit).Text := (Source as TListBox).Items[(Source as TListBox).ItemIndex]
end;

procedure TForm1.ListBox1MouseMove(Sender: TObject; Shift: TShiftState; X,  Y: Integer);
var lstIndex: Integer;
begin
  with ListBox1 do
    begin
      lstIndex := SendMessage(Handle, LB_ITEMFROMPOINT, 0, MakeLParam(x, y));
      if (lstIndex >= 0) and (lstIndex <= Items.Count) then
        Caption := Items[lstIndex]
      else
        Caption := '';
    end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  ListBox1.Items.Clear;
  GetAllWindows(ListBox1.Items);
end;

end.





811   [COM/OLE] IE 에 직접 입력한 URL 목록 구하기  김영대 2004/08/02 4340 1063
810   [COM/OLE] 특정 사이트의 form 을 강제 submit 하기  김영대 2004/08/02 5554 1378
809   [COM/OLE] 특정 사이트의 내용을 JPG 로 저장하기  김영대 2004/08/02 5082 1114
808   [COM/OLE] PDF ActiveX 사용하기  김영대 2004/08/02 5104 1188
807     [COM/OLE] [re] PDF ActiveX 사용하기  초보델피 2005/07/18 4924 1080
806   [COM/OLE] 특정 웹페이지의 모든 Link URL 구하기  김영대 2004/07/27 5621 1486
  [일반/컴포넌트] TListBox 의 마우스 커서 아래의 아이템 구하기  김영대 2004/07/27 3747 1007
804   [시스템] Keyboard hook 을 사용한 OnKeyDown 구현  김영대 2004/07/27 5106 1303
803   [일반/컴포넌트] RichEdit 의 마우스 커서 아래의 글자 구하기  김영대 2004/07/27 4501 1055
802   [시스템] 실행중인 모든 프로세스의 Domain, User 구하기  김영대 2004/07/27 4867 1203
801   [일반/컴포넌트] 표준 TListBox 에 Radio 버튼 올리기  김영대 2004/07/27 4007 1091
800   [일반/컴포넌트] TTrewView, TListView 를 이미지로 저장하기  김영대 2004/07/26 4115 907
799   [일반/컴포넌트] TProgressbar 의 색상 바꾸기  김영대 2004/07/26 4445 1183
798   [네트웍/인터넷] 네트워크 드라이브 연결 화면 띄우기  김영대 2004/07/26 5811 1543
797   [시스템] 로컬 가상 드라이버(substitution device) 만들고 제거하기  김영대 2004/07/25 5475 1260
796   [일반/컴포넌트] 모서리가 둥근(rounded ends) TMemo 만들기  김영대 2004/07/25 4351 1129
795   [윈도우즈 API] 폼에 애니메이션 효과 주기  김영대 2004/07/25 4423 1185
794   [일반/컴포넌트] TList 를 이용한 stack 구조 구현  김영대 2004/07/25 4084 1038
793   [COM/OLE] 윈도우즈 "모든 창을 최소화"  김영대 2004/07/25 6072 1635
792   [COM/OLE] 윈도우즈 "시스템 종료" 화면  김영대 2004/07/25 4459 1258
791   [COM/OLE] 윈도우즈 "검색: 파일 또는 폴더" 화면  김영대 2004/07/25 4817 1345
790   [COM/OLE] 윈도우즈 "날짜/시간 등록 정보" 화면  김영대 2004/07/25 6257 1597
789   [COM/OLE] 윈도우즈 "인터넷 등록 정보" 화면  김영대 2004/07/25 4094 1276
788   [COM/OLE] 윈도우즈 "작업 표시줄 및 시작 메뉴 등록 정보" 화면  김영대 2004/07/25 5876 1572
787   [윈도우즈 API] 현재 키보드 입력 언어 구하기  김영대 2004/07/24 4772 1288
786   [윈도우즈 API] 지원하는 키보드 입력 언어 구하고 변경하기  김영대 2004/07/24 4527 1215
785   [윈도우즈 API] 바로 직전에 active 되었던 윈도우와 콘트롤 구하기  김영대 2004/07/24 4465 1119
784   [시스템] 제어판의 모든 applet 정보 구하기  김영대 2004/07/24 4236 1086
783   [일반/컴포넌트] 윈도우즈"시작" 버튼위에 글씨 쓰기  김영대 2004/07/24 4041 1096
782   [윈도우즈 API] Taskbar 의 위치 추적하기  김영대 2004/07/24 3803 1020
781   [윈도우즈 API] Taskbar 의 특정 위치에 popup 메뉴 띄우기  김영대 2004/07/24 4405 1155
780   [윈도우즈 API] 내 프로그램의 화면을 가리는 프로그램 리스트  김영대 2004/07/24 4364 1159
779   [시스템] 내 프로그램의 실행 우선순의 바꾸기  김영대 2004/07/24 4938 1344
778   [시스템] 마우스 아래의 윈도우 핸들 구하기  김영대 2004/07/24 6382 1368
777   [시스템] 윈도우즈 시스템의 스크롤바 두께 바꾸기  김영대 2004/07/24 5194 1233
776   [시스템] 윈도우즈 서비스 시작/중지 하기  김영대 2004/07/22 5817 1485
775   [시스템] 윈도우즈 서비스 상태 구하기  김영대 2004/07/22 4824 1224
774   [시스템] 윈도우즈 서비스 목록 구하기  김영대 2004/07/22 4345 1175
773   [네트웍/인터넷] Winsock WriteFile and Overlapped IO  김영대 2003/11/18 5204 1173
772   [네트웍/인터넷] IOCP(I/O Completion Port) class  김영대 2003/11/18 10440 800

[1][2][3][4] 5 [6][7][8][9][10]..[25] [다음 10개]
 

Copyright 1999-2019 Zeroboard / skin by zero