본문 바로가기

카테고리 없음

[일반/컴포넌트] 다른 윈도우의 PageControl(TabControl) 상태 알아내기

반응형
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Button1: TButton;
    Memo1: TMemo;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  FHandle: HWND;
  sel, cnt: integer;
begin
  // Delphi IDE 의 콤포넌트 파레트의 선택 상태를 보여줍니다
  FHandle := FindWindow('TAppBuilder', nil);
  FHandle := FindWindowEx(FHandle, 0, 'TControlBar', nil);
  FHandle := FindWindowEx(FHandle, 0, 'TDockPanel', nil);
  FHandle := FindWindowEx(FHandle, 0, 'TComponentPaletteTabControl', nil);

  cnt := SendMessage(FHandle, TCM_GETITEMCOUNT, 0, 0); // 탭갯수
  sel := SendMessage(FHandle, TCM_GETCURSEL, 0, 0); // 선택한 탭 인덱스 번호

  Memo1.Lines.Add(IntToStr(cnt)+' 개의 탭이 있습니다');
  Memo1.Lines.Add(IntToStr(sel)+' 번째 탭이 선택되어 있습니다');
  // 선택한 탭의 더 자세한 정보는 TCM_GETITEM 을 찾아보세요
end;
  
end.
반응형