Q&A
HOME
Tips & Tech
Q&A
Discuss
Download
자유게시판
홍보 / 광고
구인 / 구직
LOGIN
회원가입
메뉴와 버튼등의 색상을 바꾸려면
제 Application을 Windows에서 지원하는 것이 아니라 고유의 색상을 가지게 하고 싶어서 색상을 지정하려고 합니다. Form과 다른 Component의 색상은 변경을 해주었만 메뉴와 버튼등은 그대루 남아 있어서 보기가 좀 이상하더 군요...
어떤 방법을 사용해야 할지 조언 을 부탁 드립니다.
그럼 좋은 하루 되싶시요...
1
COMMENTS
김영대
•
1999.09.03 23:53
노유승 께서 말씀하시기를...
> 제 Application을 Windows에서 지원하는 것이 아니라 고유의 색상을 가지게 하고 싶어서 색상을 지정하려고 합니다. Form과 다른 Component의 색상은 변경을 해주었만 메뉴와 버튼등은 그대루 남아 있어서 보기가 좀 이상하더 군요...
> 어떤 방법을 사용해야 할지 조언 을 부탁 드립니다.
> 그럼 좋은 하루 되싶시요...
TButton 이나 TMenuItem 은 원도우즈 표준 콘트롤로 "owner-draw" 를
지원하지 못하는걸로 알고 있습니다
그래서 원도우즈 제어판에서 설정된 값에 영항을 받습니다
TButton을 TBitBtn 으로 바꾸어서 사용하신다면 "owner-draw" 를
사용할 수 있습니다
TMenuItem은 그림(Bitemap) 정도는 올릴 수 있습니다
아래 소스는 "메뉴 아이템의 동적 추가와 그림넣기" 입니다
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Menus, ExtCtrls, StdCtrls;
type
TForm1 = class(TForm)
PopupMenu1: TPopupMenu;
Button1: TButton;
Button2: TButton;
Image1: TImage;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
var
newitem : TMenuItem;
i: Integer;
begin
// Popup menu의 이전 item을 clear 한다
for i := PopupMenu1.Items.Count -1 downto 0 do
PopupMenu1.Items.Delete(i);
for i := 0 to 9 do // 임의로 10개만 만들어 본것임
begin
newitem := TMenuItem.Create(PopupMenu1); // menu item 생성
newitem.Caption := IntTostr(i)+' 번째 Item'; // menu item 의 캡션
newitem.MenuIndex := i;
PopupMenu1.Items.Add(newitem); // Popup menu 에 추가
end;
// 추가된 item의 각 이미지를 그린다
for i := 0 to PopupMenu1.Items.Count - 1 do
SetMenuItemBitmaps(PopupMenu1.Handle,
i, // 이미지를 넣을 item의 위치
MF_BYPOSITION,
Image1.Picture.BitMap.Handle, // handle of unchecked bitmap
Image1.Picture.BitMap.Handle); // handle of checked bitmap
end;
procedure TForm1.Button2Click(Sender: TObject);
var
P: TPoint;
begin
// 수동으로 popup 하기
P.X := Button2.Left;
P.Y := Button2.Top;
P := Self.ClientToScreen(P); // form 기준의 좌표를 desktop 기준의 좌표로 계산
PopupMenu1.PopUp(P.X, P.Y);
end;
end.
0
0
삭제
수정
댓글
(NOTICE) You must be
logged in
to comment on this post.
조진희
1999.09.03 21:54
0
COMMENTS
/
0
LIKES
기쁜소식과 나쁜소식
노유승
•
•
1999.09.03 21:19
1
COMMENTS
/
1
LIKES
메뉴와 버튼등의 색상을 바꾸려면
제 Application을 Windows에서 지원하는 것이 아니라 고유의 색상을 가지게 하고 싶어서 색상을 지정하려고 합니다. Form과 다른 Component의 색상은 변경을 해주었만 메뉴와 버튼등은 그대루 남아 있어서 보기가 좀 이상하더 군요... 어...
김영대
•
1999.09.03 23:53
노유승 께서 말씀하시기를... > 제 Application을 Windows에서 지원하는 것이 아니라 고유의 색상을 가지...
Lyle
•
1999.09.03 21:17
2
COMMENTS
/
0
LIKES
unable to create process
안치봉
•
1999.09.03 21:56
잘은 모르겠으나... 그 파일에서 사용하는 DLL 이 없나 있나 보시고요. 있다면 그 DLL 을 찾지 못하...
Lyle
•
1999.09.03 22:54
안치봉 께서 말씀하시기를... > 잘은 모르겠으나... > > 그 파일에서 사용하는 DLL 이 없나 있나 보시...
이양규
1999.09.03 20:53
0
COMMENTS
/
0
LIKES
dbgrid에서 체크박스를...
임정선
•
1999.09.03 19:56
1
COMMENTS
/
0
LIKES
모니터 사이즈에 따른 제어
안치봉
•
1999.09.03 22:02
모니터사이즈라고 하시는게 정확한 mm, cm 같은걸 말씀하시는지 아니면 픽셀단이를 말씀하시는건지 모르겠...
한하눌
1999.09.03 19:20
0
COMMENTS
/
0
LIKES
멜프로그램을 open하면서 주소,제목,첨부 ..
리디아
1999.09.03 17:37
0
COMMENTS
/
0
LIKES
문자코드를 동시에 구현하려면??
한 재
1999.09.03 16:46
0
COMMENTS
/
0
LIKES
라디오 그룹에서 특정 인덱스 죽이기
김운식
•
1999.09.03 09:06
2
COMMENTS
/
0
LIKES
파라독스에서 입력 에러?????
이승현
•
1999.09.03 18:05
김운식 께서 말씀하시기를... > 안녕하세요.. > 델파이를 공부하는 학생입니다. > > 제가요.. > > ...
이승현
•
1999.09.03 18:08
빠트린것이 있네요. float형을 쓰지않고 integer로 쓸려면 long int 형을 쓰시면 됩니다. 대답이
jwchoi
•
1999.09.03 05:22
4
COMMENTS
/
0
LIKES
숫자금액을 한글금액으로 표시하려면...
김영대
•
1999.09.03 19:25
jwchoi 께서 말씀하시기를... > 안녕하십니까? > > 델파이 시작한지 얼마안된 초보입니다. > 숫자...
구창민
•
1999.09.03 06:57
jwchoi 께서 말씀하시기를... > 안녕하십니까? > > 델파이 시작한지 얼마안된 초보입니다. > 숫자...
늘초보
•
2001.11.16 03:01
억이 넘어 갈때.. 일억이 일억만이라고 나옵니다. 백억도 일백억만이라고..ㅠㅠ 님이 주신 함수 어떻게...
가을바람
•
2007.11.25 01:55
http://tong.nate.com/lhs0806/42023772
강성만
•
1999.09.03 05:06
1
COMMENTS
/
0
LIKES
WIN_NT4.0서버에있는 도메인명알기?
김영대
•
1999.09.03 19:29
강성만 께서 말씀하시기를... > 제목그대로 WIN_NT4.0에 등록된 도메인명을 알고싶거든요? > 델파이 또는...
델파이 초보
1999.09.03 03:38
0
COMMENTS
/
0
LIKES
시스템 메뉴가 생겨요!
황선희
•
1999.09.03 02:53
1
COMMENTS
/
0
LIKES
DBGrid에 있는 내용을 TXT 파일로 받을려면 어떻게 해야 하는지요?
김영대
•
1999.09.03 18:36
황선희 께서 말씀하시기를... > > DBGrid에 있는 내용을 TXT파일로 받을려면 어떻게 해야 하는지요? ...
이현신
1999.09.03 01:39
0
COMMENTS
/
0
LIKES
OutputDebugString 을 받을수잇는방법
김규돈
1999.09.03 01:38
0
COMMENTS
/
0
LIKES
델파이와 엑세스 DB와의 연결
hohoant
•
1999.09.03 01:23
1
COMMENTS
/
0
LIKES
DbGrid에서 Row별로 색깔을 변경할수가 없나요?
김영대
•
1999.09.03 19:10
hohoant 께서 말씀하시기를... > DbGrid에서 Row별로 색깔을 변경할수가 없나요? > Column별로는 속성창...
서희영
•
1999.09.03 00:53
1
COMMENTS
/
0
LIKES
활성되지 않은Form을 체크하는 법좀..
안치봉
•
1999.09.03 02:25
if Form2.Visible then if Form2.Focused then 서희영 께서 말씀하시기를... > 프로젝트 하나에 ...
이대선
•
1999.09.03 00:44
3
COMMENTS
/
0
LIKES
현재 커서가 아닌 edit의 가장 끝에 붙여넣기..
구창민
•
1999.09.03 04:46
이대선 께서 말씀하시기를... > edit의 가장 끝에 문자열을 추가 하려고 합니다. > > 많은 분들이 아래...
이대선
•
1999.09.03 05:58
구창민 께서 말씀하시기를... > 이대선 께서 말씀하시기를... > > edit의 가장 끝에 문자열을 추가 하려...
구창민
•
1999.09.03 06:55
음.. 말씀하신 내용을 보면 한글이 완성되었나 확인 하는 루틴이 먼저 여야 할거 같은데.. 아래 내용을 ...
한근수
•
1999.09.02 23:55
1
COMMENTS
/
0
LIKES
[긴급]MDI에서 Form끼리 자료참조
한근수
•
1999.09.03 00:22
저같은 실수 한 분을 위해서.. 저는 MDI에서 Form을 생성하려면 다음과 같이 생성합니다. uses Unit2...
정영호
1999.09.02 23:10
0
COMMENTS
/
0
LIKES
화면 Control 방법좀 알려 주세요..
노유승
1999/09/03 21:19
Views
1293
Likes
1
Comments
1
Reports
0
Tag List
수정
삭제
목록으로
한델 로그인 하기
로그인 상태 유지
아직 회원이 아니세요? 가입하세요!
암호를 잊어버리셨나요?
> 제 Application을 Windows에서 지원하는 것이 아니라 고유의 색상을 가지게 하고 싶어서 색상을 지정하려고 합니다. Form과 다른 Component의 색상은 변경을 해주었만 메뉴와 버튼등은 그대루 남아 있어서 보기가 좀 이상하더 군요...
> 어떤 방법을 사용해야 할지 조언 을 부탁 드립니다.
> 그럼 좋은 하루 되싶시요...
TButton 이나 TMenuItem 은 원도우즈 표준 콘트롤로 "owner-draw" 를
지원하지 못하는걸로 알고 있습니다
그래서 원도우즈 제어판에서 설정된 값에 영항을 받습니다
TButton을 TBitBtn 으로 바꾸어서 사용하신다면 "owner-draw" 를
사용할 수 있습니다
TMenuItem은 그림(Bitemap) 정도는 올릴 수 있습니다
아래 소스는 "메뉴 아이템의 동적 추가와 그림넣기" 입니다
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Menus, ExtCtrls, StdCtrls;
type
TForm1 = class(TForm)
PopupMenu1: TPopupMenu;
Button1: TButton;
Button2: TButton;
Image1: TImage;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
var
newitem : TMenuItem;
i: Integer;
begin
// Popup menu의 이전 item을 clear 한다
for i := PopupMenu1.Items.Count -1 downto 0 do
PopupMenu1.Items.Delete(i);
for i := 0 to 9 do // 임의로 10개만 만들어 본것임
begin
newitem := TMenuItem.Create(PopupMenu1); // menu item 생성
newitem.Caption := IntTostr(i)+' 번째 Item'; // menu item 의 캡션
newitem.MenuIndex := i;
PopupMenu1.Items.Add(newitem); // Popup menu 에 추가
end;
// 추가된 item의 각 이미지를 그린다
for i := 0 to PopupMenu1.Items.Count - 1 do
SetMenuItemBitmaps(PopupMenu1.Handle,
i, // 이미지를 넣을 item의 위치
MF_BYPOSITION,
Image1.Picture.BitMap.Handle, // handle of unchecked bitmap
Image1.Picture.BitMap.Handle); // handle of checked bitmap
end;
procedure TForm1.Button2Click(Sender: TObject);
var
P: TPoint;
begin
// 수동으로 popup 하기
P.X := Button2.Left;
P.Y := Button2.Top;
P := Self.ClientToScreen(P); // form 기준의 좌표를 desktop 기준의 좌표로 계산
PopupMenu1.PopUp(P.X, P.Y);
end;
end.