Q&A

  • 리치에디트랑 SendMessage..
리치에디트 두개를 똑같이 스크롤할라하는게 도저히 안대서

마지막으루 생각해낸것이 SendMessage로

한쪽 키이벤트를 공유하는것이었습니당

리치1에서 입력받은걸 리치2에 보내는식이죠

긍데 막상해보니 ㅡㅡ;; 리치2에 키다운을 두어개 보내도

리치2는 영 ㅡ.ㅡㅋ; 받은건지 만건지 커서가 움직여서 스크롤이 돼야하는데

그래서 Send문이 맛간건가해서 이것저것 바까보고 해도 역시.. ㅡㅡ

알고보니 이벤트는 받았는데 리치2가 이상하게 그대로 첫화면을 뿌리고있더군요
탭키로 포커스를 움직이니 그재서야 재위치로 스크롤대는뎅

이것을 코드로 다시혀볼라궁 Rich2.Reflash도 넣어보고

FM으루 ㅡㅡ SetFocus를 리치1에 옴겼다 리치2에 옴겼다 해보고 그래도

어째댄것이 그대로 ㅡㅡ;;; 이거 도대체 왜이러져

리치에디트에서 스크롤값을 인수루 받아오는법만 알면 그냥 끈날텐데...

이런 무식한 방법을 써도 하루종일 시간만 잡아묵네여 ㅡㅜ 에혀

고수님들 답변좀 해쥬세여~ 델파이 써본지 일주일도 안돼가지고

