Q&A

  • 메뉴클릭시 리스트뷰에서 자동 컬럼 이동에 대해서...
고수님들...초보 델피언 송송송 임당..

넘 고민하다가 이렇게 들렀습니다.
제가 하고자 하는것은 vsReport style 리스트뷰에서의 컬럼이동(wm_hscroll, 수평스크롤바)을 마우스 클릭인 아닌 메뉴에서 클릭시에 이동하고 싶은겁니다.

이동 할 때에는
sendMessage(Listview.handle, wm_hscroll, SB_LINELEFT,0);
이런방법이 아니고요,

메뉴에는 컬럼인덱스 정보를 포함하고 있고 컬럼 인덱스 정보를 포함한 메뉴를 클릭할 경우 리스트 뷰 상에서 해당 컬럼으로의 자동 이동(수평스크롤)을 구현하고자 하는것입니다.  표현이 적절한지 모르겠네요...-.-;;

이것저것 뒤져서
아래의 소스로 구현은 했는데요..-.-;
//-------------------------------------------------------------------
procedure TfCommonSelectData.popmFindClick(Sender: TObject);
var ColWidth : Integer;
    I:Integer;
    si : TScrollInfo;
    xPos : Integer;
    tm : TEXTMETRIC;
    xChar : Integer;
begin
  GetTextMetrics (GetDC(ListView.Handle), tm);
  xChar := tm.tmAveCharWidth;

  ColWidth := 0;
  for I:=0 to TMenuItem(Sender).MenuIndex-1 do
    ColWidth := ColWidth + ListView.Column[I].Width;

  ZeroMemory(@si, sizeof(TScrollInfo));
  si.cbSize := sizeof(si);
  si.fMask := SIF_ALL;
  GetScrollInfo (ListView.Handle, SB_HORZ, si);
  xPos := si.nPos;

  si.fMask := SIF_POS;
  si.nPos := ColWidth;
  SetScrollInfo (ListView.Handle, SB_HORZ, si, TRUE);
  GetScrollInfo (ListView.Handle, SB_HORZ, si);

  if si.nPos <> xPos then
  begin
    ScrollWindow(ListView.Handle, xChar*(xPos - si.nPos), 0,nil, nil);
true);
  end;
  UpdateWindow(ListView.Handle);
end;

