Q&A

  • 동적메뉴 생성해서 메뉴 클릭시 이벤트
동적메뉴를 만들려고 합니다..
동적메뉴를 만든 다음에 메뉴 클릭시 다른 프로그램을 띄우고자 합니다..
Sub1 클릭시 test.exe
Sub2 클릭시 test2.exe
이렇게 호출하고 싶은데..
MyClick 에서 어떻게 해야 하는지 알려 주세요..


procedure TForm1.MyClick(Sender: TObject);
begin
beep;
end;

procedure TForm1.PopupMenu1Popup(Sender: TObject);
var
mi, msub: TmenuItem;
begin
with (Sender as TPopupMenu) do
begin
while Items.Count > 0 do Items[0].Free; //Item을 모두 지움

// Create ordinary item "First"
mi := TMenuItem.Create(self);
with mi do begin
Caption := 'First';
OnClick := MyClick;
end;
Items.Insert(0, mi);

// Create a submenu "Sub" with two items "Sub1" and
// "Sub2"
mi := TMenuItem.Create(self);
with mi do
begin
Caption := 'Sub';
msub := TMenuItem.Create(self);
with msub do
begin
Caption := 'Sub1';
OnClick := MyClick;
end;
Insert(0, msub);
//-----------------------------
msub := TMenuItem.Create(self);
with msub do begin
Caption := 'Sub2';
OnClick := MyClick;
end;
Insert(1, msub);
end;
Items.Insert(1, mi);
end;
end;
3  COMMENTS
  • Profile
    최용일 2008.09.29 18:51
    WinExec나 ShellExecute등의 함수를 이용해서 프로그램을 실행시키시면 됩니다.

    WinExec('c:\test.exe', SW_SHOW);
  • Profile
    김상진 2008.09.29 19:04
    메뉴마다 exe 파일을 다르게 실행시킬려구 하는데요...
    Sub1 클릭시 test.exe
    Sub2 클릭시 test2.exe

    이렇게요..

    위에거는 고정을 시키는 거라서..
  • Profile
    장성호 2008.09.29 19:14
    동적으로 생성되는 TMenuItem이 여러개인데..
    MenuItem의 Click이벤트에서 어떤것을 클릭했는지 구분하는것이 필요하겠군요

    VCL(델파이, C++빌더)에서는 이벤트 핸들러에서 파라메터로 Sender라는 놈이 항상 넘어옵니다.

    이 Sender라는 놈이 이벤트가 발생된 객체입니다.

    ButtonClick이벤트이변 Sender는 Button이 되구 TMemuItem을 클릭하면 Sender는 MemuItem이 됩니다.

    <!--CodeS-->
    procedure TForm1.MyClick(Sender: TObject);
    begin
    if TMemuItem(Sender).Caption = 'Sub1' then
    WinExec('test.exe',SW_SHOW)
    else if TMemuItem(Sender).Caption = 'Sub2' then
    WinExec('test2.exe',SW_SHOW);

    end;

    <!--CodeE-->

    핵심은 Sender!
    이놈을 잘 이용하면 하나의 메소드에도 여러 컨트롤에 이벤트를 걸수가 있죠

    <!--CodeS-->
    //만약 동적으로 생성되는 TMenuItem의 변수가 따로 있다면 직접 비교해도 되죠
    var
    Sub1,Sub2: TMenuItem;
    procedure TForm1.MyClick(Sender: TObject);
    begin
    if Sender= Sub1 then
    WinExec('test.exe',SW_SHOW)
    else if Sender= Sub2 then
    WinExec('test2.exe',SW_SHOW);

    end;

    <!--CodeE-->

    그럼


    • 이강석
    • 2008.09.30 00:21
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 이강석
      2008.09.30 20:21
      클라이언트 강제로 종료일경우 서버소켓에서 Excute에서 except on E : Exception do begi...
    • 이강석
      2008.10.02 03:13
      클라이언트도 마찬가지네요~~~~~쓰레드로 ReadLn하는데 그 Thread의 Excute함수에서 처리하면 되는군요.....
    • Jackie
    • 2008.09.29 20:22
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2008.09.29 21:22
      다른 인덱스를 설정하지 못합니다. 명시적으로 index가 0으로 지정되어 있고 Get이나 Set할 때 메소드...
    • 장성호
      2008.09.29 23:34
      최용일님 말씀대로 index는 바꾸지 못하구요 왜 바꾸지도 못하는 index 가 있는 이유에 대해 간단히 ...
    • Jackie
      2008.09.30 00:19
      답변주신 분들 정말 고맙습니다. 님들의 실력에 감탄하게 됩니다. 결국 제가 지금까지 잘못 코딩하...
    • 김상진
    • 2008.09.29 18:41
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2008.09.29 18:51
      WinExec나 ShellExecute등의 함수를 이용해서 프로그램을 실행시키시면 됩니다. WinExec('c:\test.exe...
    • 김상진
      2008.09.29 19:04
      메뉴마다 exe 파일을 다르게 실행시킬려구 하는데요... Sub1 클릭시 test.exe Sub2 클릭시 test2.exe ...
    • 장성호
      2008.09.29 19:14
      동적으로 생성되는 TMenuItem이 여러개인데.. MenuItem의 Click이벤트에서 어떤것을 클릭했는지 구분하...
    • steps
    • 2008.09.29 04:10
    • 1 COMMENTS
    • /
    • 0 LIKES
    • steps
      2008.10.07 03:58
      구글스크립트를 헤메고 다니다가 한번에 돌아오는 Url을 찾았습니다. http://translate.google.co.kr/tr...
    • 유경민
    • 2008.09.27 06:59
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 석주현
      2008.09.27 21:01
      책을 한권 사서 보시는 걸 권해 드립니다. 아니면 안터넷을 찾아 보시면 델파이 관련 pdf 파일을 찾으...
    • 델코이
    • 2008.09.27 05:26
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2008.09.27 05:41
      SN번호가 어쩌고 하는 이야기는 도저히 이해를 못하겠구요... BOX번호는 FormatFloat함수을 쓰시면 됩니...
    • steps
      2008.09.28 20:52
      참고가 될런지요 repeat inc(sn); if sn mod 15 =0 then begin inc(boxIndex); mark...
    • 석주현
      2008.09.27 02:57
      위에 함수 만들어 놓으셨으면 맨위에 Fixed 부분을 누를 경우 그때의 Checked 값을 넣어 주면 될 것 ...
    • 델만세
      2008.09.27 03:08
      안되는데요;;;; 체크조차 안되여.ㅋ.ㅋ 왜이러징.ㅋ.ㅋ
    • 석주현
      2008.09.27 03:13
      아마 인덱스를 잘못 쓰셔서 일 것 같은데요. 음 맨 윗부분은 따로 동작하는 거니 눌렸을 때 먼저 ...
    • 석주현
      2008.09.27 20:58
      아래와 같이 하면 될꺼 같은데요. ㅡ_ㅡ;; procedure StringGrid12.grdListClickCell(Sender: TObje...
    • 심영준
    • 2008.09.26 23:49
    • 1 COMMENTS
    • /
    • 0 LIKES
    • Crazy™
      2008.09.29 22:35
      db자동연결이라고 하셨는데 자동연결보다는 이후에 어떻게 처리를 하실지 고민을 먼저 하셔야 할겁니다. ...
    • 델코이
    • 2008.09.26 22:21
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 장성호
      2008.09.26 23:04
      <!--CodeS--> procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char); var barc...
    • 델코이
      2008.09.26 23:22
      딱 맞네요..감사합니다..
    • 석주현
      2008.09.26 19:08
      Row의 카운트에서 - i 이런식으로 해주면 될꺼 같은데요. ㅡ_ㅡ;;
    • 델만세
      2008.09.26 20:46
      아~해결했어요~
    • 델초보
    • 2008.09.26 07:34
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      2008.09.26 12:14
      DB의 목적이 무엇인지 정확히 알아야 조언이 가능할 것 같습니다. 단순히 로그만을 위한것이라면 사실 그...
    • 김영석
    • 2008.09.26 07:10
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 소울해커
      2008.09.26 19:07
      2개파일을 하나로 만든다는게 무슨의미인지... 단순히 1번파일뒤에 2번파일을 가져다 붙인다는 건가...
    • 박상윤
      2008.09.26 23:58
      2개의 파일을 하나로만든 다는 것은 해더파일 을 고쳐야 하고 나머지 데이터를 뒤부분에 붙여야 하지죠...
    • 델만세
    • 2008.09.26 01:01
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      2008.09.26 12:10
      비율을 유지한채 리사이즈를 하시려면 직접 코딩으로 하셔야 합니다.. 가로크기가 더 긴 이미지인지 ...
    • 소울해커
      2008.09.26 18:24
      일정 비율을 유지한다는게... 1. 각 폼마다 이미지컴포넌트의 위치와 크기를 47, 67로 일정하게 잡...
    • 델만세
      2008.09.26 18:37
      아....감사합니다..^^
    • 김경석
    • 2008.09.25 19:45
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      2008.09.25 19:52
      공개되어있습니다...SourceForge 에가셔서 받으세요..
    • 박철우
    • 2008.09.25 19:43
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      2008.09.25 19:56
      http://www.tmssoftware.com/site/diagram.asp 를 참고 하세요 ^^
    • 박성준
    • 2008.09.25 18:27
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      2008.09.25 19:58
      등록되는 시점에서 실행되는 부분이 있는것 같습니다. 그 DLL의 Entry에 해당하는 이벤트를 확인하셔서 ...
    • 박성준
      2008.09.25 23:35
      델파이자체적으로 툴이 있는지 잘 몰라서 검색을 해보니 DLL Export Viewer 프로그램이 있는 것을 확인...
    • 후초보
    • 2008.09.25 03:10
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이정욱
      2008.09.25 11:07
      메인폼에 하나만 놓으시면 됩니다. 여러개 놓으시면 어차피 나머지는 동작하지 않습니다. 시리얼포트는 ...