TPageControl 과 TToolBar 컨트롤에 각 각 TTabSheet, TToolButton 을 만들고
Object Treeview 윈도우를 보면, 다른 컨트롤 과는 약간 틀린점이 보입니다
TabSheet1,TabeSheet2.. 혹은 ToolBar1,ToolBar2.. 등이 반투명한 흐린색으로
표시되죠. 그리고 이것들은 Copy&Paste 가 안되는 넘들입니다.
( 이거 아무렇지 않게 보여두 실제 컴포넌트 만들때 보니깐 요상한 겁니다. ㅡ_ㅡ;; )
그럼 본론으로 들어가서, 위에꺼랑 비슷하게 만들려고 하는 컴포넌트가 있습니다.
컴포넌트 만들때 컴포넌트 에디터를 하나 만듭니다. 거기에 Verb하나를 추가하구요
거기다 IDesigner.CreateComponent 함수를 이용해서 IDE가 컴포넌트를 생성하도록 만들죠
일반적인 방법이긴 한데.... 문제는 위에꺼처럼 흐린색으로 표시가 안됩니다.
만들려구 하는 컴포넌트가 TPanel1 그리고 TTabSheet처럼 TPanel1에만 올라가는
컴포넌트가 TInplace 라구 하면 TInplace가 Copy&Paste가 되버리는 사태가 발생합니다.
음... 예를 들어 아래와 같은 코드가 있다면, (설명이 위에껄루 충분하긴 한데...쩝.. ㅡ_ㅡ)
부분 부분만 발췌해서 올립니다.
////////////////////////////////////////////////////////////////////
unit Panel1;
{중략..}
TInplace = class(TPanel)
public
constructor Create(AOwner: TComponent); override;
end;
TPanel1 = class(TPanel)
private
FInplaces: TList;
function GetInplaces(Index: Integer): TInplace;
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
procedure Add(Inplace: TInplace);
property Inplaces[Index: Integer]: TInplace read GetInplaces;
end;
procedure TPanel1.Add(Inplace: TInplace);
begin
FInplaces.Add(Inplace);
Inplace.Parent := Self;
Inplace.Visible : = True;
end;
//////////////////////////////////////////////////////////////////
unit RegPanel1;
{중략..}
procedure TPanel1Editor.ExecuteVerb(Index: Integer);
var
NewComponent: TComponent;
begin
case Index of
0: begin
if not Designer.IsSourceReadOnly then
begin
NewComponent := Designer.CreateComponent(TInplace, nil, -1, -1, -1, -1);
TPanel1(Component).Add(TInplace(NewComponent));
end;
end;
1: begin
end;
end;
end;
{중략... }
////////////////////////////////////////////////////////////////////////
폼 디자인시 위의 함수가 실행되게쪄?
그러면 Panel1 위에 Inplace1 이 살짝 올라갑니다~~~~ (여기까진 넘 쉬우니깐..히~~~ ^^)
근데... Inplace1에서 (Ctrl + X) 키를 누르고,
폼위에서 (Ctrl+V) 키를 누르면?
폼위에 Inplace1이 올라갑니다 ( ㅡ_ㅡ;;; 커헉~~~~ ) 리드 온리가 안되여
Obejct Treeview 에 반투명하게 보이게 컴포넌트 생성하는 방법이 있나영?
( 질문이 넘 길었군여... 읽어주셔서 감사 ^_____________^
가능하면 답변두 부탁드려영~~~~ )
|