딴언어에서 넘어가는게 델파이만 왜러캐 어려븐지 원 ㅡㅜ
5  COMMENTS
  • Profile
    이중철 2003.12.23 02:19
  • Profile
    이중철 2003.12.23 04:42
    자꾸 테스트 해보면 조금씩 틀리고 이것도 완벽하게 동작은 안되요..
    그래도 근사(비슷)하게 되므로 일단 올립니다.

    unit Unit1;

    interface

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

    type
      HookType = function(hWnd: HWND; Msg: WORD; wParam: WORD; lParam: LONGINT): LONGINT; StdCall;
      TForm1 = class(TForm)
        RichEdit1: TRichEdit;
        RichEdit2: TRichEdit;
        RichEdit3: TRichEdit;
        procedure FormCreate(Sender: TObject);
        procedure FormDestroy(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;

    var
      Form1: TForm1;
      OldWinProc: HookType;
      richedit1handle, richedit2handle : HWND;
      m_depthscroll : integer;
      m_currentrow : integer;
      function NewWinProc(hWnd: HWND; Msg: WORD; wParam: WORD; lParam: LONGINT): LONGINT; StdCall;
    implementation

    {$R *.dfm}
    function NewWinProc(hWnd: HWND; Msg: WORD; wParam: WORD; lParam: LONGINT): LONGINT; StdCall;
    var incrow : integer;
        comparerow : integer;
        i : integer;
    begin
      if  (hWnd = richedit1handle) then
        case Msg of
          WM_PAINT :
          begin
            comparerow := SendMessage(richedit1handle, EM_GETTHUMB, 0, 0);
            incrow := comparerow div m_depthscroll;
            if m_currentrow <> incrow then
            begin
              SendMessage(richedit2handle, EM_SCROLL, incrow, 0);
            end;
            m_currentrow := incrow;
          end;
        end;
      Result := CallWindowProc(@OldWinProc, hWnd, Msg, wParam, lParam)

    end;

    procedure TForm1.FormCreate(Sender: TObject);
    var P : HookType;
    begin
      richedit1handle := RichEdit1.Handle;
      richedit2handle := RichEdit2.Handle;
      P := NewWinProc;
      m_depthscroll := SendMessage(richedit1handle, EM_GETTHUMB, 0, 0);
      SendMessage(richedit1handle, EM_SCROLL, 1, 0);
      m_depthscroll := SendMessage(richedit1handle, EM_GETTHUMB, 0, 0) - m_depthscroll;
      SendMessage(richedit1handle, EM_SCROLL, 0, 0);
      m_currentrow := 0;
      Integer(Pointer(@OldWinProc)) := SetWindowLong(RichEdit1.Handle, GWL_WNDPROC        , integer(Pointer(@p)));

    end;

    procedure TForm1.FormDestroy(Sender: TObject);
    begin
      SetWindowLong(RichEdit1.Handle, GWL_WNDPROC        , Integer(Pointer(@OldWinProc)));
    end;

    end.

  • Profile
    이중철 2003.12.23 05:01

    이부문을 아래와 같이 바꾸세요.

            if m_currentrow <> incrow then
            begin
              if incrow > m_currentrow then
                for i := 0 to (incrow - m_currentrow) - 1 do
                  SendMessage(richedit2handle, EM_SCROLL, 1, 0);
              if incrow < m_currentrow then
                for i := 0 to (m_currentrow - incrow) - 1 do
                  SendMessage(richedit2handle, EM_SCROLL, 0, 0);
            end;

    이궁 시간 졸라 까먹었네요 4시간이나 걸렸어요 ㅠ_ㅠ

  • Profile
    이기재 2003.12.23 18:45
    감사합니당 ^^ ㅎㅎ

    근데 소스가 넘흐 어려워서 잘 모르겠네여 ㅠ _ㅠ

    복사하기루 짜집기는 혀
  • Profile
    이중철 2003.12.23 19:00
    디자인모드에서 미리 데이타를 집어넣고 했기에 이것이 먹혔거든요

    FormCreate 부문에 이 부문을 강제로 입력하여 보세요

    m_depthscroll := 15;

    리치에디터에 데이타가(그것도 한페이지 이상) 없어서

    m_depthscroll = 0 가 되어서

    에러가 난거에요.. (완벽히 제 실수 입니다..)


    • 김건림
    • 2003.12.23 21:07
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 이중철
      2003.12.23 21:43
      버튼과 스트링그리드의 Parent 속성을 바꾸면 됩니다. A 폼에 버튼1, 버튼2, 스트링그리드1  ...
    • 김건림
      2003.12.24 23:20
    • 김수현
    • 2003.12.23 20:24
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 심인식
      2003.12.23 22:01
      제가 알기로 발송 메일서버를 경유해서 메일을 보낼때는 받는사람유무체크를 실시간으로 할수 없는것으로 ...
    • 남궁혁
    • 2003.12.23 20:20
    • 0 COMMENTS
    • /
    • 0 LIKES
    • sky
    • 2003.12.23 20:11
    • 0 COMMENTS
    • /
    • 0 LIKES
    • ^ㅡ^
      2003.12.23 20:20
      도움이 될지 모르겠네요 var   I,J :Integer; begin   tmp := '123$2123$26...
    • 김지영
      2003.12.23 21:11
      감사 ^^ 행복하세요...(냉무)
    • 박진수
    • 2003.12.23 19:41
    • 2 COMMENTS
    • /
    • 0 LIKES
    • ^ㅡ^
      2003.12.23 20:27
      혹시 쿼리에 포멧값 지정 안 하셨나요? ##,#;0 이런거 그러면 갑이 안 나올수도있는데
    • 박진수
      2003.12.23 20:30
      display format을 말씀하시는거 같은데요..  물론  지정했을때나 안했을때마 마찬가...
    • 심인식
      2003.12.23 20:32
      음.. 제 생각에는 그문제를 해결하기 위해서는 Type Library에서 메소드를 만든 다음 웹에서 그 메소드를...
    • 아폴론
    • 2003.12.23 19:38
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 박창훈
    • 2003.12.23 07:50
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 오병주
      2003.12.23 17:58
      델파이의 에러는 아니구여...^^ Type선언에 문제가 있는듯 합니다. 8바이트인 BIGINT 컬럼으로 선언...
    • 박창훈
      2003.12.23 22:35
      답변 감사합니다.. bigint --> '-' 도 저장은 되던데... 델파이에서 못 가지고 올 뿐..... 그런데...
    • 윤혜정
    • 2003.12.23 02:58
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이중철
      2003.12.23 05:08
      pchar은 char의 포인터 입니다. var pA : pchar; begin   pA := DLLCALLFUNC;  &nb...
    • 김영애
    • 2003.12.23 02:58
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 오병주
      2003.12.23 03:35
      Query 질의 하시다가 에러난듯 싶은데여.. 보니까 업데이트 하다가 난듯 싶은데.. 파라미터 값이 없...
    • 김영애
      2003.12.23 17:47
      ..
    • 오병주
      2003.12.23 03:09
      영수증 서식이 좀 바뀌지 않았나여..? [매출자료분] 국세청 파일은 D란에 업태/업종이 빠졌구여 ...
    • romantic
      2003.12.26 22:41
      아직 에러 체크하는 프로그램 나오지 않은거 아닌가요?? 후후후..나오면 바로 돌려봐야 될텐데.. 거...
    • Qinter
    • 2003.12.23 02:20
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 오병주
      2003.12.23 03:20
      팁란에 있는거 Copy 해 드립니다...^^ 프로그램 목록 구하기 type TForm1 = class(TForm) Butto...
    • ^ㅡ^
      2003.12.23 20:29
      제가 생각하기에는 ms-sql이나 오라클이 나을꺼같은데요 로컬디비로는 좀 무리가 있지 않을까 ...
    • 오병주
      2003.12.23 02:59
      파라독스나 MDB 생성은 팁란에 보시면 금방 찾으실수 있을겁니다. 제가 올려놓은것도 있으니까여...^^ ...
    • 이중철
      2003.12.23 01:17
      Function Sample : TStrings; var     Str: string;     StrL...
    • 이기재
    • 2003.12.23 00:56
    • 5 COMMENTS
    • /
    • 0 LIKES
    • 이중철
      2003.12.23 02:19
    • 이중철
      2003.12.23 04:42
      자꾸 테스트 해보면 조금씩 틀리고 이것도 완벽하게 동작은 안되요.. 그래도 근사(비슷)하게 되므로 일단 ...
    • 이중철
      2003.12.23 05:01
      이부문을 아래와 같이 바꾸세요.         if m_currentrow ...
    • 이기재
      2003.12.23 18:45
      감사합니당 ^^ ㅎㅎ 근데 소스가 넘흐 어려워서 잘 모르겠네여 ㅠ _ㅠ 복사하기루 짜집기는 혀
    • 이중철
      2003.12.23 19:00
      디자인모드에서 미리 데이타를 집어넣고 했기에 이것이 먹혔거든요 FormCreate 부문에 이 부문을 강제로...
    • 김도성
    • 2003.12.22 23:15
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이중철
      2003.12.23 01:10
      여기 자료실에도 어느정도 있고 Rx 또는 TMS 그리고 구할 수 있는 자료는 많이 있을꺼에요
    • 이기재
    • 2003.12.22 22:21
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 김지영
    • 2003.12.22 21:52
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 엄문용
    • 2003.12.22 20:51
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 엄문용
      2003.12.22 21:02
      ^^;