//--------------------------------------------------------------
영 화면이 깨지고 스크롤 바만 이동하고 컬럼은 그래로 있고 이상하네요..
고수님덜...방법좀  알려주세요.. ㅠ.ㅠ
이틀밤 새고 있네요......
부탁드립니다......
1  COMMENTS
  • Profile
    송기현 2002.01.23 14:50
    이런...어처구니..ㅋㅋㅋ
    알고 보니 가까운 곳에 답이 있었군요....

      // 이동할곳
      ColWidth := 0;
      for I:=0 to TMenuItem(Sender).MenuIndex-1 do
        ColWidth := ColWidth + ListView.Column[I].Width;

      // 현재위치
      ZeroMemory(@si, sizeof(TScrollInfo));
      si.cbSize := sizeof(si);
      si.fMask := SIF_ALL;
      GetScrollInfo (ListView.Handle, SB_HORZ, si);

      // 위치로 가기
      ListView.Scroll(ColWidth-si.nPos, 0);



    • 최은규
    • 2002.01.23 18:13
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 송기현
    • 2002.01.23 11:50
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 송기현
      2002.01.23 14:50
      이런...어처구니..ㅋㅋㅋ 알고 보니 가까운 곳에 답이 있었군요....   // 이동할곳  &...
    • 김상조
    • 2002.01.23 09:17
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 강두헌
      2002.01.23 18:07
      TRegistry를 보시면 될거 같은데.. 한마디만 쓰자니 좀 그래서 Delphi 도움말의 예제도 올리지요.. //R...
    • 김상조
      2002.01.26 22:48
      님, 감사합니다. 자세하게 가르쳐 주셔서... 유용하게 사용하였습니다. 건강하세요.
    • 김인수
    • 2002.01.23 09:12
    • 6 COMMENTS
    • /
    • 0 LIKES
    • 최호준
      2002.01.23 09:38
    • 김인수
      2002.01.23 10:13
    • 하얀까마귀
      2002.01.23 19:00
    • 김인수
      2002.01.23 20:39
    • 배건환
      2002.01.24 02:36
    • 김인수
      2002.01.24 03:47
    • 아무개
    • 2002.01.23 07:38
    • 6 COMMENTS
    • /
    • 0 LIKES
    • 박상윤
      2002.01.23 23:38
      일단 장치의 능력 caps를 읽어다가 쓰셔야 합니다. 워하는 크기등등을 비디오 디바이스가 지원하는지 ...
    • 최호준
      2002.01.23 09:27
      TVideoCap 코드 안에 fhCapWnd 부분을 public 프로퍼티로 설정하시구염 vfw.pas 파일에 functi...
    • 아무개
      2002.01.23 19:12
      답변 정말 감사 드립니다. 꾸벅~~ capSetVideoFormat 을 사용하는 샘플을 좀 알려주세요.. 제 실력으...
    • 김규억
      2002.01.23 17:49
      지송합니다... ^^;
    • 하얀까마귀
      2002.01.23 19:48
      안녕ㅎ세요 하얀까마귀 입니다. TVideoCap 은 소스가 있을텐데요. 그냥 컴파일 하면 안되나요?? 전 ...
    • 아무개
      2002.01.23 21:23
      내용 무
    • 바람
    • 2002.01.23 07:10
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 김강수
      2002.01.23 08:43
      ACCESS에서는 DISTINCT 문장이 안 될 겁니다. 그럴땐 FROM 밑줄에 GROUP BY 필드 <<<이케 대체해...
    • 김형우
    • 2002.01.23 04:34
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 최호준
      2002.01.23 09:32
      저랑 같은 경우였다면 해결이 되겟네요. 제가 만들어 노은 프로그램에 그런현상이 나타나따고 호소하...
    • 이상협
    • 2002.01.23 03:34
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 버섯
      2002.01.23 03:40
      그야.. array 를 써서 하면됩니다. val : array[1..32] of Integer; val[1] := 1; val[2] := 2;...
    • 이상협
      2002.01.23 03:53
      또한번 엿주어 보겠습니다. Procedure TForm1.Button1Click(Sender: Tobject); 여기에서 Sender와 Tobj...
    • 조규춘
      2002.01.23 19:51
      델파이 6에서는 procedure TForm1.ComboBox1Enter(Sender: TObject); begin   ComboBo...
    • ccang111
      2002.01.23 19:47
      포커스가 콤보박스에 도달하는순간 combobox.DroppedDown := True; 요거 써주면 안돼나여? 질문하신...
    • 김성태
      2002.01.31 22:48
      김성태입니다. 아래의 문구중 Database Password=xxx잖아요. Password=xxx로 바꿔보세요.. 근데 ...
    • 선해석
    • 2002.01.23 02:24
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 델파이탐크루즈
      2002.01.23 03:21
      보통 Port 번호는 21 번으로 Defult로 셋팅이 되어있을것입니다. 보통 NT 서버에서 FTP서비스를 보시면 ...
    • 선해석
      2002.01.23 03:43
      먼저 답변에 감사를 드립니다. 제가 더 분석해 본결과, 서버에서 서비스하고 있는 ftp port넘버는 801...
    • 델파이탐크루즈
      2002.01.23 03:32
      이건 제가 4년전에 근태프로그램 짤때 해놨던건데여... 달력을 만들고 뿌려줍니다... 워낙 소스가 지저분...
    • 황대진
    • 2002.01.23 01:55
    • 4 COMMENTS
    • /
    • 0 LIKES
    • 조미경
      2002.01.23 09:23
      if .........  then 아래에 처리해야할줄이 한줄이면 if .........  then 도 가능...
    • 별볼일없는
      2002.01.23 02:17
      vb를 하셨다구요... vb에서는 if  then end if delphi 에서는 if then  &nb...
    • 천상천하
      2002.01.23 02:07
      :=     <- 대입 연산자 입니다. 만일 a := 5  라고 하면 변수 a ...
    • 버섯
      2002.01.23 02:04
      헉... := 대입연산 = 비교연산 if ... then ...; 한문장 if ... then 블럭 begin   ...
    • 버섯
      2002.01.23 02:07
      그거하고.. 그거하고는 별갭니다... 데스크탑의 환경설정에 따라서 dpr을 오픈했을때. 자동으로 화...
    • 양용성
      2002.01.23 04:20
      델파이가 만들어주는 xtr 파일에 상단에 <?xml version="1.0" encoding="EUC-KR"?...
    • 서철기
      2002.01.23 19:09
      답변 감사합니다. 제가 이것 저것 해 보니까. 저의 경우는 원인이 그거는 아니더군요.. 하지만 양...
    • 이경문
    • 2002.01.23 01:19
    • 3 COMMENTS
    • /
    • 0 LIKES
    • 박상윤
      2002.01.23 03:10
      혹시 이문제가 아닌지..^^ For primary sound buffers, you must use the IDirectSoundBuffer interface...
    • 이경문
      2002.01.25 12:23
      답변 감사합니다. 늦게 확인을 했네요 ^^. 델파이 프로그램이 아니구 VC에서 컴파일할 때 나던 에러였는데...
    • 박상윤
      2002.01.25 19:05
      ^^ VC경우 똑같은 이름의 lib존재하지여... 우선순위만 잘잡아주면 되던데... 암튼 다행이네여...
    • 버섯
    • 2002.01.23 00:42
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 이상협
      2002.01.23 18:22
      꼭 그렇게 메모리 어드래스를 읽어야 하나요 그렇지 않다면 i/o card 를 구입한 곳에서 드라이버 지원해주...